Restart btcdata when its fenced database session closes
pr / test (pull_request) Successful in 1m14s

This commit is contained in:
2026-10-09 14:58:53 +02:00
parent 756ab7c65b
commit 91f0367337
6 changed files with 67 additions and 9 deletions
+24
View File
@@ -1,5 +1,29 @@
# btcdata Kubernetes deployment plan
## 2026-10-09 incident: closed writer session never restarted
The citadel pod was Running but not Ready, and both btcprice pods were unready.
All writer queries failed with `Connection is closed`. Readiness correctly
returned 503, but `/api/health` always returned 200, so Kubernetes did not restart
the process. The initial connection-loss cause was not established from the
available logs. Fenced connections deliberately never reconnect in place.
Recovery deleted only the failed pod (normal graceful deletion); its Deployment
recreated it, and btcdata and both btcprice pods became Ready. No lock was
bypassed or database backend terminated for this incident.
The source fix makes `/api/health` return 503 when the writer session is closed
(or absent). This checks local JDBC state only: no SQL, external APIs, or Binance
freshness are used in liveness. Existing probes will then restart an irrecoverable
writer after three failed checks. Readiness retains database/freshness checks.
Unit tests passed: 21 tests, 63 assertions. PostgreSQL integration tests were
not run because the local Docker daemon was unavailable.
The recovered pod still runs `main-20260930155338`, not the new source changes.
Flux apps reconciliation is blocked on infrastructure health checks for image
repositories; building/publishing and a successful Flux rollout remain necessary
to activate the liveness and keepalive source fixes.
## 2026-10-07 incident: orphaned writer session
The `sejs/btcdata` pod on citadel entered CrashLoopBackOff with