Content Indexing ページを表示すると、ArithmeticException または NullPointerException が発生する
Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.
Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles for non-Data Center-specific features may also work for Server versions of the product, however they have not been tested. 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 バージョン 7.7 以上において、Confluence 管理者が Content Indexing ページから検索インデックスを再構築しようとすると、次のエラー メッセージが表示される。
We can't check the status of your index. You may have lost your connection. Refresh the page to try again.
これによりインデックスの再構築プロセスを開始することができない。
Arithmetic Exception:
以下のエラーも atlassian-confluence.log
に表示される。
2021-11-02 17:09:48,955 ERROR [http-nio-8090-exec-1] [common.error.jersey.ThrowableExceptionMapper] toResponse Uncaught exception thrown by REST service: / by zero
-- referer: https://localhost:8090/plugins/servlet/rebuildindex | url: /rest/rebuildindex/latest/job | traceId: 8a8faee1f9816055 | userName: admin1
java.lang.ArithmeticException: / by zero
at com.atlassian.confluence.plugins.rebuildindex.status.ReIndexJobJson.<init>(ReIndexJobJson.java:65)
at com.atlassian.confluence.plugins.rebuildindex.rest.ReIndexJobResource.lambda$getMostRecentOrRunning$0(ReIndexJobResource.java:46)
at java.base/java.util.Optional.map(Unknown Source)
at com.atlassian.confluence.plugins.rebuildindex.rest.ReIndexJobResource.getMostRecentOrRunning(ReIndexJobResource.java:45)
...
NullPointer Exception
また、atlassian-confluence.log
に次のエラーも表示されます。
2023-07-11 09:23:05,060 ERROR [https-jsse-nio-8443-exec-10] [common.error.jersey.ThrowableExceptionMapper] toResponse Uncaught exception e1dd1bae-b6ac-41e5-957b-2e088f83092a thrown by REST service: null
-- url: /rest/rebuildindex/latest/job | userName: admin | referer: https://localhost:8090/plugins/servlet/rebuildindex | traceId: 91743b933cac0450
java.lang.NullPointerException
at com.atlassian.confluence.plugins.rebuildindex.status.ReIndexNodeStatusJson.<init>(ReIndexNodeStatusJson.java:33)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
...
診断
By design, Confluence would then invoke the endpoint <Confluence-Base-URL>/plugins/servlet/rebuildindex
when loading up the Content Indexing page. This is to check what's the current status of the reindex for this Confluence cluster, in which is being stored in the BANDANA table.
補足情報
次の SQL クエリを実行して、Confluence クラスターの再インデックスのステータスを確認できます。
SELECT * FROM BANDANA WHERE BANDANAKEY='reindex.status'
原因
この場合、(データベース内の) 再インデックス プロセスのステータスが不適切に保存されています。つまり、propagatingProgress の合計が 0
であるにもかかわらず、進行中のインデックス伝播プロセス (<stage>PROPAGATING</stage>
) があると識別されています。
このため、Confluence が再インデックスの進捗を計算しようとすると算術例外が発生します。
回避策
ここで、この問題を回避するには、BANDANA
テーブルの再インデックスのステータスをリセットする必要があります。これを行うには、以下の手順を実行します。
- Confluence クラスターをスケール ダウンして、1 つのノードだけを稼働させます 。
- このノードを停止します
- このノードのローカル ホームにある
<Confluence-Home>/journal
および<Confluence-Home>/index
フォルダを削除します <Shared-Home>/index-snapshots
フォルダから既存のインデックスのスナップショットをすべて削除します以下のSQLクエリを実行して、
BANDANA
テーブルからreindex.state
とインデックス伝播ステータスのレコードを削除します。
データベースの変更を行う場合は必ず事前にバックアップを取得してください。可能な場合は、まずステージング サーバーで SQL コマンドの変更、挿入、更新、または削除を行うようにします。
DELETE FROM BANDANA WHERE BANDANAKEY='reindex.status';
Start Confluence again
Once Confluence is up, the reindex should start automatically within a few minutes and progress can be monitored from atlassian-confluence-index.log. If reindex doesn't start automatically, then, please access Confluence Indexing page and re-trigger the index rebuild.
Thereindex.state
record in theBANDANA
table would be repopulated once the reindex is finished.