Skip to content

Delete stale metrics for not-found Sources - #2185

Draft
zarcen wants to merge 1 commit into
fluxcd:mainfrom
zarcen:fix/delete-metrics-for-removed-sources
Draft

zarcen wants to merge 1 commit into
fluxcd:mainfrom
zarcen:fix/delete-metrics-for-removed-sources

Conversation

@zarcen

@zarcen zarcen commented Oct 13, 2026 •

Copy link
Copy Markdown

Part of fluxcd/kustomize-controller#1769

Drop a GitRepository/HelmChart/HelmRepository/OCIRepository/Bucket's
gotk_reconcile_duration_seconds
series on the NotFound branch of Reconcile, not only when a reconcile
observes the finalizer being removed. Metrics.MetricsRecorder.DeleteDuration
already takes a bare object reference, so no new fluxcd/pkg API is needed.
One bug, one fix, applied uniformly across all five reconcilers.

Test plan: go test ./internal/controller/ -run 'Reconciler_deleteMetricsOnNotFound'
fails on main, passes with this change.

Related PRs

Metrics series for a Bucket, GitRepository, HelmChart, HelmRepository
or OCIRepository are only dropped by the deferred RecordDuration call,
and only on a reconcile pass that observes the object with its
deletion timestamp set and the owned finalizer already removed.
Reconcile returns at the client.Get NotFound check before that defer
is registered, so an object whose last observed state is NotFound
keeps its gotk_reconcile_duration_seconds series in the registry until
the controller process restarts.

Same leak as kustomize-controller's Kustomization reconciler, same
fix, applied to all five source-controller reconcilers: drop the
series on the NotFound path, where the object is known to be gone.
Metrics.MetricsRecorder already exposes DeleteDuration(ref) taking a
bare object reference -- no live object or new fluxcd/pkg API needed.

Includes a deterministic test per reconciler, each driving two
Reconcile calls against a fake client: the series survives without
this fix and is removed with it.

Signed-off-by: Wei-Chen Chen <zarcen@gmail.com>
Signed-off-by: Wei-Chen Chen <weichen.chen@omniva.com>
Assisted-by: claude-code/claude-sonnet-5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant