Author: mduerig
Date: Thu Mar 20 13:03:04 2014
New Revision: 1579614
URL: http://svn.apache.org/r1579614
Log:
OAK-1559: Expose BlobGCMBean for supported NodeStores
Only require an Executor instead of an ExecutorService in the constructor of
BlobGC
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java?rev=1579614&r1=1579613&r2=1579614&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGC.java
Thu Mar 20 13:03:04 2014
@@ -23,8 +23,9 @@ import static com.google.common.base.Pre
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
+import java.util.concurrent.Executor;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.RunnableFuture;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
@@ -39,20 +40,19 @@ public class BlobGC implements BlobGCMBe
private static final Logger log = LoggerFactory.getLogger(BlobGC.class);
private final BlobGarbageCollector blobGarbageCollector;
- private final ExecutorService executorService;
+ private final Executor executor;
- private Future<Long> gcOp;
+ private RunnableFuture<Long> gcOp;
/**
* @param blobGarbageCollector Blob garbage collector
- * @param executorService executor service for running the garbage
collection task
- * in the background.
+ * @param executor executor for running the garbage
collection task
*/
public BlobGC(
@Nonnull BlobGarbageCollector blobGarbageCollector,
- @Nonnull ExecutorService executorService) {
+ @Nonnull Executor executor) {
this.blobGarbageCollector = checkNotNull(blobGarbageCollector);
- this.executorService = checkNotNull(executorService);
+ this.executor = checkNotNull(executor);
}
@Nonnull
@@ -61,7 +61,7 @@ public class BlobGC implements BlobGCMBe
if (gcOp != null && !gcOp.isDone()) {
return "Garbage collection already running";
} else {
- gcOp = executorService.submit(new Callable<Long>() {
+ gcOp = new FutureTask<Long>(new Callable<Long>() {
@Override
public Long call() throws Exception {
long t0 = System.nanoTime();
@@ -69,6 +69,7 @@ public class BlobGC implements BlobGCMBe
return System.nanoTime() - t0;
}
});
+ executor.execute(gcOp);
return getBlobGCStatus();
}
}