You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ma...@apache.org on 2022/11/14 15:03:52 UTC

[activemq] branch main updated: [AMQ-9163] Add 'Started' attribute to ConnectorView (#932)

This is an automated email from the ASF dual-hosted git repository.

mattrpav pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git


The following commit(s) were added to refs/heads/main by this push:
     new c25975389 [AMQ-9163] Add 'Started' attribute to ConnectorView (#932)
c25975389 is described below

commit c25975389f031a787414b404c848a4757f7180e5
Author: Matt Pavlovich <ma...@hyte.io>
AuthorDate: Mon Nov 14 09:03:44 2022 -0600

    [AMQ-9163] Add 'Started' attribute to ConnectorView (#932)
---
 .../java/org/apache/activemq/broker/Connector.java     |  5 +++++
 .../org/apache/activemq/broker/TransportConnector.java |  9 +++++++++
 .../org/apache/activemq/broker/jmx/ConnectorView.java  |  5 +++++
 .../apache/activemq/broker/jmx/ConnectorViewMBean.java |  6 ++++++
 .../broker/jmx/TransportConnectorMBeanTest.java        | 18 ++++++++++++++++++
 5 files changed, 43 insertions(+)

diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java b/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java
index c31e7692b..99d802668 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java
@@ -79,4 +79,9 @@ public interface Connector extends Service {
     String getUpdateClusterFilter();
 
     long getMaxConnectionExceededCount();
+
+    /**
+     * @return true if connector is started
+     */
+    public boolean isStarted();
 }
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java
index 0498795c6..78ab04cc7 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java
@@ -24,6 +24,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.StringTokenizer;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.regex.Pattern;
 
 import javax.management.ObjectName;
@@ -81,6 +82,7 @@ public class TransportConnector implements Connector, BrokerServiceAware {
     private boolean displayStackTrace = false;
 
     LinkedList<String> peerBrokers = new LinkedList<String>();
+    private AtomicBoolean started = new AtomicBoolean(false);
 
     public TransportConnector() {
     }
@@ -273,6 +275,7 @@ public class TransportConnector implements Connector, BrokerServiceAware {
             this.statusDector.start();
         }
 
+        started.set(true);
         LOG.info("Connector {} started", getName());
     }
 
@@ -317,6 +320,7 @@ public class TransportConnector implements Connector, BrokerServiceAware {
             ss.stop(connection);
         }
         server = null;
+        started.set(false);
         ss.throwFirstException();
         LOG.info("Connector {} stopped", getName());
     }
@@ -687,4 +691,9 @@ public class TransportConnector implements Connector, BrokerServiceAware {
     public long getMaxConnectionExceededCount() {
         return (server != null ? server.getMaxConnectionExceededCount() : 0l);
     }
+
+    @Override
+    public boolean isStarted() {
+        return started.get();
+    }
 }
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java
index d9960e9fd..3c7fbc91b 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java
@@ -141,4 +141,9 @@ public class ConnectorView implements ConnectorViewMBean {
     public long getMaxConnectionExceededCount() {
         return this.connector.getMaxConnectionExceededCount();
     }
+
+    @Override
+    public boolean isStarted() {
+        return this.connector.isStarted();
+    }
 }
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java
index 97ff8f572..547798574 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java
@@ -89,4 +89,10 @@ public interface ConnectorViewMBean extends Service {
      */
     @MBeanInfo("Max connection exceeded count")
     long getMaxConnectionExceededCount();
+
+    /**
+     * @return true if transport connector is started
+     */
+    @MBeanInfo("Connector started")
+    boolean isStarted();
 }
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/TransportConnectorMBeanTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/TransportConnectorMBeanTest.java
index 6f55e3de3..d795823a8 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/TransportConnectorMBeanTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/TransportConnectorMBeanTest.java
@@ -18,10 +18,16 @@ package org.apache.activemq.broker.jmx;
 
 import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 
+import java.lang.management.ManagementFactory;
 import java.net.Socket;
 import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
+import javax.management.JMX;
 import javax.management.ObjectName;
 
 import org.apache.activemq.ActiveMQConnection;
@@ -60,6 +66,18 @@ public class TransportConnectorMBeanTest {
         doVerifyClientIdNetwork(true);
     }
 
+    @Test
+    public void testStartStop() throws Exception {
+        createBroker(true);
+        final ConnectorViewMBean connectorViewMBean = JMX.newMBeanProxy(ManagementFactory.getPlatformMBeanServer(), BrokerMBeanSupport.createConnectorName(BrokerMBeanSupport.createBrokerObjectName("org.apache.activemq", "localhost").toString(), "clientConnectors", broker.getTransportConnectorByScheme("tcp").getPublishableConnectString()), ConnectorViewMBean.class);
+        assertNotNull(connectorViewMBean);
+        assertTrue(connectorViewMBean.isStarted());
+        connectorViewMBean.stop();
+        assertFalse(connectorViewMBean.isStarted());
+        connectorViewMBean.start();
+        assertTrue(connectorViewMBean.isStarted());
+    }
+
     private void doVerifyClientIdNetwork(boolean duplex) throws Exception {
         createBroker(true);