Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions charts/arcadedb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
1 change: 1 addition & 0 deletions charts/arcadedb/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If observability.health.readinessHAMaxLag is omitted or set to null in a user's custom values, rendering {{ $health.readinessHAMaxLag }} directly will result in an empty or <nil> value in the JVM arguments, which can cause startup or parsing failures. Additionally, using a simple default 100 helper would incorrectly override a valid 0 value (since 0 is falsy in Go templates). To handle this robustly, we can define a default fallback that preserves 0 as a valid lag limit.

- -Darcadedb.server.readinessHAMaxLag={{ if or $health.readinessHAMaxLag (eq $health.readinessHAMaxLag 0) (eq $health.readinessHAMaxLag 0.0) }}{{ $health.readinessHAMaxLag }}{{ else }}100{{ end }}

{{- end }}
{{- end -}}

Expand Down
25 changes: 24 additions & 1 deletion charts/arcadedb/tests/observability_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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:
Expand Down
2 changes: 2 additions & 0 deletions charts/arcadedb/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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