You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2020/07/03 15:47:04 UTC
[activemq] branch master updated: AMQ-7508 - fix session reuse and
remove incremental loggers, new test
This is an automated email from the ASF dual-hosted git repository.
gtully pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq.git
The following commit(s) were added to refs/heads/master by this push:
new a436b21 AMQ-7508 - fix session reuse and remove incremental loggers, new test
a436b21 is described below
commit a436b2177ed46fe8402e43c7f48ae102bb983e9a
Author: gtully <ga...@gmail.com>
AuthorDate: Fri Jul 3 16:46:48 2020 +0100
AMQ-7508 - fix session reuse and remove incremental loggers, new test
---
.../org/apache/activemq/ra/ServerSessionImpl.java | 7 ++-
.../apache/activemq/ra/ServerSessionImplTest.java | 61 ++++++++++++++++++++++
2 files changed, 64 insertions(+), 4 deletions(-)
diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionImpl.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionImpl.java
index 37a3a48..8bd76bc 100644
--- a/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionImpl.java
+++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionImpl.java
@@ -56,8 +56,7 @@ public class ServerSessionImpl implements ServerSession, InboundContext, Work, D
}
- private int serverSessionId = getNextLogId();
- private final Logger log = LoggerFactory.getLogger(ServerSessionImpl.class.getName() + ":" + serverSessionId);
+ private final Logger log = LoggerFactory.getLogger(ServerSessionImpl.class);
private ActiveMQSession session;
private WorkManager workManager;
@@ -105,7 +104,7 @@ public class ServerSessionImpl implements ServerSession, InboundContext, Work, D
}
protected boolean isStale() {
- return stale || !session.isRunning() || !session.isClosed();
+ return stale || !session.isRunning();
}
public MessageProducer getMessageProducer() throws JMSException {
@@ -261,7 +260,7 @@ public class ServerSessionImpl implements ServerSession, InboundContext, Work, D
*/
@Override
public String toString() {
- return "ServerSessionImpl:" + serverSessionId + "{" + session +"}";
+ return "ServerSessionImpl:{" + session +"}";
}
public void close() {
diff --git a/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java b/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java
index 61467bc..0deefd6 100644
--- a/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java
+++ b/activemq-ra/src/test/java/org/apache/activemq/ra/ServerSessionImplTest.java
@@ -57,6 +57,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@RunWith(JMock.class)
@@ -433,4 +434,64 @@ public class ServerSessionImplTest {
}
}
+
+
+ @Test
+ public void testSessionReusedByPool() throws Exception {
+
+ final MessageEndpointFactory messageEndpointFactory = context.mock(MessageEndpointFactory.class);
+ final MessageResourceAdapter resourceAdapter = context.mock(MessageResourceAdapter.class);
+ final ActiveMQEndpointActivationKey key = context.mock(ActiveMQEndpointActivationKey.class);
+ messageEndpoint = context.mock(MessageEndpointProxy.class);
+ workManager = context.mock(WorkManager.class);
+ final MessageActivationSpec messageActivationSpec = context.mock(MessageActivationSpec.class);
+ final BootstrapContext bootstrapContext = context.mock(BootstrapContext.class);
+ context.checking(new Expectations() {
+ {
+ allowing(bootstrapContext).getWorkManager();
+ will(returnValue(workManager));
+ allowing(resourceAdapter).getBootstrapContext();
+ will(returnValue(bootstrapContext));
+ allowing(messageEndpointFactory).isDeliveryTransacted(with(any(Method.class)));
+ will(returnValue(Boolean.FALSE));
+ allowing(key).getMessageEndpointFactory();
+ will(returnValue(messageEndpointFactory));
+ allowing(key).getActivationSpec();
+ will(returnValue(messageActivationSpec));
+ allowing(messageActivationSpec).isUseJndi();
+ will(returnValue(Boolean.FALSE));
+ allowing(messageActivationSpec).getDestinationType();
+ will(returnValue("javax.jms.Queue"));
+ allowing(messageActivationSpec).getDestination();
+ will(returnValue("Queue"));
+ allowing(messageActivationSpec).getAcknowledgeModeForSession();
+ will(returnValue(1));
+ allowing(messageActivationSpec).getMaxSessionsIntValue();
+ will(returnValue(10));
+ allowing(messageActivationSpec).getEnableBatchBooleanValue();
+ will(returnValue(Boolean.FALSE));
+ allowing(messageActivationSpec).isUseRAManagedTransactionEnabled();
+ will(returnValue(Boolean.TRUE));
+ allowing(messageEndpointFactory).createEndpoint(with(any(XAResource.class)));
+ will(returnValue(messageEndpoint));
+
+ allowing(workManager).scheduleWork((Work) with(Matchers.instanceOf(Work.class)), with(any(long.class)), with(any(ExecutionContext.class)),
+ with(any(WorkListener.class)));
+ allowing(messageEndpoint).release();
+ }
+ });
+
+ endpointWorker = new ActiveMQEndpointWorker(resourceAdapter, key);
+ endpointWorker.setConnection(con);
+
+ pool = new ServerSessionPoolImpl(endpointWorker, 2);
+ endpointWorker.start();
+
+ // the test!
+ ServerSessionImpl first = (ServerSessionImpl) pool.getServerSession();
+ pool.returnToPool(first);
+
+ ServerSessionImpl reused = (ServerSessionImpl) pool.getServerSession();
+ assertEquals("got reuse", first, reused);
+ }
}