From 7e8df339a3ae9d32bb5d6d00007f6b5d006da7ca Mon Sep 17 00:00:00 2001 From: John Niang Date: Wed, 24 Jan 2024 10:36:11 +0800 Subject: [PATCH] Revert: refresh the plugin wrapper when starting the plugin (#5238) #### What type of PR is this? /kind improvement /area core /milestone 2.12.x #### What this PR does / why we need it: This PR reverts changes in PR , mainly thanks to PR . We don't need to refresh the plugin wrapper on every startup, because we entirely disable the plugin in plugin manager when disabling plugin at console. #### Which issue(s) this PR fixes: Fixes https://github.com/halo-dev/halo/issues/4016 #### Does this PR introduce a user-facing change? ```release-note None ``` --- .../halo/app/plugin/HaloPluginManager.java | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/application/src/main/java/run/halo/app/plugin/HaloPluginManager.java b/application/src/main/java/run/halo/app/plugin/HaloPluginManager.java index 936c2ab6a..6409be4a7 100644 --- a/application/src/main/java/run/halo/app/plugin/HaloPluginManager.java +++ b/application/src/main/java/run/halo/app/plugin/HaloPluginManager.java @@ -223,10 +223,7 @@ public class HaloPluginManager extends DefaultPluginManager private PluginState doStartPlugin(String pluginId) { checkPluginId(pluginId); - // refresh plugin to ensure cache object of PluginWrapper.plugin is up-to-date - // see gh-4016 to know why we need this - // TODO if has a better way to do this? - PluginWrapper pluginWrapper = refreshPluginWrapper(pluginId); + PluginWrapper pluginWrapper = getPlugin(pluginId); checkExtensionFinderReady(pluginWrapper); @@ -352,37 +349,6 @@ public class HaloPluginManager extends DefaultPluginManager } } - /** - *

Refresh plugin wrapper by plugin name.

- * - *

It will be create a new plugin wrapper and replace old plugin wrapper to clean - * {@link PluginWrapper#getPlugin()} cache object.

- * - * @param pluginName plugin name - * @return refreshed plugin wrapper instance, plugin cache object will be null - * @throws IllegalArgumentException if plugin not found - */ - protected synchronized PluginWrapper refreshPluginWrapper(String pluginName) { - checkPluginId(pluginName); - // get old plugin wrapper - PluginWrapper pluginWrapper = getPlugin(pluginName); - // create new plugin wrapper to replace old plugin wrapper - PluginWrapper refreshed = copyPluginWrapper(pluginWrapper); - this.plugins.put(pluginName, refreshed); - return refreshed; - } - - @NonNull - PluginWrapper copyPluginWrapper(@NonNull PluginWrapper pluginWrapper) { - PluginWrapper refreshed = - createPluginWrapper(pluginWrapper.getDescriptor(), pluginWrapper.getPluginPath(), - pluginWrapper.getPluginClassLoader()); - refreshed.setPluginFactory(getPluginFactory()); - refreshed.setPluginState(pluginWrapper.getPluginState()); - refreshed.setFailedException(pluginWrapper.getFailedException()); - return refreshed; - } - @Override public void destroy() throws Exception { stopPlugins();