Scripts de invalidación personalizados de AEM Dispatcher

Cuando Adobe realizó el cambio para comenzar a usar etc.clientlibs como directorio, encontramos problemas con algunas configuraciones de invalidación de caché de Dispatcher existentes. Para ciertos archivos de caché, Dispatcher puede eliminar el archivo en el disco cuando se llama a un vaciado. Los directorios no deben eliminarse y Dispatcher colocará un archivo .stat dentro de ellos. La marca de tiempo de este archivo .stat es lo que Compatcher comprueba al decidir si actualizar el archivo de caché solicitado o no.

Sin embargo, debido a ese molesto carácter de . dentro del nombre de la caché de la biblioteca del cliente, Dispatcher fue engañado al pensar que la caché (etc.clientlibs) debería eliminarse al invalidar cualquier archivo /etc . Esto causaba más problemas cuando intentaba recrear el directorio. En la siguiente solicitud, es posible que no pueda crear el directorio etc.clientlibs en el nivel del sistema de archivos debido a una condición de carrera. Por lo tanto, no se crearían bibliotecas cliente almacenadas en caché, y hasta que esto se corrigiera manualmente (recrear el directorio a mano), todas las solicitudes llegarían a los publicadores.

Para solucionar esto, escribimos un script de shell que fue activado por Dispatcher durante la invalidación. Para llamar al script, agregamos lo siguiente a nuestra configuración de Dispatcher:

/invalidateHandler "/opt/dispatcher/scripts/invalidate.sh" [1]

Esto ejecutaba nuestro script de shell invalidate.sh [2] cada vez que se invalidaba la caché de nuestro Dispatcher desde un agente de vaciado, lo que desencadenaba una recreación del directorio etc.clientlibs y evitaba nuestra condición de carrera.

[1] https://gitlab.arbory.digital/arbory-digital-public/aem-dispatcher-public/blob/master/etc/httpd/conf.d/invalidate.inc#L14
[2] https://gitlab.arbory.digital/arbory-digital-public/aem-dispatcher-public/blob/master/opt/dispatcher/scripts/invalidate.sh

Drew Oliver Cummings
Desarrollador de AEM en Arbory Digital

Escritor y desarrollador de software con experiencia en redacción técnica, desarrollo de Python y AEM.

Contacta con Drew en Linkedin

¿Te gusta lo que escuchaste? ¿Tiene preguntas sobre lo que es adecuado para usted? ¡Nos encantaría hablar! Contáctenos

Episodios de podcast

category
AEM Technical Help, AEM News, Arbory Digital News, Customer Stories, Podcasts
tags
Dispatcher
number of rows
1