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 2014/10/17 00:54:35 UTC

[3/6] git commit: rework npe avoidance in vmtransport stop to resolve thread leakage test failure

rework npe avoidance in vmtransport stop to resolve thread leakage test failure


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

Branch: refs/heads/trunk
Commit: 243db1c289e8e1394adc7751a7a545af6df06fc9
Parents: 2050498
Author: gtully <ga...@gmail.com>
Authored: Mon Oct 13 22:24:02 2014 +0100
Committer: gtully <ga...@gmail.com>
Committed: Thu Oct 16 23:35:18 2014 +0100

----------------------------------------------------------------------
 .../activemq/transport/vm/VMTransport.java      | 26 +++++++++++---------
 .../transport/failover/AMQ1925Test.java         |  4 +--
 .../activemq/usecases/QueueBrowsingTest.java    |  4 ++-
 3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/243db1c2/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java b/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
index ef1b1e2..75bd6fe 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java
@@ -171,7 +171,7 @@ public class VMTransport implements Transport, Task {
     public void stop() throws Exception {
         // Only need to do this once, all future oneway calls will now
         // fail as will any asnyc jobs in the task runner.
-        if (disposed.compareAndSet(false, true) && started.get()) {
+        if (disposed.compareAndSet(false, true)) {
 
             TaskRunner tr = taskRunner;
             LinkedBlockingQueue<Object> mq = this.messageQueue;
@@ -193,18 +193,20 @@ public class VMTransport implements Transport, Task {
                 tr = null;
             }
 
-            // let the peer know that we are disconnecting after attempting
-            // to cleanly shutdown the async tasks so that this is the last
-            // command it see's.
-            try {
-                peer.transportListener.onCommand(new ShutdownInfo());
-            } catch (Exception ignore) {
-            }
+            if (peer.transportListener != null) {
+                // let the peer know that we are disconnecting after attempting
+                // to cleanly shutdown the async tasks so that this is the last
+                // command it see's.
+                try {
+                    peer.transportListener.onCommand(new ShutdownInfo());
+                } catch (Exception ignore) {
+                }
 
-            // let any requests pending a response see an exception
-            try {
-                peer.transportListener.onException(new TransportDisposedIOException("peer (" + this + ") stopped."));
-            } catch (Exception ignore) {
+                // let any requests pending a response see an exception
+                try {
+                    peer.transportListener.onException(new TransportDisposedIOException("peer (" + this + ") stopped."));
+                } catch (Exception ignore) {
+                }
             }
 
             // shutdown task runner factory

http://git-wip-us.apache.org/repos/asf/activemq/blob/243db1c2/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/AMQ1925Test.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/AMQ1925Test.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/AMQ1925Test.java
index ce78f7f..dfb5dfd 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/AMQ1925Test.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/AMQ1925Test.java
@@ -266,7 +266,7 @@ public class AMQ1925Test extends TestCase implements ExceptionListener {
 
 		boolean restartDone = false;
 		for (int i = 0; i < MESSAGE_COUNT; i++) {
-			Message message = consumer.receive(500);
+			Message message = consumer.receive(5000);
 			assertNotNull(message);
 
 			if (i == 222 && !restartDone) {
@@ -307,7 +307,7 @@ public class AMQ1925Test extends TestCase implements ExceptionListener {
 				.createQueue(QUEUE_NAME));
 
 		for (int i = 0; i < MESSAGE_COUNT; i++) {
-			Message message = consumer.receive(500);
+			Message message = consumer.receive(5000);
 			assertNotNull(message);
 
 			assertEquals(i, message.getIntProperty(PROPERTY_MSG_NUMBER));

http://git-wip-us.apache.org/repos/asf/activemq/blob/243db1c2/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/QueueBrowsingTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/QueueBrowsingTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/QueueBrowsingTest.java
index c3d66e9..29b6e72 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/QueueBrowsingTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/QueueBrowsingTest.java
@@ -17,6 +17,8 @@
 package org.apache.activemq.usecases;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 
 import java.io.IOException;
 import java.net.URI;
@@ -209,6 +211,6 @@ public class QueueBrowsingTest {
         }
 
         browser.close();
-        assertEquals(maxPageSize + 1, received);
+        assertTrue("got at least maxPageSize", received >= maxPageSize);
     }
 }