You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Server has no endpoint a Kubernetes readiness probe can use that reflects whether it can actually serve graph traffic. /versions (what the #3132 chart uses today) answers 200 as long as the REST layer is up, even when the cluster has no Store at all.
Measured independently by @SebastianGruza on 2026-09-16 (#3132, comment of 19:31 CEST; scripts in SebastianGruza/hugegraph-validation, docs/helm-chart-faults.md scenario 7): with all Stores scaled to 0 on a running cluster, the Servers stayed Running and ready=true with 0 restarts for 150+ seconds, /versions answered 200 throughout, while every GET /graph/vertices/<id> ended in a 500 after the 30 s request bound (#3204). A Kubernetes Service therefore keeps routing traffic to Servers whose every real request fails.
This is the Server-side twin of #3183, which was fixed for PD by #3185's unauthenticated /v1/ready.
Proposal: an unauthenticated, cheap readiness endpoint on the Server (for example /apis/readiness or a flag on /versions) that returns 503 unless:
the Server's PD client currently has a usable PD connection, and
at least one Store is registered and Up from that Server's view (the graph list from PD plus one cheap Store call is the shape suggested in the feat(helm): add HStore deployment chart #3132 thread).
It must not require Basic auth: a Kubernetes httpGet probe cannot carry a credential without leaking it into the pod spec, which is exactly why #3185 made /v1/ready unauthenticated and why the auth interceptor already excludes /actuator/**, /v1/health and /v1/ready on PD.
Chart side once this exists: server.readinessPath flips from /versions to the new path the same way pd.readinessPath moved to /v1/ready, and a Server with no working storage drops out of the Service instead of serving 500s.
Feature Description (功能描述)
The Server has no endpoint a Kubernetes readiness probe can use that reflects whether it can actually serve graph traffic.
/versions(what the #3132 chart uses today) answers 200 as long as the REST layer is up, even when the cluster has no Store at all.Measured independently by @SebastianGruza on 2026-09-16 (#3132, comment of 19:31 CEST; scripts in SebastianGruza/hugegraph-validation,
docs/helm-chart-faults.mdscenario 7): with all Stores scaled to 0 on a running cluster, the Servers stayedRunningandready=truewith 0 restarts for 150+ seconds,/versionsanswered 200 throughout, while everyGET /graph/vertices/<id>ended in a 500 after the 30 s request bound (#3204). A Kubernetes Service therefore keeps routing traffic to Servers whose every real request fails.This is the Server-side twin of #3183, which was fixed for PD by #3185's unauthenticated
/v1/ready.Proposal: an unauthenticated, cheap readiness endpoint on the Server (for example
/apis/readinessor a flag on/versions) that returns 503 unless:It must not require Basic auth: a Kubernetes
httpGetprobe cannot carry a credential without leaking it into the pod spec, which is exactly why #3185 made/v1/readyunauthenticated and why the auth interceptor already excludes/actuator/**,/v1/healthand/v1/readyon PD.Chart side once this exists:
server.readinessPathflips from/versionsto the new path the same waypd.readinessPathmoved to/v1/ready, and a Server with no working storage drops out of the Service instead of serving 500s.Visual summary