Problem
ingestor.idempotencyKey (in ingestor/templates/_helpers.tpl) currently falls back to <release>-<revision> when .Values.idempotencyKey is unset. After helm uninstall, Helm restarts revisions at 1 on the next install, so the key is identical across attempts under the same release name.
If the image digest or any other dedupe-relevant field changed between attempts — the dominant case during testing/debugging — jobs-manager returns a 409 like:
idempotency_key 'my-dataset-1' already used with a different image_digest or table; refusing to reuse
Behavior is correct (jobs-manager protecting against silent param drift) but the default surfaces it confusingly. A customer following the README will hit this on their second install attempt and assume the chart is broken.
Fix
When .Values.idempotencyKey is unset, derive the key from install time instead of release revision:
{{- define "ingestor.idempotencyKey" -}}
{{- if .Values.idempotencyKey -}}
{{ .Values.idempotencyKey }}
{{- else -}}
{{ printf "%s-%d" .Release.Name (now | unixEpoch) }}
{{- end -}}
{{- end -}}
now | unixEpoch is unique-enough across realistic install rates within one release name; if it ever isn't, the operator is hammering reinstalls inside a single second and the 409 is the correct outcome.
Doc changes
ingestor/values.yaml — flip the doc comment to "defaults to <release>-<unix-epoch>; override only for at-most-once semantics".
ingestor/README.md — same flip in the frequently-overridden table.
ingestor/Chart.yaml — bump version 0.1.0 → 0.1.1 (default-behavior change).
Acceptance
helm install x ./ingestor → uninstall → reinstall under the same release name + same ingest.yaml → second install is a fresh ingestion run, not a 409.
helm install x ./ingestor --set idempotencyKey=foo → uninstall → reinstall with the same key + same config → jobs-manager returns 200 replay.
helm template renders distinct keys on two successive renders.
Refs
Sibling to #125 (which dropped the digest pinning gate). Together these polish the customer-facing install loop.
Problem
ingestor.idempotencyKey(iningestor/templates/_helpers.tpl) currently falls back to<release>-<revision>when.Values.idempotencyKeyis unset. Afterhelm uninstall, Helm restarts revisions at 1 on the next install, so the key is identical across attempts under the same release name.If the image digest or any other dedupe-relevant field changed between attempts — the dominant case during testing/debugging — jobs-manager returns a 409 like:
Behavior is correct (jobs-manager protecting against silent param drift) but the default surfaces it confusingly. A customer following the README will hit this on their second install attempt and assume the chart is broken.
Fix
When
.Values.idempotencyKeyis unset, derive the key from install time instead of release revision:now | unixEpochis unique-enough across realistic install rates within one release name; if it ever isn't, the operator is hammering reinstalls inside a single second and the 409 is the correct outcome.Doc changes
ingestor/values.yaml— flip the doc comment to "defaults to<release>-<unix-epoch>; override only for at-most-once semantics".ingestor/README.md— same flip in the frequently-overridden table.ingestor/Chart.yaml— bump version 0.1.0 → 0.1.1 (default-behavior change).Acceptance
helm install x ./ingestor→ uninstall → reinstall under the same release name + sameingest.yaml→ second install is a fresh ingestion run, not a 409.helm install x ./ingestor --set idempotencyKey=foo→ uninstall → reinstall with the same key + same config → jobs-manager returns 200 replay.helm templaterenders distinct keys on two successive renders.Refs
Sibling to #125 (which dropped the digest pinning gate). Together these polish the customer-facing install loop.