From a3d7e03d90aab180047505241e5a4a95440b74ff Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Thu, 20 Aug 2026 12:00:00 +0000 Subject: [PATCH] wiki: Gruppenpruefung wartet auf die NetworkPolicy (#0103) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- apps/production/wikijs-gruppenpruefung.yaml | 29 +++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) 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