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