Cancel periodic cleanup task on plugin unload
Change-Id: I99206ffce8d0c811cba66ed7d92408c82387ce74
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCacheCleaner.java b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCacheCleaner.java
index c6c89a6..3e97dc9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCacheCleaner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCacheCleaner.java
@@ -19,14 +19,19 @@
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+import java.util.concurrent.ScheduledFuture;
class FlatFileWebSessionCacheCleaner implements Runnable {
+ @Singleton
static class CleanerLifecycle implements LifecycleListener {
private static final int INITIAL_DELAY_MS = 1000;
private final WorkQueue queue;
private final FlatFileWebSessionCacheCleaner cleaner;
private final long cleanupInterval;
+ private ScheduledFuture<?> scheduledCleanupTask;
@Inject
CleanerLifecycle(
@@ -40,12 +45,16 @@
@Override
public void start() {
- queue.getDefaultQueue().scheduleAtFixedRate(cleaner, INITIAL_DELAY_MS,
- cleanupInterval, MILLISECONDS);
+ scheduledCleanupTask = queue.getDefaultQueue().scheduleAtFixedRate(
+ cleaner, INITIAL_DELAY_MS, cleanupInterval, MILLISECONDS);
}
@Override
public void stop() {
+ if (scheduledCleanupTask != null) {
+ scheduledCleanupTask.cancel(true);
+ scheduledCleanupTask = null;
+ }
}
}