Fehlerkatalog Tiefenfinalisierung

Dieser Katalog ist fuer echte Diagnose gedacht. Jeder Fall enthaelt Fehlerbild, Ursache, Diagnosebefehle, erwartete Hinweise, Loesung und Lernwert.

← Zurueck zum Index

F01. Container startet nicht

Fehlerbild: Container startet nicht.

Wahrscheinliche Ursache: Docker Engine laeuft nicht, Image kann nicht gezogen werden oder Port ist bereits belegt.

Diagnose:

docker ps
docker compose ps
docker compose logs postgres --tail=80

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Docker starten, Portkonflikt loesen, Container neu erzeugen mit docker compose up -d --force-recreate.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F02. Port 5432 ist belegt

Fehlerbild: Port 5432 ist belegt.

Wahrscheinliche Ursache: Lokale PostgreSQL Installation oder alter Container nutzt den Port.

Diagnose:

lsof -i :5432 || netstat -ano | findstr 5432
docker ps --format "table {{.Names}}	{{.Ports}}"

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Lokalen Dienst stoppen oder Portmapping im Compose anpassen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F03. PostgreSQL Login falsch

Fehlerbild: PostgreSQL Login falsch.

Wahrscheinliche Ursache: Falscher Host, falscher Benutzer oder falsches Passwort in application.yml/.env.

Diagnose:

docker compose logs postgres --tail=50
psql -h localhost -U order_user -d orderdb

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Credentials aus .env.example uebernehmen und Container neu starten.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F04. Flyway Migration schlaegt fehl

Fehlerbild: Flyway Migration schlaegt fehl.

Wahrscheinliche Ursache: SQL ist nicht idempotent, Tabelle existiert schon oder Schema fehlt.

Diagnose:

select * from flyway_schema_history order by installed_rank;
mvn -pl runtime spring-boot:run

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Migration nicht ueberschreiben, neue V-Version erstellen und Fehler sauber reparieren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F05. Outbox bleibt auf NEW

Fehlerbild: Outbox bleibt auf NEW.

Wahrscheinliche Ursache: Relay laeuft nicht, Scheduling ist deaktiviert oder RabbitMQ Publish scheitert.

Diagnose:

select event_id,event_type,status from outbox.events order by event_id desc;
docker compose logs rabbitmq --tail=80

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: OutboxRelayJob pruefen, RabbitMQ Verbindung pruefen, Relay Delay kontrollieren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F06. Outbox steht auf FAILED

Fehlerbild: Outbox steht auf FAILED.

Wahrscheinliche Ursache: RabbitMQ nicht erreichbar oder Routing Key/Exchange falsch.

Diagnose:

select event_id,event_type,status from outbox.events where status = 'FAILED';
curl -u order_user:order_pass http://localhost:15672/api/exchanges/%2F/order.events

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Exchange/Queue/Binding aus definitions.json neu laden und App neu starten.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F07. RabbitMQ Queue bleibt leer

Fehlerbild: RabbitMQ Queue bleibt leer.

Wahrscheinliche Ursache: Binding fehlt oder Publisher nutzt falschen Routing Key.

Diagnose:

curl -u order_user:order_pass http://localhost:15672/api/bindings
docker compose logs runtime --tail=100

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Routing Key order.accepted und Exchange order.events abgleichen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F08. Billing Consumer reagiert nicht

Fehlerbild: Billing Consumer reagiert nicht.

Wahrscheinliche Ursache: Listener-Queue falsch, Bean nicht geladen oder AMQP Starter fehlt.

Diagnose:

grep -R "@RabbitListener" -n maven-project
mvn -pl runtime dependency:tree | grep amqp

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: spring-boot-starter-amqp pruefen und Queue-Namen exakt vergleichen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F09. WireMock Payment liefert 404

Fehlerbild: WireMock Payment liefert 404.

Wahrscheinliche Ursache: Mapping-Datei fehlt oder URL stimmt nicht.

Diagnose:

curl http://localhost:8089/__admin/mappings
curl -i -X POST http://localhost:8089/payment/authorize

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Mapping in containers/wiremock/mappings kontrollieren und Container neu starten.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F10. Payment Timeout

Fehlerbild: Payment Timeout.

Wahrscheinliche Ursache: Provider reagiert langsam, Timeout zu kurz oder Resilience-Regel greift.

Diagnose:

curl -v http://localhost:8089/__admin/requests
grep -R "timeout" -n maven-project/runtime/src/main/resources

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Timeout bewusst konfigurieren und Retry/Circuit Breaker Metriken pruefen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F11. Keycloak Token kann nicht geholt werden

Fehlerbild: Keycloak Token kann nicht geholt werden.

Wahrscheinliche Ursache: Realm import nicht fertig, Client-ID falsch oder Keycloak startet noch.

Diagnose:

curl http://localhost:8082/realms/order-platform/.well-known/openid-configuration
./scripts/security/get-keycloak-token.sh order-admin admin

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Keycloak Logs abwarten, Realm-Datei pruefen, Client order-runtime nutzen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F12. API liefert 401

Fehlerbild: API liefert 401.

Wahrscheinliche Ursache: Kein Token, Token abgelaufen oder falscher Issuer.

Diagnose:

echo $TOKEN | cut -d. -f2 | base64 -d
curl -i http://localhost:8080/api/orders/ORD-1

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Token neu holen und issuer-uri mit Keycloak Realm abgleichen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F13. API liefert 403

