UPM Cannot be Upgraded and Hangs Confluence
Symptoms
Confluence hangs when trying to upgrade the UPM. The following appears in the atlassian-confluence.log
, indicating that UPM is being upgraded, but error or warnings are observed:
2012-05-02 11:01:25,162 INFO [pool-5-thread-1] [atlassian.plugin.manager.DefaultPluginManager] disableDependentPlugins Found dependent enabled plugins for uninstalled plugin 'com.atlassian.upm.atlassian-universal-plugin-manager-plugin': []. Disabling...
2012-05-02 11:01:25,177 INFO [pool-5-thread-1] [atlassian.plugin.manager.DefaultPluginManager] updatePlugin Updating plugin 'com.atlassian.upm.atlassian-universal-plugin-manager-plugin' to 'com.atlassian.upm.atlassian-universal-plugin-manager-plugin'
2012-05-02 11:01:25,177 INFO [pool-5-thread-1] [atlassian.plugin.manager.DefaultPluginManager] notifyPluginDisabled Disabling com.atlassian.upm.atlassian-universal-plugin-manager-plugin
Cause
Your database is not configured to be READ-COMMITTED. To confirm this, run the following SQL query:
SELECT sd.is_read_committed_snapshot_on
FROM sys.databases AS sd
WHERE sd.[name] = '<database name>';
This should return 1. If it returns anything else, proceed to the resolution.
The above query was written for MS SQL, it may require tweaking for other databases.
Resolution
For MS SQL
Run the following SQL query:
ALTER DATABASE <database name> SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
- Restart Confluence.
- Re-attempt the UPM upgrade.
There is an improvement request to address this behavior, which is being tracked here: - CONF-26296Getting issue details... STATUS
For MySQL
- Stop Confluence
(On 3.5.6 onward) In the top level of your Confluence home directory, find the confluence.cfg.xml file and locate the <properties> section. Add the following parameter:
<properties> ... <property name="hibernate.connection.isolation">2</property> ... <properties>
As an example of where it should be located in the file:
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.isolation">2</property> <property name="hibernate.connection.password">XXXXXX</property>
- Once this is complete, please start Confluence and attempt the update again
This can also be set at a Global Level for MySQL
Please Note: This is only recommended if you do not have any other applications using this MySQL database. This will update the transaction isolation level for the entire database.
Set the global transaction isolation level to READ-COMMITTED. You can do this by configuring your MySQL server's settings by editing MySQL's my.cnf file (often named my.ini on Windows operating systems). Locate the [mysqld] section in the file and add/modify the following parameter:
[mysqld] ... transaction-isolation=READ-COMMITTED ...