Benutzerdefinierte AEM Dispatcher-Invalidierungsskripte

Als Adobe die Änderung vornahm, etc.clientlibs als Verzeichnis zu verwenden, traten Probleme mit einigen vorhandenen Konfigurationen für die Invalidierung des Dispatcher-Cache auf. Bei bestimmten Cache-Dateien löscht der Dispatcher möglicherweise die Datei auf der Festplatte, wenn eine Leerung aufgerufen wird. Verzeichnisse sollten nicht gelöscht werden und der Dispatcher legt eine .stat Datei darin ab. Der Zeitstempel dieser .stat Datei wird vom Dispatcher überprüft, wenn er entscheidet, ob die angeforderte Cache-Datei aktualisiert werden soll oder nicht.

Aufgrund dieses lästigen . Zeichens im Namen des Client-Bibliothekscaches wurde der Dispatcher jedoch zu der Annahme verleitet, dass der Cache (etc.clientlibs ) gelöscht werden sollte, wenn eine /etc Dateien ungültig gemacht wird. Dies führte zu weiteren Problemen, wenn versucht wurde, das Verzeichnis neu zu erstellen. Bei der nächsten Anforderung kann es aufgrund einer Racebedingung nicht möglich sein, das etc.clientlibs Verzeichnis auf Dateisystemebene zu erstellen. Somit wurden keine zwischengespeicherten Clientbibliotheken erstellt, und bis dies manuell behoben wurde (das Verzeichnis von Hand neu erstellen), trafen alle Anforderungen auf die Verleger.

Um dies zu beheben, haben wir ein Shell-Skript geschrieben, das vom Dispatcher während der Invalidierung ausgelöst wurde. Um das Skript aufzurufen, haben wir unserer Dispatcher-Konfiguration Folgendes hinzugefügt:

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

Dies führte unser invalidate.sh [2] -Shell-Skript jedes Mal aus, wenn der Cache unseres Dispatchers von einem Flush-Agenten ungültig gemacht wurde, wodurch eine Neuerstellung des etc.clientlibs -Verzeichnisses ausgelöst und unsere Race-Bedingung verhindert wurde.

[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
AEM Developer bei Arbory Digital

Autor und Softwareentwickler mit Erfahrung in technischer Redaktion, Python-Entwicklung und AEM.

Kontaktieren Sie Drew auf Linkedin

Gefällt Ihnen, was Sie gehört haben? Haben Sie Fragen dazu, was für Sie das Richtige ist? Wir würden uns freuen, mit Ihnen zu sprechen! Kontaktieren Sie uns

Podcast-Episoden

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