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 2015/12/01 10:41:54 UTC
svn commit: r1717394 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file:
BackgroundThread.java FileStore.java
Author: mduerig
Date: Tue Dec 1 09:41:53 2015
New Revision: 1717394
URL: http://svn.apache.org/viewvc?rev=1717394&view=rev
Log:
OAK-3702: More resilient BackgroundThread implementation
Don't start thread from within constructor
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/BackgroundThread.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/BackgroundThread.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/BackgroundThread.java?rev=1717394&r1=1717393&r2=1717394&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/BackgroundThread.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/BackgroundThread.java Tue Dec 1 09:41:53 2015
@@ -49,7 +49,7 @@ class BackgroundThread extends Thread im
private long maxDuration = 0;
- BackgroundThread(String name, long interval, Runnable target) {
+ private BackgroundThread(String name, long interval, Runnable target) {
super(target, name);
this.name = name;
@@ -57,7 +57,20 @@ class BackgroundThread extends Thread im
setDaemon(true);
setPriority(MIN_PRIORITY);
- start();
+ }
+
+ /**
+ * Run a {@code task} in an regular {@code interval} in the background
+ * (i.e. {@link Thread#MIN_PRIORITY}.
+ * @param name name of the thread
+ * @param interval interval in milliseconds
+ * @param task task to run
+ * @return the {@code BackgroundThread} instance running {@code task}.
+ */
+ public static BackgroundThread run(String name, long interval, Runnable task) {
+ BackgroundThread t = new BackgroundThread(name, interval, task);
+ t.start();
+ return t;
}
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1717394&r1=1717393&r2=1717394&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Tue Dec 1 09:41:53 2015
@@ -477,7 +477,7 @@ public class FileStore implements Segmen
}
if (!readonly) {
- flushThread = new BackgroundThread(
+ flushThread = BackgroundThread.run(
"TarMK flush thread [" + directory + "]", 5000, // 5s interval
new Runnable() {
@Override
@@ -490,7 +490,7 @@ public class FileStore implements Segmen
}
}
});
- compactionThread = new BackgroundThread(
+ compactionThread = BackgroundThread.run(
"TarMK compaction thread [" + directory + "]", -1,
new Runnable() {
@Override
@@ -499,7 +499,7 @@ public class FileStore implements Segmen
}
});
- diskSpaceThread = new BackgroundThread(
+ diskSpaceThread = BackgroundThread.run(
"TarMK disk space check [" + directory + "]", MINUTES.toMillis(1), new Runnable() {
@Override