Author: mduerig
Date: Mon Mar 17 14:08:54 2014
New Revision: 1578384

URL: http://svn.apache.org/r1578384
Log:
OAK-1497: JackrabbitEvent#isExternal() returns true for internal changes for 
slow listeners
Lower noise level when logging warnings about full revision queue

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

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserver.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserver.java?rev=1578384&r1=1578383&r2=1578384&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserver.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserver.java
 Mon Mar 17 14:08:54 2014
@@ -105,6 +105,11 @@ public class BackgroundObserver implemen
     private boolean full;
 
     /**
+     * Log a warning once when the queue is full. Reset once the queue is back 
empty.
+     */
+    private volatile boolean warnOnFullQueue = true;
+
+    /**
      * Current background task
      */
     private volatile ListenableFutureTask currentTask = 
ListenableFutureTask.completed();
@@ -173,8 +178,17 @@ public class BackgroundObserver implemen
         this(observer, executor, 1000);
     }
 
+    /**
+     * Called whenever the queue is 90% full.
+     */
     protected void queueNearlyFull() {}
-    protected void queueEmpty() {}
+
+    /**
+     * Called whenever the queue has been emptied.
+     */
+    protected void queueEmpty() {
+        warnOnFullQueue = true;
+    }
 
     /**
      * Clears the change queue and signals the background thread to stop
@@ -225,9 +239,9 @@ public class BackgroundObserver implemen
 
         // Try to add this change to the queue without blocking, and
         // mark the queue as full if there wasn't enough space
-        boolean wasFull = full;
         full = !queue.offer(change);
-        if (full && !wasFull) {
+        if (full && warnOnFullQueue) {
+            warnOnFullQueue = false;
             LOG.warn("Revision queue is full. Further revisions will be 
compacted.");
         }
 

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=1578384&r1=1578383&r2=1578384&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
 Mon Mar 17 14:08:54 2014
@@ -146,11 +146,13 @@ class ChangeProcessor implements Observe
             return new BackgroundObserver(this, executor, queueLength) {
                 @Override
                 protected void queueNearlyFull() {
+                    super.queueNearlyFull();
                     commitRateLimiter.blockCommits();
                 }
 
                 @Override
                 protected void queueEmpty() {
+                    super.queueEmpty();
                     commitRateLimiter.unblockCommits();
                 }
             };


Reply via email to