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/07/03 15:12:00 UTC

svn commit: r1499384 - /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java

Author: mduerig
Date: Wed Jul  3 13:12:00 2013
New Revision: 1499384

URL: http://svn.apache.org/r1499384
Log:
OAK-144 Implement Observation
Better logging: distinguish between client errors and internal errors when dispatching observation events

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

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java?rev=1499384&r1=1499383&r2=1499384&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java Wed Jul  3 13:12:00 2013
@@ -196,7 +196,7 @@ class ChangeProcessor implements Runnabl
                 changes = changeListener.getChanges();
             }
         } catch (Exception e) {
-            log.error("Unable to generate or send events", e);
+            log.debug("Error while dispatching observation events", e);
         } finally {
             running = null;
             synchronized (this) { notifyAll(); }
@@ -242,12 +242,17 @@ class ChangeProcessor implements Runnabl
         public void sendEvents() {
             Iterator<Event> eventIt = Iterators.concat(events.iterator());
             if (eventIt.hasNext()) {
-                listener.onEvent(new EventIteratorAdapter(eventIt) {
-                    @Override
-                    public boolean hasNext() {
-                        return !stopping && super.hasNext();
-                    }
-                });
+                try {
+                    listener.onEvent(new EventIteratorAdapter(eventIt) {
+                        @Override
+                        public boolean hasNext() {
+                            return !stopping && super.hasNext();
+                        }
+                    });
+                }
+                catch (Exception e) {
+                    log.warn("Unhandled exception in observation listener: " + listener, e);
+                }
                 events = new ArrayList<Iterator<Event>>(PURGE_LIMIT);
             }
         }