From 9a852f4cbe92b17015e577800b9f8d84167fbe7b Mon Sep 17 00:00:00 2001 From: sk89q Date: Sat, 2 Aug 2014 21:08:11 -0700 Subject: [PATCH] Fix shutdown guard not working. --- .../java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index 6889fd5d..a563ae75 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.bukkit; +import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import com.sk89q.bukkit.util.CommandsManagerRegistration; @@ -83,6 +84,7 @@ import java.util.List; import java.util.Set; import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.TimeUnit; import java.util.jar.JarFile; @@ -252,7 +254,7 @@ public void run() { @Override public void onDisable() { - executorService.shutdownNow(); + executorService.shutdown(); try { getLogger().log(Level.INFO, "Shutting down executor and waiting for any pending tasks..."); @@ -267,9 +269,12 @@ public void onDisable() { getLogger().log(Level.INFO, builder.toString()); } + Futures.successfulAsList(tasks).get(); executorService.awaitTermination(Integer.MAX_VALUE, TimeUnit.DAYS); } catch (InterruptedException e) { Thread.currentThread().interrupt(); + } catch (ExecutionException e) { + getLogger().log(Level.WARNING, "Some tasks failed while waiting for remaining tasks to finish", e); } globalRegionManager.unload();