AEM Forms 6.5でのワークフロー同期中のSegmentNotFoundExceptionの解決
この記事では、スケジュールされたメンテナンス後にAdobe Experience Manager(AEM)Forms 6.5で発生する可能性のあるワークフロー同期エラーとSegmentNotFoundException エラーに対処する方法、特に完全なリポジトリコンパクションが大量の書き込み操作と重なる場合の対処方法について説明します。
説明 description
環境
Adobe Experience Manager(AEM)Forms 6.5 (OSGi、スタンドアロン)
問題/症状
- スケジュールされたメンテナンスの後、ワークフローの同期が失敗するか、見つかりません。
- フォームの送信とワークフローは、影響を受ける期間中は続行できません。
- この問題は、しばらくすると自動的に解決します。
- 影響を受けるワークフロージョブのログに次のエラーが表示されます:
org.apache.jackrabbit.oak.segment.SegmentNotFoundException - この問題は、軽いメンテナンス操作中ではなく、完全なコンパクションが実行される日に固有です。
原因
この問題は、完全なコンパクション プロセスが、アクティブなワークフロージョブによって参照されている旧世代のTAR ファイルを再利用するために発生します。 重い書き込み操作(完全なLDAP同期など)が完全なコンパクションと重複する場合、進行中のワークフローで必要なセグメントが削除され、SegmentNotFoundException個のエラーが発生します。
解決策 resolution
この問題を解決するには、次の手順に従います。
-
より低い(実稼動以外の)環境で手順を検証して、コマンド、期待される出力、および全体的なプロセスを把握します。
-
本番環境に変更を加える前に、リポジトリの完全で一貫性のあるバックアップまたはスナップショットを作成します。
-
oak-run ツールを使用して、リポジトリの一貫性チェックを実行します。
-
リポジトリーレベルの操作を実行する前に、AEM インスタンスがオフラインであることを確認します。
-
次のコマンドを実行します(
<path-to-oak-run.jar>と<path-to-repository>を実際のパスに置き換えます)。java -jar <path-to-oak-run.jar> check <path-to-repository> -
ダウンタイムを最小限に抑えるために、可能であれば、本番リポジトリのバックアップコピーに対して分析を実行します。
-
-
特に書き込み量の多い操作の際に、重複を避けるために、LDAP同期と完全コンパクションタスクのスケジュールを確認して調整します。 完全圧縮を別の時間に実行するか、圧縮中に多量の書き込み操作が発生しないようにすることを検討してください。
-
変更を実装した後、ワークフローの実行とログを監視して、
SegmentNotFoundExceptionエラーの繰り返しを確認します。 -
AEM error.logとワークフローログで
SegmentNotFoundExceptionパターンを確認します。 -
問題が解決しない場合は、一貫性チェックを繰り返し、タスクのスケジュール設定をさらに調整します。