Confluence のアップグレードに失敗し、web インターフェイスに "Confluence had problems starting up...Transaction rolled back because it has been marked as rollback-only" と表示される
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
問題
Confluence 7.13.x へのアップグレード試行が次のように失敗する。
- Confluence の web インターフェイスでは "
Confluence had problems starting up...Transaction rolled back because it has been marked as rollback-only
" と表示される。 atlassian-confluence.log
には次のログ メッセージが表示される。ログ レベルが未変更/default の場合
atlassian-confluence.logYYYY-MM-DD HH:MM:SS,mmm INFO [Catalina-utility-1] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Starting Bandana XStream Content Migration for 1.1.1 format YYYY-MM-DD HH:MM:SS,mmm INFO [Catalina-utility-1] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Migrating <N-number> context(s) in Bandana YYYY-MM-DD HH:MM:SS,mmm WARN [Catalina-utility-1] [confluence.impl.hibernate.ConfluenceHibernateTransactionManager] doRollback Performing rollback. Transactions: [com.atlassian.confluence.upgrade.upgradetask.BandanaXStreamValueUpgradeTask.doDeferredUpgrade]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT (Session #<SessionID>) Showing 10 last transactions at this level out of <M-number> in total: YYYY-MM-DD HH:MM:SS,mmm ERROR [Catalina-utility-1] [atlassian.config.lifecycle.LifecycleManager] panicAndShutdown Unable to start up Confluence. Fatal error during startup sequence: confluence.lifecycle.core:pluginframeworkdependentupgrades (Run all the upgrades that require the plugin framework to be available) org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
アップグレード前に
/<confluence-install-dir>/confluence/WEB-INF/classes/log4j.properties
が変更されていて、かつlog4j.properties
内のパッケージcom.atlassian.confluence.upgrade
の行が log-levelDEBUG
に設定されている場合atlassian-confluence.logYYYY-MM-DD HH:MM:SS,mmm INFO [main] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Starting Bandana XStream Content Migration for 1.1.1 format YYYY-MM-DD HH:MM:SS,mmm INFO [main] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Migrating <N-number> context(s) in Bandana YYYY-MM-DD HH:MM:SS,mmm DEBUG [main] [atlassian.confluence.upgrade.UpgradeTask] migrateDataForKey Couldn't migrate key '<Alphanumeric-String>' for context '[com.atlassian.confluence.setup.bandana.ConfluenceBandanaContext@bdfd6df8, spaceKey='com.gliffy.autosave']' in Bandana as corresponding Class is not available or serialization failed java.lang.NullPointerException at com.gliffy.plugin.confluence.diagram.ConfluenceDiagram.equals(ConfluenceDiagram.java:129) YYYY-MM-DD HH:MM:SS,mmm WARN [Catalina-utility-1] [confluence.impl.hibernate.ConfluenceHibernateTransactionManager] doRollback Performing rollback. Transactions: [com.atlassian.confluence.upgrade.upgradetask.BandanaXStreamValueUpgradeTask.doDeferredUpgrade]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT (Session #<SessionID>) Showing 10 last transactions at this level out of <M-number> in total: YYYY-MM-DD HH:MM:SS,mmm ERROR [Catalina-utility-1] [atlassian.config.lifecycle.LifecycleManager] panicAndShutdown Unable to start up Confluence. Fatal error during startup sequence: confluence.lifecycle.core:pluginframeworkdependentupgrades (Run all the upgrades that require the plugin framework to be available) org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
note the appearance of "
Couldn't migrate key...corresponding Class is not available or serialization failed java.lang.NullPointerException at com.gliffy.plugin.confluence.diagram.ConfluenceDiagram.equals(ConfluenceDiagram.java:129)
" pattern in the stack-trace
診断
環境
Confluence が過去のバージョン (バージョン 7.4.x まで) からバージョン 7.13.x にアップグレードされている
- Gliffy Diagrams for Confluence (Gliffy 提供) がインストールされている
Diagnostic Steps
次の SQL を実行すると 1 つ以上の行数が返される。
select * from BANDANA where bandanacontext = 'com.gliffy.autosave';
行エントリの例は次のようなものです。
bandanaid | bandanacontext | bandanakey | bandanavalue |
---|---|---|---|
12345678 | com.gliffy.autosave | 47513acc9e7411ecb9090242ac120002 | <com.gliffy.plugin.confluence.diagram.ConfluenceDiagram> <version>0</version> <content>{"contentType":"application/gliffy+json"...[TRUNCATED]}</content> <isPublished>false</isPublished> <createDate>YYYY-MM-DD HH:MM:SS.mmm TIMEZONE</createDate> <versionId>0</versionId> <isOwner>false</isOwner> <isCollaborator>false</isCollaborator> <lastVersion>0</lastVersion> <isPNGAvailable>false</isPNGAvailable> <draft>false</draft> <key class="com.gliffy.plugin.confluence.diagram.ConfluenceKey"> <filename>untitled</filename> <contentEntityObjectId>83441097</contentEntityObjectId> </key> <outputXml>true</outputXml> <draftId>47513acc9e7411ecb9090242ac120002</draftId> </com.gliffy.plugin.confluence.diagram.ConfluenceDiagram> |
原因
Confluence の Bandana XStream Content Migration アップグレード タスク (com.atlassian.confluence.upgrade.upgradetask.BandanaXStreamValueUpgradeTask
) 中に Gliffy コード (at com.gliffy.plugin.confluence.diagram.ConfluenceDiagram.equals(ConfluenceDiagram.java:129)
) で NullPointerException が発生したため、アップグレードに失敗しています。
ソリューション
データベースの変更を行う場合は必ず事前にバックアップを取得してください。可能な場合は、まずステージング サーバーで SQL コマンドの変更、挿入、更新、または削除を行うようにします。
- 現在の破損しているセットアップをアップグレード前の状態にロールバックします (Confluence のデータベースをアップグレード前のスナップショットにリストアすることも可)
- 完了したらリストア済みの Confluence インスタンスを起動し、リストアに成功していて、Confluence が以前のバージョンで正常に動作することを確認します。
- Confluence が正常に動作することを確認したら Confluence をシャットダウンします。
Confluence のデータベースに対して次の SQL を実行し、問題のある Gliffy データを削除します。
delete from BANDANA where bandanacontext = 'com.gliffy.autosave';
The Gliffy diagrams themselves are saved as attachments on Confluence pages. These rows in the bandana table can be deleted without adverse consequences (source: Uninstall and reinstall Gliffy).
- Gliffy の下書きデータが削除されたので Confluence を再度起動し、引き続き正常に動作することを確認します。
- Confluence が正常に動作することを確認したら再びシャットダウンし、Confluence のアップグレードをトリガーします。
Bandana XStream Content Migration アップグレード タスクでエラーが発生しないことと、
atlassian-confluence.log
で次のようなメッセージから確認できる Confluence のアップグレード全体の成功状況で、進捗を追跡します。atlassian-confluence.logYYYY-MM-DD HH:MM:SS,mmm INFO [main] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Starting Bandana XStream Content Migration for 1.1.1 format YYYY-MM-DD HH:MM:SS,mmm INFO [main] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Migrating <N-number> context(s) in Bandana YYYY-MM-DD HH:MM:SS,mmm INFO [main] [atlassian.confluence.upgrade.UpgradeTask] doDeferredUpgrade Finished Bandana XStream Content Migration YYYY-MM-DD HH:MM:SS,mmm INFO [main] [atlassian.confluence.upgrade.AbstractUpgradeManager] entireUpgradeFinished Upgrade completed successfully