From b47a5fea2224baae9bfce5616bfa9c94f0f3a58d Mon Sep 17 00:00:00 2001 From: robfrank Date: Wed, 1 Jul 2026 10:35:33 +0200 Subject: [PATCH] feat(helm): expose readinessHAMaxLag for HA readiness catch-up gate (ArcadeDB #4846) ArcadeDB now gates /api/v1/ready on Raft log catch-up via SERVER_READINESS_HA_MAX_LAG, in addition to the existing readinessRequiresHA leader check. Wire the new observability.health.readinessHAMaxLag value through to -Darcadedb.server.readinessHAMaxLag so operators can tune the follower lag bound. Co-Authored-By: Claude Sonnet 5 --- charts/arcadedb/README.md | 1 + charts/arcadedb/templates/_helpers.tpl | 1 + charts/arcadedb/tests/observability_test.yaml | 25 ++++++++++++++++++- charts/arcadedb/values.yaml | 2 ++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/charts/arcadedb/README.md b/charts/arcadedb/README.md index 4bee9f0..919b5f5 100644 --- a/charts/arcadedb/README.md +++ b/charts/arcadedb/README.md @@ -218,6 +218,7 @@ Opt-in, behavior-preserving observability (ArcadeDB 26.7.1+). Every knob below d | Name | Description | Value | |--------------------------------------------|---------------------------------------------------|---------| | `observability.health.readinessRequiresHA` | /api/v1/ready waits for Raft join on HA clusters | `false` | +| `observability.health.readinessHAMaxLag` | Max Raft log entries a follower may lag behind commit index and still report Ready (requires readinessRequiresHA) | `100` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example: diff --git a/charts/arcadedb/templates/_helpers.tpl b/charts/arcadedb/templates/_helpers.tpl index 3fcb56f..2727766 100644 --- a/charts/arcadedb/templates/_helpers.tpl +++ b/charts/arcadedb/templates/_helpers.tpl @@ -203,6 +203,7 @@ All opt-in; emits nothing when defaults are unchanged. {{- end }} {{- if $health.readinessRequiresHA }} - -Darcadedb.server.readinessRequiresHA=true +- -Darcadedb.server.readinessHAMaxLag={{ $health.readinessHAMaxLag }} {{- end }} {{- end -}} diff --git a/charts/arcadedb/tests/observability_test.yaml b/charts/arcadedb/tests/observability_test.yaml index 648be0d..aed2c5a 100644 --- a/charts/arcadedb/tests/observability_test.yaml +++ b/charts/arcadedb/tests/observability_test.yaml @@ -19,6 +19,9 @@ tests: - notContains: path: spec.template.spec.containers[0].command content: "-Darcadedb.server.readinessRequiresHA=true" + - notContains: + path: spec.template.spec.containers[0].command + content: "-Darcadedb.server.readinessHAMaxLag=100" - notContains: path: spec.template.spec.containers[0].command content: "-Darcadedb.server.logIncludeTrace=true" @@ -79,13 +82,33 @@ tests: path: spec.template.spec.containers[0].command content: "-Darcadedb.serverMetrics.tracing.samplingRate=0.1" - - it: readinessRequiresHA emits the arg + - it: readinessRequiresHA emits the arg plus the default readinessHAMaxLag set: observability.health.readinessRequiresHA: true asserts: - contains: path: spec.template.spec.containers[0].command content: "-Darcadedb.server.readinessRequiresHA=true" + - contains: + path: spec.template.spec.containers[0].command + content: "-Darcadedb.server.readinessHAMaxLag=100" + + - it: readinessHAMaxLag can be overridden + set: + observability.health.readinessRequiresHA: true + observability.health.readinessHAMaxLag: 25 + asserts: + - contains: + path: spec.template.spec.containers[0].command + content: "-Darcadedb.server.readinessHAMaxLag=25" + + - it: readinessHAMaxLag is not emitted when readinessRequiresHA is false + set: + observability.health.readinessHAMaxLag: 25 + asserts: + - notContains: + path: spec.template.spec.containers[0].command + content: "-Darcadedb.server.readinessHAMaxLag=25" - it: renders without panic when observability is explicitly null set: diff --git a/charts/arcadedb/values.yaml b/charts/arcadedb/values.yaml index 8e853c8..8dc61c3 100644 --- a/charts/arcadedb/values.yaml +++ b/charts/arcadedb/values.yaml @@ -341,3 +341,5 @@ observability: health: ## @param observability.health.readinessRequiresHA /api/v1/ready waits for Raft join on HA clusters readinessRequiresHA: false + ## @param observability.health.readinessHAMaxLag Max Raft log entries a follower may lag behind commit index and still report Ready (requires readinessRequiresHA) + readinessHAMaxLag: 100