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();
}
};