From bcd99f47276e53298322f2ec65cf3dcd26d74f4f Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Wed, 4 Aug 2021 00:44:06 +0200 Subject: [PATCH] Avoid errors --- .../dbengine/database/disk/LLLocalLuceneIndex.java | 4 +++- .../dbengine/lucene/ScheduledTaskLifecycle.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalLuceneIndex.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalLuceneIndex.java index da872bf..1f83901 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalLuceneIndex.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalLuceneIndex.java @@ -280,7 +280,9 @@ public class LLLocalLuceneIndex implements LLLuceneIndex { @Override public void run() { - scheduledTasksLifecycle.startScheduledTask(); + if (!scheduledTasksLifecycle.tryStartScheduledTask()) { + return; + } try { if (scheduledTasksLifecycle.isCancelled() || cancelled) return; task.run(); diff --git a/src/main/java/it/cavallium/dbengine/lucene/ScheduledTaskLifecycle.java b/src/main/java/it/cavallium/dbengine/lucene/ScheduledTaskLifecycle.java index e2b88f9..4d64fa9 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/ScheduledTaskLifecycle.java +++ b/src/main/java/it/cavallium/dbengine/lucene/ScheduledTaskLifecycle.java @@ -27,6 +27,19 @@ public class ScheduledTaskLifecycle { this.lock.readLock(); } + /** + * Mark this task as running. + * After calling this method, please call {@method endScheduledTask} inside a finally block! + * @return false if failed + */ + public boolean tryStartScheduledTask() { + if (cancelled) { + return false; + } + this.lock.readLock(); + return true; + } + /** * Mark this task as ended. Must be called after {@method startScheduledTask} */