You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/04/01 18:38:25 UTC

[1/2] activemq-artemis git commit: Moving XA recover methods to the OpenWireConnection

Repository: activemq-artemis
Updated Branches:
  refs/heads/refactor-openwire 47f735d38 -> ca1e352e3


Moving XA recover methods to the OpenWireConnection


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2b7acf8d
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2b7acf8d
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2b7acf8d

Branch: refs/heads/refactor-openwire
Commit: 2b7acf8db18b1c176355c9fdc1e65b2de1eda1d0
Parents: 47f735d
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Apr 1 10:55:18 2016 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Apr 1 10:55:20 2016 -0400

----------------------------------------------------------------------
 .../protocol/openwire/OpenWireConnection.java     | 18 ++++++------------
 .../core/protocol/openwire/amq/AMQSession.java    |  8 --------
 .../core/server/impl/ServerSessionImpl.java       |  8 +-------
 .../artemis/core/transaction/ResourceManager.java |  3 +++
 .../transaction/impl/ResourceManagerImpl.java     | 14 ++++++++++++++
 5 files changed, 24 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2b7acf8d/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
index ab5aec1..15e9af3 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
@@ -107,6 +107,7 @@ import org.apache.activemq.command.ShutdownInfo;
 import org.apache.activemq.command.TransactionId;
 import org.apache.activemq.command.TransactionInfo;
 import org.apache.activemq.command.WireFormatInfo;
+import org.apache.activemq.command.XATransactionId;
 import org.apache.activemq.openwire.OpenWireFormat;
 import org.apache.activemq.state.CommandVisitor;
 import org.apache.activemq.state.ConnectionState;
@@ -1315,20 +1316,13 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
 
       @Override
       public Response processRecoverTransactions(TransactionInfo info) throws Exception {
-         Set<SessionId> sIds = state.getSessionIds();
-
-
+         List<Xid> xids = server.getResourceManager().getInDoubtTransactions();
          List<TransactionId> recovered = new ArrayList<>();
-         if (sIds != null) {
-            for (SessionId sid : sIds) {
-               AMQSession s = sessions.get(sid);
-               if (s != null) {
-                  s.recover(recovered);
-               }
-            }
+         for (Xid xid : xids) {
+            XATransactionId amqXid = new XATransactionId(xid);
+            recovered.add(amqXid);
          }
-
-         return new DataArrayResponse(recovered.toArray(new TransactionId[0]));
+         return new DataArrayResponse(recovered.toArray(new TransactionId[recovered.size()]));
       }
 
       @Override

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2b7acf8d/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
index b71f480..1393e9b 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
@@ -375,14 +375,6 @@ public class AMQSession implements SessionCallback {
       return this.connection.getMarshaller();
    }
 
-   public void recover(List<TransactionId> recovered) {
-      List<Xid> xids = this.coreSession.xaGetInDoubtXids();
-      for (Xid xid : xids) {
-         XATransactionId amqXid = new XATransactionId(xid);
-         recovered.add(amqXid);
-      }
-   }
-
    public ConnectionInfo getConnectionInfo() {
       return this.connInfo;
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2b7acf8d/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
----------------------------------------------------------------------
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 f3dd306..31102aa 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
@@ -1099,13 +1099,7 @@ public class ServerSessionImpl implements ServerSession, FailureListener {
 
    @Override
    public List<Xid> xaGetInDoubtXids() {
-      List<Xid> xids = new ArrayList<>();
-
-      xids.addAll(resourceManager.getPreparedTransactions());
-      xids.addAll(resourceManager.getHeuristicCommittedTransactions());
-      xids.addAll(resourceManager.getHeuristicRolledbackTransactions());
-
-      return xids;
+      return resourceManager.getInDoubtTransactions();
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2b7acf8d/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/ResourceManager.java
----------------------------------------------------------------------
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 c417a4a..5f4b240 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
@@ -45,4 +45,7 @@ public interface ResourceManager extends ActiveMQComponent {
 
    List<Xid> getHeuristicRolledbackTransactions();
 
+   List<Xid> getInDoubtTransactions();
+
+
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2b7acf8d/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/ResourceManagerImpl.java
----------------------------------------------------------------------
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 0db783f..d5c6491 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
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -161,6 +162,19 @@ public class ResourceManagerImpl implements ResourceManager {
       return -1;
    }
 
+   @Override
+   public List<Xid> getInDoubtTransactions()
+   {
+      List<Xid> xids = new LinkedList<>();
+
+      xids.addAll(getPreparedTransactions());
+      xids.addAll(getHeuristicCommittedTransactions());
+      xids.addAll(getHeuristicRolledbackTransactions());
+
+      return xids;
+   }
+
+
    private List<Xid> getHeuristicCompletedTransactions(final boolean isCommit) {
       List<Xid> xids = new ArrayList<>();
       for (HeuristicCompletionHolder holder : heuristicCompletions) {


[2/2] activemq-artemis git commit: avoiding FailoverTransactionTest hanging in case of failure

Posted by cl...@apache.org.
avoiding FailoverTransactionTest hanging in case of failure


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/ca1e352e
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/ca1e352e
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/ca1e352e

Branch: refs/heads/refactor-openwire
Commit: ca1e352e3f5e6bc9a30684a6be35cd38f664e646
Parents: 2b7acf8
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Apr 1 12:38:03 2016 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Apr 1 12:38:05 2016 -0400

----------------------------------------------------------------------
 .../transport/failover/FailoverTransactionTest.java     | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/ca1e352e/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTransactionTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTransactionTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTransactionTest.java
index 45f8b30..14f9321 100644
--- a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTransactionTest.java
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTransactionTest.java
@@ -635,7 +635,11 @@ public class FailoverTransactionTest extends OpenwireArtemisBaseTest {
 
          // will be stopped by the plugin
          brokerStopLatch.await(60, TimeUnit.SECONDS);
-         t.join();
+         t.join(30000);
+         if (t.isAlive()) {
+            t.interrupt();
+            Assert.fail("Thread " + t.getName() + " is still alive");
+         }
          broker = createBroker();
          broker.start();
          doByteman.set(false);
@@ -1058,8 +1062,10 @@ public class FailoverTransactionTest extends OpenwireArtemisBaseTest {
             new Thread() {
                public void run() {
                   try {
-                     broker.stop();
-                     broker = null;
+                     if (broker != null) {
+                        broker.stop();
+                        broker = null;
+                     }
                      LOG.info("broker stopped.");
                   }
                   catch (Exception e) {