-
Bug
-
Resolution: Fixed
-
Low
-
6.3.0
-
Severity 2 - Major
-
Summary
Running Confluence 6.3 and upgrading from MySQL 5.6 to 5.7 will cause the following error disallowing Confluence to start
java.sql.SQLException: Unknown system variable 'storage_engine'
Environment
- Linux
- MySQL 5.6
- MySQL 5.7
Steps to Reproduce
- Install Confluence 6.2.3 against MySQL 5.6. Note to leave the connection URL with the sessionVariable parameter
- Upgrade to Confluence 6.3
- Upgrade MySQL to 5.7 in place or through a dump/import. Again noting to leave the connection URL with the sessionVariable parameter
Theoretically a faster way to reproduce this would be to start Confluence 6.3 against MySQL 5.7 with a sessionVariable parameter in place. The above is intended to reproduce the upgrade flow admins will proceed with
Expected Results
Confluence starts up correctly connected to MySQL 5.7
Actual Results
Confluence fails to start, and the below exception is thrown:
2017-07-07 14:03:18,634 WARN [C3P0PooledConnectionPoolManager[identityToken->z8kfsx9p8k5ul21q6rg1z|5ca418bc]-HelperThread-#1] [mchange.v2.resourcepool.BasicResourcePool] log Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@45c5dcf5 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests. 2017-07-07 14:03:18,634 WARN [C3P0PooledConnectionPoolManager[identityToken->z8kfsx9p8k5ul21q6rg1z|5ca418bc]-HelperThread-#2] [mchange.v2.resourcepool.BasicResourcePool] log com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@6b4b037e -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: java.sql.SQLException: Unknown system variable 'storage_engine'
Notes
This will trigger in practise due to the sessionVariable parameter being applied by default by the Confluence installer when initially running MySQL 5.6 and then leaving the parameter in the confluence.cfg.xml file when upgrading to MySQL 5.7
Workaround
- Back up your confluence.cfg.xml file
- Edit your database connection URL to remove sessionVariables=storage_engine%3DInnoDB. See example below for more details
- Start up Confluence
Example:
The following connection URL in confluence.cfg.xml needs to change from this:
jdbc:mysql://localhost:3306/confluence_db?sessionVariables=storage_engine%3DInnoDB
to this:
jdbc:mysql://localhost:3306/confluence_db