wiki: Gruppenpruefung wartet auf die NetworkPolicy (#0103)
Der erste echte Lauf scheiterte mit "Connection refused", obwohl Service, Endpunkt, Portname, Pod-Marken und Policy-Regel alle korrekt waren. Ursache gemessen, nicht geraten: Die NetworkPolicy-Regeln fuer einen NEU erzeugten Pod sind beim Start des Containers noch nicht programmiert. Im selben Pod nacheinander: psql sofort abgewiesen, roher TCP-Test zu, nach 20 Sekunden psql erfolgreich. Ein frueherer nc-Test aus einem separaten Pod lief zufaellig spaet genug und sah sauber aus - er hat mich zunaechst in die falsche Richtung geschickt. Der Job wartet jetzt bis zu 60 s auf Erreichbarkeit und meldet erst danach einen Fehler. Ohne das scheiterte er jede Nacht an einem Wettlauf, und man gewoehnt sich an den roten Job - genau die Abstumpfung, die #0104 abgestellt hat. ⚠️ Dieselbe Klasse kann andere kurzlebige Jobs im Namespace treffen (wikijs-backup, synapse-backup, restore-drill). Nicht geprueft, eigener Befund.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user