Verbesserung
Wichtig
Detail
Fehlerbehebung
Detail
Beim Start der Applikation wird ein Lock angefordert, um zu verhindern, dass im Cluster-Betrieb mehrere Knoten gleichzeitig starten und gleichzeitig Initialisierungsarbeiten durchführen.
Aktuell ist das Timeout für dieses Lock aber inkonsistent konfiguriert. Das Timeout für das Lock sind 30min, der Startup wartet aber nur 10min um das Lock zu erhalten. Schlägt ein Startup fehl und ein Lock bleibt in der Datenbank zurück, schlägt sicher auch der nächste und übernächste Startup fehl.
Verbesserung
Die Wartezeit für ein Startup-Lock muss mindestens so lang sein, wie der Timeout für das Lock. U.u. kann es sinnvoll sein, die Wartezeit länger als das Lock-Timeout zu konfigurieren, wenn mehrere Cluster-Knoten starten.
Vgl. tl:StartStopListenerConfig, tl:ConfiguredLockService
Test
- Um das Problem in der Entwicklungsumgebung reproduzieren zu können müssen die Einstellungen in /com.top_logic/src/main/webapp/WEB-INF/conf/devel-ephemeral-locks.config.xml auskommentiert werden (ansonsten hat die Anwendung keine persistenten Locks).
- Anwendung starten und während des Start-Vorgangs abschießen.
- Anwendung erneut starten.
- Die Anwendung muss Log-Meldungen der Bauart Could not lock startup token sleeping 10 sec. produzieren.
- Nach 10min muss die Anwendung starten (neuer Lock-Timeout für das Startup-Token).