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);
+         }
       };
    }
 

Reply via email to