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;