This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new 506c03a ARTEMIS-2559 Clear Transaction out of ResourceManager in case
of failure
new c2c0890 This closes #2900
506c03a is described below
commit 506c03a884bf7e5560f58b3f125e3d9976dcadfb
Author: Clebert Suconic <[email protected]>
AuthorDate: Fri Nov 22 10:30:29 2019 -0500
ARTEMIS-2559 Clear Transaction out of ResourceManager in case of failure
---
.../apache/activemq/artemis/core/server/impl/ServerSessionImpl.java | 6 ++++++
.../apache/activemq/artemis/core/transaction/ResourceManager.java | 2 ++
.../activemq/artemis/core/transaction/impl/ResourceManagerImpl.java | 5 +++++
.../activemq/artemis/tests/integration/xa/SessionFailureXATest.java | 2 ++
4 files changed, 15 insertions(+)
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
index 7b385ce..34393c7 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
@@ -392,12 +392,18 @@ public class ServerSessionImpl implements ServerSession,
FailureListener {
Transaction txToRollback = tx;
if (txToRollback != null) {
+ if (txToRollback.getXid() != null) {
+ resourceManager.removeTransaction(txToRollback.getXid());
+ }
txToRollback.rollbackIfPossible();
}
txToRollback = pendingTX;
if (txToRollback != null) {
+ if (txToRollback.getXid() != null) {
+ resourceManager.removeTransaction(txToRollback.getXid());
+ }
txToRollback.rollbackIfPossible();
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/ResourceManager.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/ResourceManager.java
index 20bdb5b..630092b 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/ResourceManager.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/ResourceManager.java
@@ -46,4 +46,6 @@ public interface ResourceManager extends ActiveMQComponent {
List<Xid> getInDoubtTransactions();
+ int size();
+
}
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/ResourceManagerImpl.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/ResourceManagerImpl.java
index 068cd4e..cb49584 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/ResourceManagerImpl.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/ResourceManagerImpl.java
@@ -62,6 +62,11 @@ public class ResourceManagerImpl implements ResourceManager {
// ActiveMQComponent implementation
@Override
+ public int size() {
+ return transactions.size();
+ }
+
+ @Override
public void start() throws Exception {
if (started) {
return;
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/SessionFailureXATest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/SessionFailureXATest.java
index 73ecc47..300d8ab 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/SessionFailureXATest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/SessionFailureXATest.java
@@ -167,6 +167,8 @@ public class SessionFailureXATest extends ActiveMQTestBase {
Wait.assertEquals(0, () -> messagingService.getSessions().size());
+ Wait.assertEquals(0, messagingService.getResourceManager()::size);
+
locator = createInVMNonHALocator();
sessionFactory = createSessionFactory(locator);
clientSession = addClientSession(sessionFactory.createSession(true,
false, false));