You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/10/30 18:04:43 UTC

svn commit: r1537177 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java

Author: mduerig
Date: Wed Oct 30 17:04:43 2013
New Revision: 1537177

URL: http://svn.apache.org/r1537177
Log:
OAK-1113: Immediate delivery of events from local commits
Unregister mbean outside of run method to avoid dead locking with stop call

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java?rev=1537177&r1=1537176&r2=1537177&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java Wed Oct 30 17:04:43 2013
@@ -116,6 +116,8 @@ public class ChangeProcessor {
             } catch (InterruptedException e) {
                 log.warn("Interruption while waiting for the observation thread to terminate", e);
                 Thread.currentThread().interrupt();
+            } finally {
+                thread.dispose();
             }
         }
     }
@@ -157,16 +159,18 @@ public class ChangeProcessor {
                     }
                 }
             } catch (Exception e) {
-                log.debug("Error while dispatching observation events", e);
-            } finally {
-                mbean.unregister();
-                changeListener.dispose();
+                log.warn("Error while dispatching observation events", e);
             }
         }
 
         private ImmutableTree getTree(NodeState nodeState, String path) {
             return new ImmutableRoot(nodeState).getTree(path);
         }
+
+        void dispose() {
+            mbean.unregister();
+            changeListener.dispose();
+        }
     }
 
 }