El sitio de AEM muestra un "error inesperado" debido a problemas con la API de uso de JS
Si el sitio público de AEM se cae intermitentemente con un mensaje de "Error inesperado", podría deberse a problemas en los componentes de la API de uso de JavaScript. Reinicie los pods para restaurar el servicio y, a continuación, sustituya el código obsoleto por Modelos Sling y mejore la gestión de errores para evitar que vuelva a ocurrir.
Descripción description
Entorno
Adobe Experience Manager as a Cloud Service (AEMaaCS): sitios
Problema/Síntomas
El sitio web público experimenta un tiempo de inactividad intermitente, que a menudo muestra un mensaje de error y no puede cargar determinadas páginas. Los registros apuntan a problemas de creación de instancias de la API de uso de JavaScript y errores HTTP 500.
Los síntomas incluyen:
- Error inesperado. Estamos tratando de ponerlo en línea. mensaje en páginas afectadas.
- Errores de API de uso de JavaScript como: La API de uso no puede crear correctamente una instancia de linkDropdownLogic.js.
- Excepciones de Sling debido a referencias no válidas o lógica de script.
- Algunas páginas no se cargan, mientras que otras (como la página principal) se recargan correctamente.
Causa
La interrupción se debe a un error de JavaScript en un archivo personalizado: La API de uso no puede crear correctamente el identificador _____.js.
- El código utilizado para destruir ECMAScript:
for (const [ _, res] of items)
- Esta sintaxis es incompatible con el motor Rhino utilizado por Sightly de AEM.
- El error se producía cuando la secuencia de comandos intentaba procesar estructuras de contenido incompletas durante la replicación.
Por qué ocurrió en una sola secuencia
Aunque todos los pods de publicación tenían el mismo código, solo uno falló debido a:
- Replicación de contenido incompleta: el pod estaba en un estado temporal con contenido parcialmente replicado.
- Gestión de iteradores no segura: el código JS no pudo gestionar las estructuras de datos incompletas o que faltaban.
- Agotamiento de recursos: el bucle de error consumió recursos del sistema, lo que provocó un bloqueo.
- Sin recuperación automática: el pod no se pudo recuperar sin un reinicio manual debido al agotamiento persistente de los recursos.
Insight técnico
- Limitación del motor: El motor Rhino JS no admite la destrucción en iteradores Java.
- Comportamiento del código: puede funcionar en condiciones normales, pero falla bajo estrés o datos parciales.
- Impacto: Un pod entró en un bucle de error, mientras que otros continuaron ejecutándose normalmente.
Resolución resolution
Para resolver el problema de la API de uso de JavaScript:
- Reinicie todos los pods de publicación para estabilizar temporalmente el entorno. Esto borra los errores HTTP 500 y restaura la disponibilidad del sitio.
- A continuación, revise las clases del modelo de JavaScript que causan errores de creación de instancias. Reemplace los componentes de la API de uso de JavaScript obsoletos por modelos Sling basados en Java y asegúrese de que todas las clases a las que se hace referencia tengan los métodos de acceso adecuados.
- Actualice el código problemático para evitar el uso de la destrucción de ECMAScript en los iteradores Java. En su lugar, utilice patrones de iterador de Java estándar. Agregue comprobaciones nulas y control de errores para administrar de forma segura las estructuras de contenido incompletas.
- Añada bloques try/catch en las secuencias de comandos de la API de uso de JavaScript para evitar errores completos cuando falte contenido. Diseñe componentes para degradarlos correctamente y evitar errores en cascada.
- Finalmente, revise las dependencias de los componentes y considere la posibilidad de utilizar contenido de reserva en caché para elementos críticos como la navegación. Implemente disyuntores para componentes que dependan de servicios externos.
Lectura relacionada
Funciones obsoletas y eliminadas | Adobe Experience Manager