Confluence のアップグレードが 「liquibase.exception.LockException: Could not acquire change log lock」エラーで失敗する
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
問題
Confluence 6.14 以上へのアップグレードに失敗し、atlassian-confluence.log
に以下のエラーが表示される。
2019-04-01 12:45:19,509 ERROR \[Caesium-1-2] \[migration.agent.queue.QueueBroker] error An error occurred when getting the next batch for consumer type: CONFLUENCE_IMPORT. Message: javax.persistence.PersistenceException: Failed to update database schema
com.atlassian.util.concurrent.LazyReference$InitializationException: javax.persistence.PersistenceException: Failed to update database schema
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149\)
at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112\)
at com.atlassian.migration.agent.store.jpa.impl.DefaultSessionFactorySupplier.get(DefaultSessionFactorySupplier.java:57\)
at com.atlassian.migration.agent.store.jpa.impl.DefaultSessionFactorySupplier.get(DefaultSessionFactorySupplier.java:36\)
at com.atlassian.migration.agent.store.jpa.impl.DefaultPluginTransactionTemplate.on(DefaultPluginTransactionTemplate.java:33\)
at com.atlassian.migration.agent.store.tx.PluginTransactionTemplate.write(PluginTransactionTemplate.java:26\)
at com.atlassian.migration.agent.queue.QueueBroker.getNextBatch(QueueBroker.java:119\)
...
at java.util.ArrayList.forEach(ArrayList.java:1257\)
at com.atlassian.migration.agent.queue.QueueBroker.runJob(QueueBroker.java:100\)
at com.atlassian.confluence.impl.schedule.caesium.JobRunnerWrapper.doRunJob(JobRunnerWrapper.java:117\)
...
Caused by: javax.persistence.PersistenceException: Failed to update database schema
at com.atlassian.migration.agent.store.jpa.impl.LiquibaseSchemaUpgrader.upgrade(LiquibaseSchemaUpgrader.java:35\)
at com.atlassian.migration.agent.store.jpa.impl.DefaultSessionFactorySupplier.buildSessionFactory(DefaultSessionFactorySupplier.java:62\)
...
at com.atlassian.migration.agent.store.jpa.impl.DefaultSessionFactorySupplier.get(DefaultSessionFactorySupplier.java:57\)
at com.atlassian.migration.agent.store.jpa.impl.DefaultSessionFactorySupplier.get(DefaultSessionFactorySupplier.java:36\)
at com.atlassian.migration.agent.store.jpa.impl.DefaultPluginTransactionTemplate.on(DefaultPluginTransactionTemplate.java:33\)
at com.atlassian.migration.agent.store.tx.PluginTransactionTemplate.read(PluginTransactionTemplate.java:18\)
at com.atlassian.migration.agent.service.impl.DefaultStatisticsService.calculateServerStats(DefaultStatisticsService.java:132\)
at com.atlassian.migration.agent.service.impl.SingleJobExecutor.lambda$execute$0(SingleJobExecutor.java:28\)
...
Caused by: liquibase.exception.LockException: Could not acquire change log lock. Currently locked by <DatabaseServer> \(<DatabaseServerIP>\) since 04.02.19 20:03
at liquibase.lockservice.StandardLockService.waitForLock(StandardLockService.java:230\)
at liquibase.Liquibase.update(Liquibase.java:184\)
at liquibase.Liquibase.update(Liquibase.java:179\)
at com.atlassian.migration.agent.store.jpa.impl.LiquibaseSchemaUpgrader.upgrade(LiquibaseSchemaUpgrader.java:30\)
原因
この問題は MIG_DB_CHANGELOG_LOCK
テーブルがリリース ロック情報で更新されておらず、アップグレード後にデータベース スキーマを移行しようとしている間に Confluence が強制終了したことが原因と考えられます。
MIG_DB_CHANGELOG_LOCK
テーブルは、Confluence 6.14 以降からデフォルトでバンドルされている Cloud Migration Assistant for Confluence プラグインに関連しています。
回避策
この問題を解決するには、以下の回避策のいずれかを選択してください。
Confluence データベースで以下の SQL クエリを実行して、手動でロックを解除します。
それ以外にも、Confluence インスタンスで Cloud Migration Assistant for Confluence を無効にすることで回避することもできます。