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/05/25 13:33:30 UTC

[1/2] activemq-artemis git commit: ARTEMIS-538 - [Artemis Testsuite] JMSFailoverListenerTest#testManualFailover fails

Repository: activemq-artemis
Updated Branches:
  refs/heads/master b5d252af2 -> 4a11a631b


ARTEMIS-538 - [Artemis Testsuite] JMSFailoverListenerTest#testManualFailover fails

ActiveMQConnection implements FailoverEventListener which executes client's
FailoverEventListeners in separated threads in background. The old implementation
does not guarantee ordering of their executions. The commit improves the
implementation to guarantee it.


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

Branch: refs/heads/master
Commit: fb9d09744df07a4b7a7681e6cabe38af1f675190
Parents: b5d252a
Author: Erich Duda <ed...@redhat.com>
Authored: Wed May 25 10:28:38 2016 +0200
Committer: Erich Duda <ed...@redhat.com>
Committed: Wed May 25 13:24:08 2016 +0200

----------------------------------------------------------------------
 .../activemq/artemis/jms/client/ActiveMQConnection.java  | 11 +++++++++--
 .../integration/jms/cluster/JMSFailoverListenerTest.java |  3 +--
 2 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fb9d0974/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
index e8122d0..80597e3 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
@@ -35,6 +35,8 @@ import javax.jms.TopicSession;
 import java.lang.ref.WeakReference;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import org.apache.activemq.artemis.api.core.ActiveMQException;
 import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
@@ -48,6 +50,7 @@ import org.apache.activemq.artemis.api.jms.ActiveMQJMSConstants;
 import org.apache.activemq.artemis.core.client.impl.ClientSessionInternal;
 import org.apache.activemq.artemis.core.version.Version;
 import org.apache.activemq.artemis.reader.MessageUtil;
+import org.apache.activemq.artemis.utils.ActiveMQThreadFactory;
 import org.apache.activemq.artemis.utils.ConcurrentHashSet;
 import org.apache.activemq.artemis.utils.UUIDGenerator;
 import org.apache.activemq.artemis.utils.VersionLoader;
@@ -113,6 +116,8 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
 
    private final FailoverEventListener failoverListener = new FailoverEventListenerImpl(this);
 
+   private final ExecutorService failoverListenerExecutor = Executors.newFixedThreadPool(1, ActiveMQThreadFactory.defaultThreadFactory());
+
    private final Version thisVersion;
 
    private final int dupsOKBatchSize;
@@ -353,6 +358,8 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
             }
          }
 
+         failoverListenerExecutor.shutdown();
+
          closed = true;
       }
       catch (ActiveMQException e) {
@@ -759,12 +766,12 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
 
                if (failoverListener != null) {
 
-                  new Thread(new Runnable() {
+                  conn.failoverListenerExecutor.execute(new Runnable() {
                      @Override
                      public void run() {
                         failoverListener.failoverEvent(eventType);
                      }
-                  }).start();
+                  });
                }
             }
             catch (JMSException e) {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/fb9d0974/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/cluster/JMSFailoverListenerTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/cluster/JMSFailoverListenerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/cluster/JMSFailoverListenerTest.java
index ed5dcae..5cb23b3 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/cluster/JMSFailoverListenerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/cluster/JMSFailoverListenerTest.java
@@ -56,7 +56,6 @@ import javax.jms.Queue;
 import javax.jms.Session;
 import javax.jms.TextMessage;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -312,7 +311,7 @@ public class JMSFailoverListenerTest extends ActiveMQTestBase {
 
    private static class MyFailoverListener implements FailoverEventListener {
 
-      private List<FailoverEventType> eventTypeList = Collections.synchronizedList(new ArrayList<FailoverEventType>());
+      private List<FailoverEventType> eventTypeList = new ArrayList<>();
 
       public FailoverEventType get(int element) {
          waitForElements(element + 1);


[2/2] activemq-artemis git commit: This closes #538

Posted by cl...@apache.org.
This closes #538


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

Branch: refs/heads/master
Commit: 4a11a631bc6b0cc6fb9c23ef1798d4f402b09b93
Parents: b5d252a fb9d097
Author: Clebert Suconic <cl...@apache.org>
Authored: Wed May 25 09:33:14 2016 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Wed May 25 09:33:14 2016 -0400

----------------------------------------------------------------------
 .../activemq/artemis/jms/client/ActiveMQConnection.java  | 11 +++++++++--
 .../integration/jms/cluster/JMSFailoverListenerTest.java |  3 +--
 2 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------