mirror of https://github.com/halo-dev/halo
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 <https://github.com/halo-dev/halo/pull/4023>, mainly thanks to PR <https://github.com/halo-dev/halo/pull/5148>. 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 ```pull/5245/head
parent
28ee0bf0e0
commit
7e8df339a3
|
@ -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
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Refresh plugin wrapper by plugin name.</p>
|
||||
*
|
||||
* <p>It will be create a new plugin wrapper and replace old plugin wrapper to clean
|
||||
* {@link PluginWrapper#getPlugin()} cache object.</p>
|
||||
*
|
||||
* @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();
|
||||
|
|
Loading…
Reference in New Issue