From 915bb5e9c64de47ca12495df06d569b67c6a078b Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 15 Apr 2020 12:40:21 -0400 Subject: [PATCH 1/3] Added the ability to terminate threads. --- .../core/database/DataManagerAbstract.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Core/src/main/java/com/songoda/core/database/DataManagerAbstract.java b/Core/src/main/java/com/songoda/core/database/DataManagerAbstract.java index 12a4e799..2cb906c9 100644 --- a/Core/src/main/java/com/songoda/core/database/DataManagerAbstract.java +++ b/Core/src/main/java/com/songoda/core/database/DataManagerAbstract.java @@ -11,6 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; public class DataManagerAbstract { @@ -88,4 +89,34 @@ public class DataManagerAbstract { threads.computeIfAbsent(threadKey.toUpperCase(), t -> Executors.newSingleThreadScheduledExecutor()).execute(runnable); } + + /** + * Terminate thread once all tasks have been completed. + * + * @param threadKey the thread key to terminate. + */ + public static void terminateThread(String threadKey) { + ScheduledExecutorService service = threads.get(threadKey); + if (service != null) { + threads.remove(threadKey); + try { + service.awaitTermination(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + /** + * Terminate all active threads. + */ + public static void terminateAllThreads() { + for (ScheduledExecutorService service : threads.values()) { + try { + service.awaitTermination(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } } From 5d032c761499a26df201b76b1c2c0bd2990c3357 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 15 Apr 2020 12:40:45 -0400 Subject: [PATCH 2/3] Terminate all threads on disable. --- Core/src/main/java/com/songoda/core/SongodaCore.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Core/src/main/java/com/songoda/core/SongodaCore.java b/Core/src/main/java/com/songoda/core/SongodaCore.java index a8fbcee2..93df6f44 100644 --- a/Core/src/main/java/com/songoda/core/SongodaCore.java +++ b/Core/src/main/java/com/songoda/core/SongodaCore.java @@ -17,6 +17,8 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.*; import java.util.logging.Level; + +import com.songoda.core.database.DataManagerAbstract; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -402,6 +404,8 @@ public class SongodaCore { if (pi != null) { registeredPlugins.remove(pi); } + // Terminate all active threads + DataManagerAbstract.terminateAllThreads(); if (event.getPlugin() == piggybackedPlugin) { // uh-oh! Abandon ship!! Bukkit.getServicesManager().unregisterAll(piggybackedPlugin); From 75cecdec529e462bf446f08adaccbb89a6f84bef Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 15 Apr 2020 11:06:02 -0400 Subject: [PATCH 3/3] version 2.3.22 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b961c1e8..0a10ea6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "SongodaCore" path: "/builds/$CI_PROJECT_PATH" - version: "2.3.21" + version: "2.3.22" build: stage: build