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 578d86d72 [AMQ-9315] Add connectedTimestamp to Connection and JMX view
578d86d72 is described below
commit 578d86d726d80715825e5f927ef8af50e181d754
Author: Matt Pavlovich <[email protected]>
AuthorDate: Mon Oct 2 10:18:26 2023 -0500
[AMQ-9315] Add connectedTimestamp to Connection and JMX view
---
.../src/main/java/org/apache/activemq/broker/Connection.java | 7 ++++++-
.../java/org/apache/activemq/broker/TransportConnection.java | 7 +++++++
.../main/java/org/apache/activemq/broker/jmx/ConnectionView.java | 5 +++++
.../java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java | 6 ++++++
.../org/apache/activemq/broker/scheduler/SchedulerBroker.java | 9 +++++++++
.../activemq/shiro/authc/DefaultAuthenticationPolicyTest.java | 9 +++++++++
.../broker/region/QueueOptimizedDispatchExceptionTest.java | 7 +++++++
7 files changed, 49 insertions(+), 1 deletion(-)
diff --git
a/activemq-broker/src/main/java/org/apache/activemq/broker/Connection.java
b/activemq-broker/src/main/java/org/apache/activemq/broker/Connection.java
index 8548a95a4..26b1a5b18 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/Connection.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/Connection.java
@@ -121,7 +121,6 @@ public interface Connection extends Service {
void updateClient(ConnectionControl control);
-
/**
* Returns the number of active transactions established on this
Connection.
*
@@ -136,4 +135,10 @@ public interface Connection extends Service {
*/
public Long getOldestActiveTransactionDuration();
+ /**
+ * Returns the time in ms since epoch when connection was established.
+ *
+ * @return time in ms since epoch when connection was established.
+ */
+ public Long getConnectedTimestamp();
}
diff --git
a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
index 545cda1c7..8b0e76751 100644
---
a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
+++
b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
@@ -161,6 +161,7 @@ public class TransportConnection implements Connection,
Task, CommandVisitor {
private TransportConnectionStateRegister connectionStateRegister = new
SingleTransportConnectionStateRegister();
private final ReentrantReadWriteLock serviceLock = new
ReentrantReadWriteLock();
private String duplexNetworkConnectorId;
+ private final long connectedTimestamp;
/**
* @param taskRunnerFactory - can be null if you want direct dispatch to
the transport
@@ -218,6 +219,7 @@ public class TransportConnection implements Connection,
Task, CommandVisitor {
}
});
connected = true;
+ connectedTimestamp = System.currentTimeMillis();
}
/**
@@ -1724,4 +1726,9 @@ public class TransportConnection implements Connection,
Task, CommandVisitor {
public Response processBrokerSubscriptionInfo(BrokerSubscriptionInfo info)
throws Exception {
return null;
}
+
+ @Override
+ public Long getConnectedTimestamp() {
+ return this.connectedTimestamp;
+ }
}
diff --git
a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionView.java
b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionView.java
index 937b4c079..48beb6ce5 100644
---
a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionView.java
+++
b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionView.java
@@ -191,4 +191,9 @@ public class ConnectionView implements ConnectionViewMBean {
public boolean isNetworkConnection() {
return connection.isNetworkConnection();
}
+
+ @Override
+ public long getConnectedTimestamp() {
+ return connection.getConnectedTimestamp();
+ }
}
diff --git
a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java
b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java
index a0e399a13..1013a8e8b 100644
---
a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java
+++
b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectionViewMBean.java
@@ -133,4 +133,10 @@ public interface ConnectionViewMBean extends Service {
*/
@MBeanInfo("Connection is a network connection.")
boolean isNetworkConnection();
+
+ /**
+ * @return the time in ms since epoch when connection was established
+ */
+ @MBeanInfo("Time in ms since epoch when connection was established.")
+ long getConnectedTimestamp();
}
diff --git
a/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java
b/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java
index 1ab1113b8..3a778c5ad 100644
---
a/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java
+++
b/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java
@@ -81,6 +81,9 @@ public class SchedulerBroker extends BrokerFilter implements
JobListener {
this.context.setSecurityContext(SecurityContext.BROKER_SECURITY_CONTEXT);
// we only get response on unexpected error
this.context.setConnection(new Connection() {
+
+ private final long connectedTimestamp = System.currentTimeMillis();
+
@Override
public Connector getConnector() {
return null;
@@ -183,6 +186,12 @@ public class SchedulerBroker extends BrokerFilter
implements JobListener {
return null;
}
+
+ @Override
+ public Long getConnectedTimestamp() {
+ return connectedTimestamp;
+ }
+
@Override
public void start() throws Exception {}
diff --git
a/activemq-shiro/src/test/java/org/apache/activemq/shiro/authc/DefaultAuthenticationPolicyTest.java
b/activemq-shiro/src/test/java/org/apache/activemq/shiro/authc/DefaultAuthenticationPolicyTest.java
index 0d390619d..a3060a935 100644
---
a/activemq-shiro/src/test/java/org/apache/activemq/shiro/authc/DefaultAuthenticationPolicyTest.java
+++
b/activemq-shiro/src/test/java/org/apache/activemq/shiro/authc/DefaultAuthenticationPolicyTest.java
@@ -218,6 +218,9 @@ public class DefaultAuthenticationPolicyTest {
ConnectionContext ctx = new ConnectionContext();
Connection connection = new Connection() {
+
+ private final long connectedTimestamp = System.currentTimeMillis();
+
@Override
public Connector getConnector() {
return null; //To change body of implemented methods use File
| Settings | File Templates.
@@ -327,6 +330,12 @@ public class DefaultAuthenticationPolicyTest {
public Long getOldestActiveTransactionDuration() {
return null; //To change body of implemented methods use File
| Settings | File Templates.
}
+
+ @Override
+ public Long getConnectedTimestamp() {
+ return connectedTimestamp;
+ }
+
};
ctx.setConnection(connection);
diff --git
a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/region/QueueOptimizedDispatchExceptionTest.java
b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/region/QueueOptimizedDispatchExceptionTest.java
index b46169e19..1e86ca629 100644
---
a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/region/QueueOptimizedDispatchExceptionTest.java
+++
b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/region/QueueOptimizedDispatchExceptionTest.java
@@ -104,6 +104,8 @@ public class QueueOptimizedDispatchExceptionTest {
final ConnectionContext contextNotInTx = new ConnectionContext();
contextNotInTx.setConnection(new Connection() {
+ private final long connectedTimestamp = System.currentTimeMillis();
+
@Override
public void stop() throws Exception {
}
@@ -207,6 +209,11 @@ public class QueueOptimizedDispatchExceptionTest {
public Long getOldestActiveTransactionDuration() {
return null;
}
+
+ @Override
+ public Long getConnectedTimestamp() {
+ return connectedTimestamp;
+ }
});
final DestinationStatistics destinationStatistics = new
DestinationStatistics();