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 2015/03/02 15:56:57 UTC

[2/2] activemq git commit: https://issues.apache.org/jira/browse/AMQ-5620 - avoid potential deadlock on shutdown - waiting on connections to stop before stopping the pa would be an alternative but may block for ever, auto rollback ensures there is no nee

https://issues.apache.org/jira/browse/AMQ-5620 - avoid potential deadlock on shutdown - waiting on connections to stop before stopping the pa would be an alternative but may block for ever, auto rollback ensures there is no need


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

Branch: refs/heads/master
Commit: 260e28ecadc654ce3f0a5b6c7058788235265574
Parents: 4f57744
Author: gtully <ga...@gmail.com>
Authored: Mon Mar 2 14:09:58 2015 +0000
Committer: gtully <ga...@gmail.com>
Committed: Mon Mar 2 14:44:58 2015 +0000

----------------------------------------------------------------------
 .../store/kahadb/disk/journal/Journal.java      | 29 ++++++++++++--------
 1 file changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/260e28ec/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
index 91f82ae..54386cb 100644
--- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
+++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
@@ -463,20 +463,25 @@ public class Journal {
         return dataFile.getNext();
     }
 
-    public synchronized void close() throws IOException {
-        if (!started) {
-            return;
-        }
-        if (this.timer != null) {
-            this.timer.cancel();
+    public void close() throws IOException {
+        synchronized (this) {
+            if (!started) {
+                return;
+            }
+            if (this.timer != null) {
+                this.timer.cancel();
+            }
+            accessorPool.close();
         }
-        accessorPool.close();
+        // the appender can be calling back to to the journal blocking a close AMQ-5620
         appender.close();
-        fileMap.clear();
-        fileByFileMap.clear();
-        dataFiles.clear();
-        lastAppendLocation.set(null);
-        started = false;
+        synchronized (this) {
+            fileMap.clear();
+            fileByFileMap.clear();
+            dataFiles.clear();
+            lastAppendLocation.set(null);
+            started = false;
+        }
     }
 
     protected synchronized void cleanup() {