This is an automated email from the ASF dual-hosted git repository.
jbertram 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 43166e24ea ARTEMIS-4557 expose producer window size in
clusterconnection JMX
43166e24ea is described below
commit 43166e24eaa5c7d1686298c6087c3a0553de65ec
Author: Andy Taylor <[email protected]>
AuthorDate: Mon Jan 8 12:48:38 2024 +0000
ARTEMIS-4557 expose producer window size in clusterconnection JMX
https://issues.apache.org/jira/browse/ARTEMIS-4557
---
.../api/core/management/ClusterConnectionControl.java | 3 +++
.../core/management/impl/ClusterConnectionControlImpl.java | 13 +++++++++++++
.../artemis/core/server/cluster/ClusterConnection.java | 2 ++
.../core/server/cluster/impl/ClusterConnectionImpl.java | 5 +++++
.../management/ClusterConnectionControlTest.java | 6 ++++--
.../management/ClusterConnectionControlUsingCoreTest.java | 4 ++++
6 files changed, 31 insertions(+), 2 deletions(-)
diff --git
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
index 39f0825759..2512fb34d6 100644
---
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
+++
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
@@ -144,4 +144,7 @@ public interface ClusterConnectionControl extends
ActiveMQComponentControl {
@Attribute(desc = "The metrics for the bridge by nodeId. The
messagesPendingAcknowledgement counter is incremented when the bridge is has
forwarded a message but is waiting acknowledgement from the other broker. The
messagesAcknowledged counter is the number of messages actually received by the
remote broker for this bridge.")
Map<String, Object> getBridgeMetrics(String nodeId) throws Exception;
+ @Attribute(desc = "The Producer Window Size used by the Cluster Connection")
+ long getProducerWindowSize();
+
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
index 3994390fe3..fed58b6d65 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
@@ -321,5 +321,18 @@ public class ClusterConnectionControlImpl extends
AbstractControl implements Clu
}
+ @Override
+ public long getProducerWindowSize() {
+ if (AuditLogger.isBaseLoggingEnabled()) {
+ AuditLogger.getTopology(this.clusterConnection);
+ }
+ clearIO();
+ try {
+ return clusterConnection.getProducerWindowSize();
+ } finally {
+ blockOnIO();
+ }
+ }
+
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
index 6555382601..9212bbabb9 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
@@ -89,6 +89,8 @@ public interface ClusterConnection extends ActiveMQComponent,
ClusterTopologyLis
long getCallTimeout();
+ long getProducerWindowSize();
+
Bridge[] getBridges();
/**
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
index 65d3496615..65af2e502b 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
@@ -630,6 +630,11 @@ public final class ClusterConnectionImpl implements
ClusterConnection, AfterConn
return callTimeout;
}
+ @Override
+ public long getProducerWindowSize() {
+ return producerWindowSize;
+ }
+
@Override
public Bridge[] getBridges() {
synchronized (recordsGuard) {
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlTest.java
index 56dc99dbc4..5015e1d5eb 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlTest.java
@@ -76,6 +76,7 @@ public class ClusterConnectionControlTest extends
ManagementTestBase {
Assert.assertEquals(clusterConnectionConfig1.isDuplicateDetection(),
clusterConnectionControl.isDuplicateDetection());
Assert.assertEquals(clusterConnectionConfig1.getMessageLoadBalancingType().toString(),
clusterConnectionControl.getMessageLoadBalancingType());
Assert.assertEquals(clusterConnectionConfig1.getMaxHops(),
clusterConnectionControl.getMaxHops());
+ Assert.assertEquals(clusterConnectionConfig1.getProducerWindowSize(),
clusterConnectionControl.getProducerWindowSize());
Assert.assertEquals(0L,
clusterConnectionControl.getMessagesPendingAcknowledgement());
Assert.assertEquals(0L,
clusterConnectionControl.getMessagesAcknowledged());
Map<String, Object> clusterMetrics =
clusterConnectionControl.getMetrics();
@@ -112,6 +113,7 @@ public class ClusterConnectionControlTest extends
ManagementTestBase {
Assert.assertEquals(clusterConnectionConfig2.isDuplicateDetection(),
clusterConnectionControl.isDuplicateDetection());
Assert.assertEquals(clusterConnectionConfig2.getMessageLoadBalancingType().toString(),
clusterConnectionControl.getMessageLoadBalancingType());
Assert.assertEquals(clusterConnectionConfig2.getMaxHops(),
clusterConnectionControl.getMaxHops());
+ Assert.assertEquals(clusterConnectionConfig2.getProducerWindowSize(),
clusterConnectionControl.getProducerWindowSize());
Object[] connectorPairs = clusterConnectionControl.getStaticConnectors();
Assert.assertEquals(0, connectorPairs.length);
@@ -199,9 +201,9 @@ public class ClusterConnectionControlTest extends
ManagementTestBase {
Configuration conf_1 =
createBasicConfig().addAcceptorConfiguration(acceptorConfig).addQueueConfiguration(queueConfig);
- clusterConnectionConfig1 = new
ClusterConnectionConfiguration().setName(RandomUtil.randomString()).setAddress(queueConfig.getAddress().toString()).setConnectorName(connectorConfig.getName()).setRetryInterval(RandomUtil.randomPositiveLong()).setDuplicateDetection(RandomUtil.randomBoolean()).setMessageLoadBalancingType(MessageLoadBalancingType.STRICT).setMaxHops(RandomUtil.randomPositiveInt()).setConfirmationWindowSize(RandomUtil.randomPositiveInt()).setMessageLoadBalancingType(Messa
[...]
+ clusterConnectionConfig1 = new
ClusterConnectionConfiguration().setName(RandomUtil.randomString()).setAddress(queueConfig.getAddress().toString()).setConnectorName(connectorConfig.getName()).setRetryInterval(RandomUtil.randomPositiveLong()).setDuplicateDetection(RandomUtil.randomBoolean()).setMessageLoadBalancingType(MessageLoadBalancingType.STRICT).setMaxHops(RandomUtil.randomPositiveInt()).setConfirmationWindowSize(RandomUtil.randomPositiveInt()).setMessageLoadBalancingType(Messa
[...]
- clusterConnectionConfig2 = new
ClusterConnectionConfiguration().setName(RandomUtil.randomString()).setAddress(queueConfig.getAddress().toString()).setConnectorName(connectorConfig.getName()).setRetryInterval(RandomUtil.randomPositiveLong()).setDuplicateDetection(RandomUtil.randomBoolean()).setMessageLoadBalancingType(MessageLoadBalancingType.OFF).setMaxHops(RandomUtil.randomPositiveInt()).setConfirmationWindowSize(RandomUtil.randomPositiveInt()).setMessageLoadBalancingType(MessageL
[...]
+ clusterConnectionConfig2 = new
ClusterConnectionConfiguration().setName(RandomUtil.randomString()).setAddress(queueConfig.getAddress().toString()).setConnectorName(connectorConfig.getName()).setRetryInterval(RandomUtil.randomPositiveLong()).setDuplicateDetection(RandomUtil.randomBoolean()).setMessageLoadBalancingType(MessageLoadBalancingType.OFF).setMaxHops(RandomUtil.randomPositiveInt()).setConfirmationWindowSize(RandomUtil.randomPositiveInt()).setMessageLoadBalancingType(MessageL
[...]
Configuration conf_0 = createBasicConfig().addAcceptorConfiguration(new
TransportConfiguration(InVMAcceptorFactory.class.getName())).addConnectorConfiguration(connectorConfig.getName(),
connectorConfig).addClusterConfiguration(clusterConnectionConfig1).addClusterConfiguration(clusterConnectionConfig2).addDiscoveryGroupConfiguration(discoveryGroupName,
discoveryGroupConfig);
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlUsingCoreTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlUsingCoreTest.java
index 44e2d7d642..4cd84405cf 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlUsingCoreTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ClusterConnectionControlUsingCoreTest.java
@@ -127,6 +127,10 @@ public class ClusterConnectionControlUsingCoreTest extends
ClusterConnectionCont
proxy.invokeOperation("stop");
}
+ @Override
+ public long getProducerWindowSize() {
+ return (Long) proxy.retrieveAttributeValue("producerWindowSize",
Long.class);
+ }
};
}