Scale out error ingestion for EF (3/3): liveness and readiness endpoints - #5803
Open
johnsimons wants to merge 1 commit into
Open
Scale out error ingestion for EF (3/3): liveness and readiness endpoints#5803johnsimons wants to merge 1 commit into
johnsimons wants to merge 1 commit into
Conversation
johnsimons
force-pushed
the
john/scale_error3
branch
from
August 19, 2026 22:31
b3176f5 to
61cfc1f
Compare
johnsimons
force-pushed
the
john/scale_error3
branch
from
August 20, 2026 02:57
61cfc1f to
6b8e4b6
Compare
Introduces dedicated `/health` (liveness) and `/health/ready` (readiness) endpoints to replace the Dockerfile's reliance on the configuration API for health monitoring. The readiness check incorporates a new error ingestion health check, which monitors the state of the ingestion watchdog. This is particularly relevant for instances running in error-ingestion-only mode. The health check response is explicitly formatted as JSON to maintain compatibility with the container health check binary.
johnsimons
force-pushed
the
john/scale_error3
branch
from
August 20, 2026 04:15
6b8e4b6 to
6d04f06
Compare
rbev
approved these changes
Aug 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 3 of 3 introducing scale-out of error ingestion for EF persistence. Depends on #<PR 2>.
The ingestion-only host from part 2 serves no HTTP, so the container health check had
nothing to probe. This adds health endpoints to both hosts so one image serves both modes.
Endpoints
GET /healthruns no checks and answers "is this process still serving". This is what acontainer health check should restart on.
GET /health/readyrunsreadytagged checks. Currently one, reading the state theingestion watchdog publishes. That covers more than it looks: a batch that keeps failing,
including because the database is unreachable, trips the fault policy's circuit breaker,
which raises a critical error, which the watchdog records there.
Both are anonymous and mapped in the normal host via
UseServiceControland in theingestion host inside
BuildHost.Responses are JSON rather than the default plain text because
HealthCheckAppexplicitlyrejects anything that is not non-empty
application/json.Dockerfile
HEALTHCHECKnow probes/healthinstead of/api/configuration.Reviewers should weigh this:
/api/configurationexercised the API pipeline and thelicense, so
/healthis a weaker signal. I think that is the right direction for somethingthat restarts containers, since failing a probe on a transient database blip and triggering
a restart loop is worse than a shallow check. If you would rather it stayed strict, point it
at
/health/readyinstead.Testing
When_requesting_healthcovers the normal host on every persister, and the ingestion-onlyend-to-end test asserts both endpoints including the JSON content type.
Verified: full solution Release clean, and the full RavenDB (177), SQL Server (151),
PostgreSQL (151) and Audit (65) acceptance suites.
Known gap
/health/readyhas no direct database connectivity check. Ingestion failures reach ittransitively via the circuit breaker, but a dedicated check needs a health check package
reference in the persistence projects and a per-persister implementation.