ProductAssetListener が SegmentNotFoundException およびパフォーマンスの問題を引き起こす可能性がある
説明 description
環境
- Adobe Experience Manager
問題/症状
AEM 6.5.6、AEM 6.5.7 およびAEM 6.4.6 以降で SegmentNotFoundException とパフォーマンスの問題が発生する場合があります。
この問題による SegmentNotFoundException の一般的なエラーメッセージには、次のようなスタックトレースが含まれています。
*ERROR* sling-oak-observation-4 org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener Segment not found: 6376814a-9273-4df8-aedd-ec5e6eb7ab52. SegmentId age=238801954ms,segment-generation=GCGeneration
org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 6376814a-9273-4df8-aedd-ec5e6eb7ab52 not found … at com.adobe.cq.commerce.impl.ProductAssetListener.onEvent(ProductAssetListener.java:153)
パフォーマンスの問題には、速度低下、無応答、レプリケーションキューの遅延/ブロックがあります。問題が発生すると、次のメッセージが error.log に表示されます。
*WARN* sling-oak-observation-4 com.adobe.cq.commerce.impl.asset.ProductAssetListener NODE_MOVED イベント (https://experienceleague.adobe.com/content/dam/asset/metadata?lang=ja) には、必要なイベント情報がありません
問題中のスレッドダンプには、ProductAssetListner を含む sling-oak-observation スレッドが積極的に実行されています。
com.adobe.cq.commerce.impl.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153) で、 "sling-oak-observation-4" prio=5 tid=0xd7 nid=0xffffffff runnable …
解決策 resolution
この問題は、AEM 6.5.8 で修正されました。
製品アセットの参照の更新により、ProductAssetListener スレッドが JCR へのコミットを完了するまで、レプリケーションスレッドが待機状態になる(NPR-35269)。
AEM 6.4.6 以降では、OSGi コンポーネントcom.adobe.cq.commerce.impl.asset.ProductAssetListener を無効にすることが回避策になります。 それには、ACS AEM Commons の Component Disabler を使用できます。
Component Disabler の設定方法:
-
CRX/DE で、sling:OSGiConfig ノードを/apps/your project/config/com.adobe.acs.commons.util.impl.ComponentDisabler として作成します。
-
名前= "components"、値= "com.adobe.cq.commerce.impl.asset.ProductAssetListener"の String プロパティを追加します。