Catch setEnabled to ensure classloader is properly unloaded (#10020)

This commit is contained in:
Owen 2023-12-10 20:02:26 -05:00 committed by GitHub
parent dd16335e40
commit 28abbaa7bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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) {