ProductAssetListener may cause SegmentNotFoundException and performance issues
This issue has been fixed with AEM 6.5.8. For AEM 6.4.6+, disabling the OSGi component com.adobe.cq.commerce.impl.asset.ProductAssetListener
is a workaround.
Description description
Environment
Adobe Experience Manager (AEM)
Issue
ProductAssetListener
may cause SegmentNotFoundException and performance issues in AEM 6.5.6, AEM 6.5.7 and AEM 6.4.6+.
Typical error message of SegmentNotFoundException by this issue contains the stacktrace like below.
*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.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153)
The performance issues can be slowness, no response, and replication queue delay/block. When the issue begins, following message appear in error.log
.
*WARN* [
sling-oak-observation-4]
com.adobe.cq.commerce.impl.asset.ProductAssetListener NODE_MOVED event
for /content/dam/<
asset>
/<
metadata>
does not have required event info
Thread dumps during the issue contains a sling-oak-observation thread with ProductAssetListner
is running aggressively.
“sling-oak-observation-4” prio=5 tid=0xd7 nid=0xffffffff runnable
…
at com.adobe.cq.commerce.impl.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153)
Resolution resolution
This issue has been fixed with AEM 6.5.8.
Adobe Experience Manager 6.5 Latest Service Pack Release Notes
Product asset reference update causes replication threads to be in the wait state until the ProductAssetListener
thread completes its commits to the JCR (NPR-35269).
For AEM 6.4.6+, disabling the OSGi component com.adobe.cq.commerce.impl.asset.ProductAssetListener
is a workaround. To do that, you can use OSGi Component Disabler in the ACS AEM Commons.
How to configure Component Disabler:
-
In CRX/DE, create a sling:OSGiConfig node as
/apps/<your project>/config/com.adobe.acs.commons.util.impl.ComponentDisabler
-
Add a String
[
]
property with name = “components”, value =[
“com.adobe.cq.commerce.impl.asset.ProductAssetListener
”]