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; + } } }