From d80805f2b48704d145d9264028421c9fe2f6b46b Mon Sep 17 00:00:00 2001 From: Sunny Date: Mon, 31 Jul 2023 21:57:26 +0000 Subject: [PATCH] helmrepo: Delete cache metrics on object delete The cache event metrics for a given helmrepo continues to be exported even after the object is deleted. This change deletes the cache event metrics when the object is deleted. Signed-off-by: Sunny --- internal/cache/metrics.go | 5 +++++ internal/controller/helmrepository_controller.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/internal/cache/metrics.go b/internal/cache/metrics.go index bf12e73de..09b43ec5b 100644 --- a/internal/cache/metrics.go +++ b/internal/cache/metrics.go @@ -67,6 +67,11 @@ func (r *CacheRecorder) IncCacheEvents(event, name, namespace string) { r.cacheEventsCounter.WithLabelValues(event, name, namespace).Inc() } +// DeleteCacheEvent deletes the cache event metric. +func (r *CacheRecorder) DeleteCacheEvent(event, name, namespace string) { + r.cacheEventsCounter.DeleteLabelValues(event, name, namespace) +} + // MustMakeMetrics creates a new CacheRecorder, and registers the metrics collectors in the controller-runtime metrics registry. func MustMakeMetrics() *CacheRecorder { r := NewCacheRecorder() diff --git a/internal/controller/helmrepository_controller.go b/internal/controller/helmrepository_controller.go index 99ace6ec4..c869c9826 100644 --- a/internal/controller/helmrepository_controller.go +++ b/internal/controller/helmrepository_controller.go @@ -618,6 +618,12 @@ func (r *HelmRepositoryReconciler) reconcileDelete(ctx context.Context, obj *hel controllerutil.RemoveFinalizer(obj, sourcev1.SourceFinalizer) } + // Delete cache metrics. + if r.CacheRecorder != nil { + r.DeleteCacheEvent(cache.CacheEventTypeHit, obj.Name, obj.Namespace) + r.DeleteCacheEvent(cache.CacheEventTypeMiss, obj.Name, obj.Namespace) + } + // Stop reconciliation as the object is being deleted return sreconcile.ResultEmpty, nil }