Restart btcdata when its fenced database session closes
pr / test (pull_request) Successful in 1m14s
pr / test (pull_request) Successful in 1m14s
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user