Release class loader when a plugin fails to load (#6030)

This commit is contained in:
Basil Crow authored and GitHub committed 2021-12-14 08:27:41 +00:00
1 parent 3dcabc4b02
commit 91675c5d44
1 file changed
+5 -1
+5 -1
View File
@@ -543,11 +543,13 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
failedPlugins.add(new FailedPlugin(p, e));
activePlugins.remove(p);
plugins.remove(p);
p.releaseClassLoader();
LOGGER.log(Level.SEVERE, "Failed to install {0}: {1}", new Object[] { p.getShortName(), e.getMessage() });
} catch (IOException e) {
failedPlugins.add(new FailedPlugin(p, e));
activePlugins.remove(p);
plugins.remove(p);
p.releaseClassLoader();
throw e;
}
}
@@ -568,6 +570,7 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
failedPlugins.add(new FailedPlugin(p, e));
activePlugins.remove(p);
plugins.remove(p);
p.releaseClassLoader();
throw e;
}
}
@@ -928,9 +931,10 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
}
} catch (Exception e) {
failedPlugins.add(new FailedPlugin(sn, e));
failedPlugins.add(new FailedPlugin(p, e));
activePlugins.remove(p);
plugins.remove(p);
p.releaseClassLoader();
throw new IOException("Failed to install "+ sn +" plugin",e);
}