This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push:
new d2791b5368 ARTEMIS-5207 expose persisted status of queue's paused
attribute
d2791b5368 is described below
commit d2791b5368a67c1d6cebb5f52d3c9affc333f86c
Author: Justin Bertram <[email protected]>
AuthorDate: Mon Mar 17 14:55:23 2025 -0500
ARTEMIS-5207 expose persisted status of queue's paused attribute
---
.../apache/activemq/artemis/logs/AuditLogger.java | 5 ++
.../artemis/api/core/management/QueueControl.java | 8 ++-
.../core/management/impl/QueueControlImpl.java | 17 ++++++-
.../core/management/impl/view/QueueField.java | 1 +
.../core/management/impl/view/QueueView.java | 6 ++-
.../integration/management/QueueControlTest.java | 58 ++++++++++++++++------
.../management/QueueControlUsingCoreTest.java | 9 +++-
7 files changed, 82 insertions(+), 22 deletions(-)
diff --git
a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
index dbb34f7349..65f56d9d1f 100644
---
a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
+++
b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
@@ -2874,5 +2874,10 @@ public interface AuditLogger {
@LogMessage(id = 601799, value = "User {} is getting PendingMirrorAcks on
target resource: {}", level = LogMessage.Level.INFO)
void getPendingMirrorAcks(String user, Object source);
+ static void isPersistedPause(Object source) {
+ BASE_LOGGER.isPaused(getCaller(), source);
+ }
+ @LogMessage(id = 601800, value = "User {} is getting persisted pause
property on target resource: {}", level = LogMessage.Level.INFO)
+ void isPersistedPause(String user, Object source);
}
diff --git
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
index c3cc843a8f..3aa4850058 100644
---
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
+++
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
@@ -643,7 +643,13 @@ public interface QueueControl {
* {@return whether the queue is paused}
*/
@Attribute(desc = "whether the queue is paused")
- boolean isPaused() throws Exception;
+ boolean isPaused();
+
+ /**
+ * {@return whether the queue's paused status is persisted}
+ */
+ @Attribute(desc = "whether the queue's paused status is persisted")
+ boolean isPersistedPause();
@Operation(desc = "Browse Messages", impact = MBeanOperationInfo.ACTION)
CompositeData[] browse() throws Exception;
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
index a0f8fed8ab..e5d42f01f3 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
@@ -1708,7 +1708,7 @@ public class QueueControlImpl extends AbstractControl
implements QueueControl {
}
@Override
- public boolean isPaused() throws Exception {
+ public boolean isPaused() {
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.isPaused(queue);
}
@@ -1722,6 +1722,21 @@ public class QueueControlImpl extends AbstractControl
implements QueueControl {
}
}
+ @Override
+ public boolean isPersistedPause() {
+ if (AuditLogger.isBaseLoggingEnabled()) {
+ AuditLogger.isPersistedPause(queue);
+ }
+ checkStarted();
+
+ clearIO();
+ try {
+ return queue.isPersistedPause();
+ } finally {
+ blockOnIO();
+ }
+ }
+
@Override
public CompositeData[] browse(int page, int pageSize) throws Exception {
return browse(page, pageSize, null);
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
index d48533ff9f..78ffdb3bb8 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueField.java
@@ -37,6 +37,7 @@ public enum QueueField {
AUTO_CREATED("autoCreated"),
DURABLE("durable"),
PAUSED("paused"),
+ PERSISTEDPAUSE("persistedPause"),
TEMPORARY("temporary"),
PURGE_ON_NO_CONSUMERS("purgeOnNoConsumers"),
MESSAGES_KILLED("messagesKilled"),
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
index 2d1e21bf3c..80e20014f5 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
@@ -50,7 +50,8 @@ public class QueueView extends
ActiveMQAbstractView<QueueControl> {
.add(QueueField.ADDRESS.getName(), toString(queue.getAddress()))
.add(QueueField.FILTER.getName(), toString(queue.getFilter()))
.add(QueueField.DURABLE.getName(), toString(queue.isDurable()))
- .add(QueueField.PAUSED.getName(), toString(q.isPaused()))
+ .add(QueueField.PAUSED.getName(), toString(queue.isPaused()))
+ .add(QueueField.PERSISTEDPAUSE.getName(),
toString(queue.isPersistedPause()))
.add(QueueField.TEMPORARY.getName(), toString(queue.isTemporary()))
.add(QueueField.PURGE_ON_NO_CONSUMERS.getName(),
toString(queue.isPurgeOnNoConsumers()))
.add(QueueField.CONSUMER_COUNT.getName(),
toString(queue.getConsumerCount()))
@@ -94,7 +95,8 @@ public class QueueView extends
ActiveMQAbstractView<QueueControl> {
case ADDRESS -> queue.getAddress();
case FILTER -> queue.getFilter();
case DURABLE -> queue.isDurable();
- case PAUSED -> q.isPaused();
+ case PAUSED -> queue.isPaused();
+ case PERSISTEDPAUSE -> queue.isPersistedPause();
case TEMPORARY -> queue.isTemporary();
case PURGE_ON_NO_CONSUMERS -> queue.isPurgeOnNoConsumers();
case CONSUMER_COUNT -> queue.getConsumerCount();
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
index b3122b9369..149fd6e27c 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
@@ -4206,26 +4206,52 @@ public class QueueControlTest extends
ManagementTestBase {
}
@TestTemplate
- public void testPauseAndResume() {
+ public void testPauseAndResume() throws Exception {
long counterPeriod = 1000;
SimpleString address = RandomUtil.randomUUIDSimpleString();
SimpleString queue = RandomUtil.randomUUIDSimpleString();
- try {
-
session.createQueue(QueueConfiguration.of(queue).setAddress(address).setDurable(durable));
- QueueControl queueControl = createManagementControl(address, queue);
-
- ActiveMQServerControl serverControl =
ManagementControlHelper.createActiveMQServerControl(mbeanServer);
- serverControl.enableMessageCounters();
- serverControl.setMessageCounterSamplePeriod(counterPeriod);
- assertFalse(queueControl.isPaused());
- queueControl.pause();
- assertTrue(queueControl.isPaused());
- queueControl.resume();
- assertFalse(queueControl.isPaused());
- } catch (Exception e) {
- e.printStackTrace();
- }
+
session.createQueue(QueueConfiguration.of(queue).setAddress(address).setDurable(durable));
+ QueueControl queueControl = createManagementControl(address, queue);
+
+ ActiveMQServerControl serverControl =
ManagementControlHelper.createActiveMQServerControl(mbeanServer);
+ serverControl.enableMessageCounters();
+ serverControl.setMessageCounterSamplePeriod(counterPeriod);
+ assertFalse(queueControl.isPaused());
+ assertFalse(queueControl.isPersistedPause());
+ queueControl.pause();
+ assertTrue(queueControl.isPaused());
+ assertFalse(queueControl.isPersistedPause());
+ queueControl.resume();
+ assertFalse(queueControl.isPaused());
+ assertFalse(queueControl.isPersistedPause());
+ }
+
+ @TestTemplate
+ public void testPersistedPauseAndResume() throws Exception {
+ assumeTrue(durable);
+ long counterPeriod = 1000;
+ SimpleString address = RandomUtil.randomUUIDSimpleString();
+ SimpleString queue = RandomUtil.randomUUIDSimpleString();
+
+
session.createQueue(QueueConfiguration.of(queue).setAddress(address).setDurable(durable));
+ QueueControl queueControl = createManagementControl(address, queue);
+
+ ActiveMQServerControl serverControl =
ManagementControlHelper.createActiveMQServerControl(mbeanServer);
+ serverControl.enableMessageCounters();
+ serverControl.setMessageCounterSamplePeriod(counterPeriod);
+ assertFalse(queueControl.isPaused());
+ queueControl.pause(true);
+ assertTrue(queueControl.isPaused());
+ assertTrue(queueControl.isPersistedPause());
+ server.stop();
+ server.start();
+ queueControl = createManagementControl(address, queue);
+ assertTrue(queueControl.isPaused());
+ assertTrue(queueControl.isPersistedPause());
+ queueControl.resume();
+ assertFalse(queueControl.isPaused());
+ assertFalse(queueControl.isPersistedPause());
}
@TestTemplate
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
index e3947fad2c..5cea1efd54 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlUsingCoreTest.java
@@ -605,8 +605,13 @@ public class QueueControlUsingCoreTest extends
QueueControlTest {
}
@Override
- public boolean isPaused() throws Exception {
- return (Boolean) proxy.invokeOperation("isPaused");
+ public boolean isPaused() {
+ return (Boolean) proxy.retrieveAttributeValue("paused");
+ }
+
+ @Override
+ public boolean isPersistedPause() {
+ return (Boolean) proxy.retrieveAttributeValue("persistedPause");
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact