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

jbonofre pushed a commit to branch activemq-5.17.x
in repository https://gitbox.apache.org/repos/asf/activemq.git


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

commit d830dc2954c62e9277a9970746740e98c51c72ab
Author: Matt Pavlovich <[email protected]>
AuthorDate: Mon Nov 14 09:03:44 2022 -0600

    [AMQ-9163] Add 'Started' attribute to ConnectorView (#932)
    
    (cherry picked from commit c25975389f031a787414b404c848a4757f7180e5)
---
 .../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, 42 insertions(+), 1 deletion(-)

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 acb7e69f0..cc87dcf20 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
@@ -72,4 +72,9 @@ public interface Connector extends Service {
      * broker names for cluster client updates
      */
     String getUpdateClusterFilter();
+
+    /**
+     * @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 1b9c41fa4..07302a0fc 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() {
     }
@@ -264,6 +266,7 @@ public class TransportConnector implements Connector, 
BrokerServiceAware {
             this.statusDector.start();
         }
 
+        started.set(true);
         LOG.info("Connector {} started", getName());
     }
 
@@ -308,6 +311,7 @@ public class TransportConnector implements Connector, 
BrokerServiceAware {
             ss.stop(connection);
         }
         server = null;
+        started.set(false);
         ss.throwFirstException();
         LOG.info("Connector {} stopped", getName());
     }
@@ -673,4 +677,9 @@ public class TransportConnector implements Connector, 
BrokerServiceAware {
     public void setDisplayStackTrace(boolean displayStackTrace) {
         this.displayStackTrace = displayStackTrace;
     }
+
+    @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 907829d8f..106629a0d 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
@@ -136,4 +136,9 @@ public class ConnectorView implements ConnectorViewMBean {
     public boolean isAllowLinkStealingEnabled() {
         return this.connector.isAllowLinkStealing();
     }
+
+    @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 647d34a99..6cb979cb7 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
@@ -83,5 +83,9 @@ public interface ConnectorViewMBean extends Service {
     @MBeanInfo("Comma separated list of regex patterns to match broker names 
for cluster client updates.")
     String getUpdateClusterFilter();
 
-
+    /**
+     * @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);
 

Reply via email to