Universal Plugin Manager or add-on update fails
Only use this method when automatically updating the UPM has failed and the Confluence baseURL has been properly configured and confirmed. Ensure to take a backup of the Confluence database before making any changes.
Symptoms
- Attempt to automatically update the universal plugin manager (UPM) which leaves Confluence in a 'hung' state. Restarting the application is necessary to access UPM again.
- Add-on will not update fully. Leaves application in a 'hung' state.
- Error message may display on screen suggesting to check the logs for additional information
The following appears in the atlassian-confluence.log
:
2013-01-23 10:20:57,973 ERROR [Spring executor 31] [extender.internal.activator.ContextLoaderListener] onOsgiApplicationEvent Application context refresh failed (NonValidatingOsgiBundleXmlApplicationContext(bundle=com.atlassian.upm.atlassian-universal-plugin-manager-selfupdate-plugin, config=osgibundle:/META-INF/spring/*.xml))
-- referer: https://confluence.xxxxxx.edu/confluence/plugins/servlet/upm | url: /confluence/rest/plugins/1.0/ | userName: xxxx
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'updateParametersFactory' defined in URL [bundle://163.0:0/META-INF/spring/atlassian-plugins-components.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [com.atlassian.sal.api.pluginsettings.PluginSettingsFactory]: : Error loading class [com.atlassian.upm.selfupdate.async.SimpleAsyncTaskManager] for bean with name 'simpleAsyncTaskManager' defined in URL [bundle://163.0:0/META-INF/spring/atlassian-plugins-components.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: com.atlassian.upm.selfupdate.async.SimpleAsyncTaskManager not found from bundle [Atlassian Universal Plugin Manager Self-Update Plugin (com.atlassian.upm.atlassian-universal-plugin-manager-selfupdate-plugin)]; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.atlassian.upm.selfupdate.async.SimpleAsyncTaskManager] for bean with name 'simpleAsyncTaskManager' defined in URL [bundle://163.0:0/META-INF/spring/atlassian-plugins-components.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: com.atlassian.upm.selfupdate.async.SimpleAsyncTaskManager not found from bundle [Atlassian Universal Plugin Manager Self-Update Plugin (com.atlassian.upm.atlassian-universal-plugin-manager-selfupdate-plugin)]
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.atlassian.upm.selfupdate.async.SimpleAsyncTaskManager] for bean with name 'simpleAsyncTaskManager' defined in URL [bundle://163.0:0/META-INF/spring/atlassian-plugins-components.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: com.atlassian.upm.selfupdate.async.SimpleAsyncTaskManager not found from bundle [Atlassian Universal Plugin Manager Self-Update Plugin (com.atlassian.upm.atlassian-universal-plugin-manager-selfupdate-plugin)
- If the issue is caused by incorrect database isolation level, there won't be any error trace in the log. Even though the updated
.jar
file is successfully downloaded to the temporary directory (<Confluence-installation>/temp
), Confluence would not apply the update to the system.
Workaround
See resolution, it is unclear why the state needs to be 'reset', but the solution is to delete the upm from the database and reinstalled.
Resolution
- Shut down Confluence and ensure the process is stopped.
- Generate a backup for your database.
Delete the appropriate pluginkey from the database. For the UPM, the sql statement would resemble:
delete from plugindata where pluginkey like 'com.atlassian.upm.atlassian-universal-plugin%';
This will remove 1 OR 2 plugins. Both are safe to delete from the database.
For other add-ons, replace pluginkey with the relevant pluginkey. For a list of available pluginkey's, use this statement:
select pluginkey from plugindata;
Delete the following directories in the confluence.home folder:
- <confluence-home>/bundled-plugins
- <confluence-home>/plugin-cache
- <confluence-home>/plugins-osgi-cache
- <confluence-home>/plugins-temp
- Restart Confluence
- The plugin caches will be rebuilt on startup. For additional details, please see instructions here:
Clear Confluence Plugins Cache - Restart Confluence to pick the bundled one and then manually install the UPM
- If the issue persists, please ensure that your Confluence database is configured to have the recommended isolation level and engine: