ProductAssetListener 可能會導致 SegmentNotFoundException 和效能問題
說明 description
環境
- Experience Manager
問題/症狀
AEM 6.5.6、AEM 6.5.7和AEM 6.4.6+中,ProductAssetListener可能會造成SegmentNotFoundException和效能問題。
此問題導致的SegmentNotFoundException的典型錯誤消息包含如下的堆棧跟蹤。
*ERROR* sling-oak-ook-oversiton-4 org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener區段找不到:6376814a-9273-4df8-aedd-ec5e6eb7ab52。 SegmentId age=238801954ms,segment-generation=GCGeneration
org.apache.jackrabbit.oak.segment.SegmentNotFoundException:區段6376814a-9273-4df8-aedd-ec5e6eb7ab52找不到……在com.adobe.cq.commerce.impl.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153)
效能問題可能是緩慢、無回應和複寫佇列延遲/封鎖。當問題開始時,error.log中會出現下列訊息。
*警告* sling-oak-ook-observation-4 com.adobe.cq.commerce.impl.asset.ProductAssetListener NODE_MOVED事件(用於/content/dam/asset/metadata)沒有必要的事件資訊
問題期間執行緒傾印包含ProductAssetListner正積極執行的sling-oak-ook-oversion執行緒。
"sling-oak-ooveration-4" prio=5 tid=0xd7 nid=0xffffffrnable… at com.adobe.cq.commerce.impl.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153)
解析度 resolution
這個問題已經由 AEM 6.5.8 解決。
產品資產參考更新會導致復寫執行緒處於等候狀態,直到ProductAssetListener執行緒完成對JCR的提交為止(NPR-35269)。
若是AEM 6.4.6+,停用OSGi元件com.adobe.cq.commerce.impl.asset.ProductAssetListener為因應措施。 為此,您可以使用 ACS AEM Commons 中的元件停用程式。
如何設定元件停用程式:
-
在CRX/DE中,將sling:OSGiConfig節點建立為/apps/your project/config/com.adobe.acs.commons.util.impl.ComponentDisabler
-
新增名稱為= "components"、值= "com.adobe.cq.commerce.impl.asset.ProductAssetListener"的字串屬性