Fehlerbild: API liefert 403.

Wahrscheinliche Ursache: Token ist gueltig, aber Rolle fehlt.

Diagnose:

echo $TOKEN | cut -d. -f2 | base64 -d | jq .realm_access.roles
grep -R "hasRole" -n maven-project/runtime/src/main/java

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Benutzerrolle in Keycloak ergaenzen oder Endpoint-Regel korrigieren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F14. Prometheus findet Runtime nicht

Fehlerbild: Prometheus findet Runtime nicht.

Wahrscheinliche Ursache: Runtime laeuft nicht, host.docker.internal fehlt oder Actuator nicht exponiert.

Diagnose:

curl http://localhost:8080/actuator/prometheus
curl http://localhost:9090/targets

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: management.endpoints exposure pruefen und target anpassen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F15. Grafana zeigt keine Daten

Fehlerbild: Grafana zeigt keine Daten.

Wahrscheinliche Ursache: Datasource falsch oder Prometheus hat keine Targets.

Diagnose:

curl http://localhost:9090/api/v1/targets
docker compose logs grafana --tail=80

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Grafana Datasource URL http://prometheus:9090 pruefen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F16. Maven Multi-Module Build bricht ab

Fehlerbild: Maven Multi-Module Build bricht ab.

Wahrscheinliche Ursache: Modulabhaengigkeit falsch, Parent fehlt oder Version nicht konsistent.

Diagnose:

mvn -q -DskipTests package
mvn -pl runtime -am dependency:tree

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Parent POM und module Reihenfolge pruefen, keine zyklischen Abhaengigkeiten zulassen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F17. Domain importiert Spring

Fehlerbild: Domain importiert Spring.

Wahrscheinliche Ursache: Architekturregel verletzt: Domain darf keine Framework-Klassen kennen.

Diagnose:

grep -R "org.springframework" maven-project/domain/src/main/java || true

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Import entfernen, Port im ports-Modul definieren und Adapter im adapters-Modul implementieren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F18. Docker Image baut nicht

Fehlerbild: Docker Image baut nicht.

Wahrscheinliche Ursache: Jar fehlt, Dockerfile zeigt auf falschen Pfad oder Build vor Image fehlt.

Diagnose:

mvn -pl runtime -am package
docker build -f Dockerfile.runtime .

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Maven Build zuerst ausfuehren und COPY Pfad im Dockerfile pruefen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F19. Kubernetes Pod startet nicht

Fehlerbild: Kubernetes Pod startet nicht.

Wahrscheinliche Ursache: Env Vars, Image, DB URL oder Security Context falsch.

Diagnose:

kubectl describe pod <pod>
kubectl logs <pod> --tail=100

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: ConfigMap/Secret, readinessProbe und ImagePullPolicy pruefen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F20. OpenShift Route funktioniert nicht

Fehlerbild: OpenShift Route funktioniert nicht.

Wahrscheinliche Ursache: Service-Port oder Route-Ziel falsch.

Diagnose:

oc get route,svc,pod
oc describe route order-runtime

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Route auf richtigen Service-Port zeigen lassen.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F21. Backup ist unbrauchbar

Fehlerbild: Backup ist unbrauchbar.

Wahrscheinliche Ursache: Dump wurde nicht verifiziert oder falsche DB gesichert.

Diagnose:

ls -lh backups/
pg_restore --list backup.dump | head

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Nach jedem Backup Restore-Probe oder mindestens Dump-Listing ausfuehren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F22. Restore ueberschreibt falsche Umgebung

Fehlerbild: Restore ueberschreibt falsche Umgebung.

Wahrscheinliche Ursache: Zielkontext falsch oder DB Name verwechselt.

Diagnose:

echo $KUBECONFIG
kubectl config current-context
psql -c "select current_database();"

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Restore nur mit explizitem Kontext und Freigabe ausfuehren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

F23. Rate Limit blockiert Tests

Fehlerbild: Rate Limit blockiert Tests.

Wahrscheinliche Ursache: Test ruft Endpoint zu oft auf oder Filter ist fuer lokale Tests zu strikt.

Diagnose:

grep -R "RateLimitingFilter" -n maven-project/runtime/src/main/java
curl -i http://localhost:8080/actuator/health

Erwartete Hinweise:
- Logs zeigen konkrete technische Ursache oder fehlende Verbindung.
- Statusseiten zeigen, ob Container, API oder Infrastruktur erreichbar sind.
- SQL- oder HTTP-Antworten helfen, zwischen Daten-, Broker-, Security- und Runtime-Problem zu trennen.

Loesung: Testprofil mit hoeherem Limit nutzen oder Filter im Integrationstest gezielt konfigurieren.

Warum das in echten Enterprise-Systemen passiert:
In verteilten Systemen liegt der Fehler selten nur an einer Klasse. Meist stimmen Umgebung, Konfiguration, Netzwerk, Schema, Token oder Betriebserwartung nicht zusammen. Deshalb ist Diagnose mit Befehlen wichtiger als reines Lesen von Code.

Praxis-Check:
1. Fehler absichtlich erzeugen.
2. Diagnosebefehle ausfuehren.
3. Ursache notieren.
4. Fix anwenden.
5. Gegenprobe ausfuehren.

⌂ Cockpit