diff --git a/apps/production/wikijs-gruppenpruefung.yaml b/apps/production/wikijs-gruppenpruefung.yaml index b5136a6..c553c7f 100644 --- a/apps/production/wikijs-gruppenpruefung.yaml +++ b/apps/production/wikijs-gruppenpruefung.yaml @@ -59,13 +59,32 @@ spec: - | set -eu - # Gegenprobe zuerst: Antwortet die Datenbank ueberhaupt? Ohne diese - # Zeile sieht "0 Nutzer ohne Gruppe" bei unerreichbarer DB genauso aus - # wie ein sauberes Ergebnis - stiller Erfolg ist hier das eigentliche - # Risiko, nicht der Fund. + # Warten, bis die Datenbank erreichbar ist - und zwar wirklich warten: + # Die NetworkPolicy-Regeln fuer einen NEU erzeugten Pod sind beim Start + # des Containers noch nicht programmiert. In diesem Fenster wird die + # Verbindung abgewiesen ("Connection refused"), obwohl Ziel, Marken und + # Regel korrekt sind. Gemessen am 2026-08-20: sofort nach dem Start + # abgewiesen, nach 20 Sekunden erfolgreich. + # + # Ohne diese Schleife scheitert der Job jede Nacht am Wettlauf und meldet + # einen Fehler, den niemand nachvollziehen kann - oder schlimmer: Man + # gewoehnt sich an den roten Job. + bereit="" + for versuch in 1 2 3 4 5 6 7 8 9 10 11 12; do + if psql -Atc 'select 1;' >/dev/null 2>&1; then bereit="ja"; break; fi + sleep 5 + done + if [ -z "$bereit" ]; then + echo "FEHLER: Datenbank nach 60 s nicht erreichbar - Pruefung nicht gelaufen." + exit 1 + fi + + # Gegenprobe: Ohne sie sieht "0 Nutzer ohne Gruppe" bei einer leeren oder + # falschen Datenbank genauso aus wie ein sauberes Ergebnis - stiller + # Erfolg ist hier das groessere Risiko als ein Fund. gesamt="$(psql -Atc 'select count(*) from users;')" if [ -z "$gesamt" ] || [ "$gesamt" -eq 0 ]; then - echo "FEHLER: keine Nutzer gelesen - Datenbank nicht erreichbar oder leer." + echo "FEHLER: keine Nutzer gelesen - Datenbank leer oder falsche Datenbank." exit 1 fi