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/02/17 15:38:06 UTC

git commit: avoid ugly npe post endpoint disassociate and add additional trace to recovery

Repository: activemq
Updated Branches:
  refs/heads/trunk ec249f4da -> f42d56c1f


avoid ugly npe post endpoint disassociate and add additional trace to recovery


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

Branch: refs/heads/trunk
Commit: f42d56c1f8601d96fa53ff59ce69f9a97dd31e9c
Parents: ec249f4
Author: gtully <ga...@gmail.com>
Authored: Mon Feb 17 14:36:40 2014 +0000
Committer: gtully <ga...@gmail.com>
Committed: Mon Feb 17 14:37:48 2014 +0000

----------------------------------------------------------------------
 .../activemq/ra/ActiveMQEndpointWorker.java       | 18 +++++++++---------
 .../apache/activemq/ra/LocalAndXATransaction.java |  5 ++++-
 .../apache/activemq/ra/ServerSessionPoolImpl.java |  8 +++++++-
 3 files changed, 20 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/f42d56c1/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java
----------------------------------------------------------------------
diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java
index b18ef29..1e12751 100755
--- a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java
+++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQEndpointWorker.java
@@ -294,18 +294,18 @@ public class ActiveMQEndpointWorker {
 
     private void connect() {
         synchronized ( connectWork ) {
-        if (!running) {
-            return;
-        }
+            if (!running) {
+                return;
+            }
 
-        try {
-            workManager.scheduleWork(connectWork, WorkManager.INDEFINITE, null, null);
-        } catch (WorkException e) {
-            running = false;
-            LOG.error("Work Manager did not accept work: ", e);
+            try {
+                workManager.scheduleWork(connectWork, WorkManager.INDEFINITE, null, null);
+            } catch (WorkException e) {
+                running = false;
+                LOG.error("Work Manager did not accept work: ", e);
+            }
         }
     }
-    }
 
     /**
      * 

http://git-wip-us.apache.org/repos/asf/activemq/blob/f42d56c1/activemq-ra/src/main/java/org/apache/activemq/ra/LocalAndXATransaction.java
----------------------------------------------------------------------
diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/LocalAndXATransaction.java b/activemq-ra/src/main/java/org/apache/activemq/ra/LocalAndXATransaction.java
index 0f27393..c6d91ef 100755
--- a/activemq-ra/src/main/java/org/apache/activemq/ra/LocalAndXATransaction.java
+++ b/activemq-ra/src/main/java/org/apache/activemq/ra/LocalAndXATransaction.java
@@ -127,7 +127,10 @@ public class LocalAndXATransaction implements XAResource, LocalTransaction {
     }
 
     public Xid[] recover(int arg0) throws XAException {
-        return transactionContext.recover(arg0);
+        Xid[] answer = null;
+        answer = transactionContext.recover(arg0);
+        LOG.trace("{} recover({}) = {}", new Object[]{this, arg0, answer});
+        return answer;
     }
 
     public void rollback(Xid arg0) throws XAException {

http://git-wip-us.apache.org/repos/asf/activemq/blob/f42d56c1/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionPoolImpl.java
----------------------------------------------------------------------
diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionPoolImpl.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionPoolImpl.java
index c0c3320..25de03d 100755
--- a/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionPoolImpl.java
+++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ServerSessionPoolImpl.java
@@ -30,6 +30,7 @@ import javax.jms.Session;
 import javax.resource.spi.UnavailableException;
 import javax.resource.spi.endpoint.MessageEndpoint;
 
+import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQQueueSession;
 import org.apache.activemq.ActiveMQSession;
 import org.apache.activemq.ActiveMQTopicSession;
@@ -60,7 +61,12 @@ public class ServerSessionPoolImpl implements ServerSessionPool {
     private ServerSessionImpl createServerSessionImpl() throws JMSException {
         MessageActivationSpec activationSpec = activeMQAsfEndpointWorker.endpointActivationKey.getActivationSpec();
         int acknowledge = (activeMQAsfEndpointWorker.transacted) ? Session.SESSION_TRANSACTED : activationSpec.getAcknowledgeModeForSession();
-        final ActiveMQSession session = (ActiveMQSession)activeMQAsfEndpointWorker.getConnection().createSession(activeMQAsfEndpointWorker.transacted, acknowledge);
+        final ActiveMQConnection connection = activeMQAsfEndpointWorker.getConnection();
+        if (connection == null) {
+            // redispatch of pending prefetched messages after disconnect can have a null connection
+            return null;
+        }
+        final ActiveMQSession session = (ActiveMQSession)connection.createSession(activeMQAsfEndpointWorker.transacted, acknowledge);
         MessageEndpoint endpoint;
         try {
             int batchSize = 0;