Health check answers 503 while report files cannot be written (closes #142)
check / check (push) Canceled after 0s

The health check answered 200 "status":"ok" whatever happened, so a
container whose report files could not be written stayed healthy while
every report was refused with 500. The report buffer now says whether
its last write of a report file failed. While it has, the health
check's status is "error" and the handler answers 503 with the same
fields, which fails the image's HEALTHCHECK. At start no write has
failed, and the first write that succeeds brings back 200. A test
removes DATA_DIR to make a write fail and checks the 503, then the 200
once a write succeeds again.

Model: opus-5-5
This commit is contained in:
sneak committed 2026-10-19 04:43:37 +00:00
1 parent 9677c73e0a
commit f5a1045a45
7 files changed
+157 -21

No files matched your search

+10 -2
View File
@@ -3,9 +3,17 @@ package handlers
import "net/http"
// HandleHealthCheck returns a handler for the health check
// endpoint.
// endpoint. It answers 200 while the status is "ok" and 503 otherwise,
// so that the image's HEALTHCHECK fails.
func (s *Handlers) HandleHealthCheck() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
s.respondJSON(w, r, s.hc.Healthcheck(), http.StatusOK)
resp := s.hc.Healthcheck()
code := http.StatusOK
if resp.Status != "ok" {
code = http.StatusServiceUnavailable
}
s.respondJSON(w, r, resp, code)
}
}