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
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