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 が強制終了したことが原因と考えられます。
The MIG_DB_CHANGELOG_LOCK
table is related to the Cloud Migration Assistant for Confluence plugin which is bundled by default since Confluence 6.14.
回避策
この問題を解決するには、以下の回避策のいずれかを選択してください。
Confluence データベースで以下の SQL クエリを実行して、手動でロックを解除します。
それ以外にも、Confluence インスタンスで Cloud Migration Assistant for Confluence を無効にすることで回避することもできます。