From 073192c3b0d4603dddc70e8561d4890ea631b492 Mon Sep 17 00:00:00 2001 From: montlikadani Date: Mon, 30 Nov 2020 21:39:04 +0100 Subject: [PATCH] Fix some database loading issues For example if we have set up auto cleaning users, the time is already exceed and the users will not get removed from database. Somehow the database always closed on reloading plugin that caused to not perform database actions Fixes #1007 --- src/main/java/com/gamingmesh/jobs/Jobs.java | 21 +++++++------------ .../gamingmesh/jobs/container/JobsPlayer.java | 1 + 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index 5464ffe9..8b496a88 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -453,20 +453,17 @@ public class Jobs extends JavaPlugin { return jobsIds; } - /** - * Executes startup - * @throws IOException - */ - public void startup() { + private void startup() { reload(true); - loadAllPlayersData(); - // add all online players - Bukkit.getServer().getOnlinePlayers().forEach(getPlayerManager()::playerJoin); + CompletableFuture pd = loadAllPlayersData(); + + // attempt to add all online players to cache + pd.thenAccept(e -> Bukkit.getServer().getOnlinePlayers().forEach(getPlayerManager()::playerJoin)); } - public static void loadAllPlayersData() { - CompletableFuture.supplyAsync(() -> { + public static CompletableFuture loadAllPlayersData() { + return CompletableFuture.supplyAsync(() -> { long time = System.currentTimeMillis(); // Cloning to avoid issues HashMap temp = new HashMap<>(getPlayerManager().getPlayersInfoUUIDMap()); @@ -768,10 +765,8 @@ public class Jobs extends JavaPlugin { paymentThread.shutdown(); paymentThread = null; } + smanager = new SelectionManager(); - if (dao != null) { - dao.closeConnections(); - } getGCManager().reload(); getLanguage().reload(); diff --git a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java index f8a99a44..80e8079e 100644 --- a/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java +++ b/src/main/java/com/gamingmesh/jobs/container/JobsPlayer.java @@ -330,6 +330,7 @@ public class JobsPlayer { int TotalLevel = getTotalLevels(); Parser eq = Jobs.getGCManager().getLimit(type).getMaxEquation(); eq.setVariable("totallevel", TotalLevel); + maxJobsEquation = Jobs.getPlayerManager().getMaxJobs(this); limits.put(type, (int) eq.getValue()); setSaved(false); }