From 28abbaa7bda4a072711315cdbe9bd992eaf63c93 Mon Sep 17 00:00:00 2001 From: Owen <23108066+Owen1212055@users.noreply.github.com> Date: Sun, 10 Dec 2023 20:02:26 -0500 Subject: [PATCH] Catch setEnabled to ensure classloader is properly unloaded (#10020) --- patches/server/0013-Paper-Plugins.patch | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/patches/server/0013-Paper-Plugins.patch b/patches/server/0013-Paper-Plugins.patch index cb35ad03fa..5c74fb1c18 100644 --- a/patches/server/0013-Paper-Plugins.patch +++ b/patches/server/0013-Paper-Plugins.patch @@ -3767,10 +3767,10 @@ index 0000000000000000000000000000000000000000..92a69677f21b2c1c035119d8e5a6af63 +} diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java new file mode 100644 -index 0000000000000000000000000000000000000000..08b1aab5d37a56dc42542ce15ba1f7ccd1b08400 +index 0000000000000000000000000000000000000000..846bdcccf1031e41c4da29da885aa4d438507631 --- /dev/null +++ b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java -@@ -0,0 +1,302 @@ +@@ -0,0 +1,305 @@ +package io.papermc.paper.plugin.manager; + +import com.google.common.base.Preconditions; @@ -3994,8 +3994,11 @@ index 0000000000000000000000000000000000000000..08b1aab5d37a56dc42542ce15ba1f7cc + plugin.getLogger().info("Disabling %s".formatted(pluginName)); + + this.server.getPluginManager().callEvent(new PluginDisableEvent(plugin)); -+ -+ javaPlugin.setEnabled(false); ++ try { ++ javaPlugin.setEnabled(false); ++ } catch (Throwable ex) { ++ this.server.getLogger().log(Level.SEVERE, "Error occurred while disabling " + pluginName, ex); ++ } + + ClassLoader classLoader = plugin.getClass().getClassLoader(); + if (classLoader instanceof ConfiguredPluginClassLoader configuredPluginClassLoader) {