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 2018/03/01 13:23:54 UTC
svn commit: r1825644 - in /jackrabbit/oak/trunk/oak-segment-tar/src:
main/java/org/apache/jackrabbit/oak/segment/file/Scheduler.java
test/java/org/apache/jackrabbit/oak/segment/file/SchedulerTest.java
Author: mduerig
Date: Thu Mar 1 13:23:54 2018
New Revision: 1825644
URL: http://svn.apache.org/viewvc?rev=1825644&view=rev
Log:
OAK-6891: Executions of background threads might pile up
Added Scheduler.scheduleWithFixedDelay
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Scheduler.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SchedulerTest.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Scheduler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Scheduler.java?rev=1825644&r1=1825643&r2=1825644&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Scheduler.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/Scheduler.java Thu Mar 1 13:23:54 2018
@@ -123,6 +123,23 @@ public class Scheduler implements Closea
}
/**
+ * Run {@code task} regularly after a fixed delay. The background thread's name is
+ * set to {@code name} during execution of {@code task}.
+ * @param name
+ * @param delay
+ * @param unit
+ * @param task
+ * @see ScheduledExecutorService#scheduleWithFixedDelay(Runnable, long, long, TimeUnit)
+ */
+ public void scheduleWithFixedDelay(
+ @Nonnull String name,
+ long delay,
+ @Nonnull TimeUnit unit,
+ @Nonnull Runnable task) {
+ executor.scheduleWithFixedDelay(new SafeRunnable(name, task), delay, delay, unit);
+ }
+
+ /**
* Close this scheduler.
* @see ScheduledExecutorService#shutdown()
*/
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SchedulerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SchedulerTest.java?rev=1825644&r1=1825643&r2=1825644&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SchedulerTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SchedulerTest.java Thu Mar 1 13:23:54 2018
@@ -69,6 +69,17 @@ public class SchedulerTest {
assertEquals("scheduleAtFixedRate", task.getThreadName());
}
+ @Test
+ public void scheduleWithFixedDelay() throws Exception {
+ TestTask task = new TestTask(5);
+ scheduler.scheduleWithFixedDelay("scheduleWithFixedDelay", 200, MILLISECONDS, task);
+
+ assertNull(task.getThreadName());
+ assertTrue(task.await());
+ assertEquals("scheduleWithFixedDelay", task.getThreadName());
+ }
+
+
private static class TestTask implements Runnable {
private final AtomicReference<String> threadName = new AtomicReference<>();
private final CountDownLatch done;