ProductAssetListener puede causar SegmentNotFoundException y problemas de rendimiento
Descripción description
Entorno
- Experience Manager
Problemas/Síntomas
ProductAssetListener puede causar problemas de SegmentNotFoundException y de rendimiento en AEM 6.5.6, AEM 6.5.7 y AEM 6.4.6+.
El mensaje de error típico de SegmentNotFoundException por este problema contiene el seguimiento de pila como se muestra a continuación.
*ERROR* sling-oak-observation-4 org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener Segmento no encontrado: 6376814a-9273-4df8-aedd-ec5e6eb7ab52. SegmentId age=238801954ms,segment-generation=GCGeneration
org.apache.jackrabbit.oak.segment.SegmentNotFoundException: No se encuentra el segmento 6376814a-9273-4df8-aedd-ec5e6eb7ab52 … en com.adobe.cq.commerce.impl.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153)
Los problemas de rendimiento pueden ser lentitud, falta de respuesta y retraso/bloqueo de la cola de replicación. Cuando comienza el problema, el siguiente mensaje aparece en error.log.
*WARN* sling-oak-observation-4 com.adobe.cq.commerce.impl.asset.ProductAssetListener NODE_MOVED event para /content/dam/asset/metadata no tiene la información de evento necesaria
Los volcados de subprocesos durante el problema contienen un subproceso de observación de sling-oak con ProductAssetListner se está ejecutando agresivamente.
"sling-oak-observation-4" prio=5 tid=0xd7 nid=0xffffffff ejecutable … en com.adobe.cq.commerce.impl.asset.ProductAssetListener.onEvent(ProductAssetListener.java:153)
Resolución resolution
Este problema se ha corregido con AEM 6.5.8.
La actualización de referencia de recursos de producto hace que los subprocesos de replicación estén en estado de espera hasta que el subproceso ProductAssetListener complete sus confirmaciones para el JCR (NPR-35269).
Para AEM versión 6.4.6 o posterior, la desactivación del componente OSGi com.adobe.cq.commerce.impl.asset.ProductAssetListener es una solución alternativa. Para ello, puede usar el desactivador de componentes en ACS AEM Commons.
Cómo configurar el desactivador de componentes:
-
En CRX/DE, cree un nodo sling:OSGiConfig como /apps/your project/config/com.adobe.acs.commons.util.impl.ComponentDisabler
-
Agregue una propiedad String con el nombre = "componentes", valor = "com.adobe.cq.commerce.impl.asset.ProductAssetListener"