From ae22cb6b0eaef5fc04ff1d981680a06f133aadb7 Mon Sep 17 00:00:00 2001 From: Anders Stigaard Date: Fri, 16 May 2025 13:52:00 +0200 Subject: [PATCH 1/2] Only delete metric once when deleting a System, fix label naming bug --- internal/controller/styra/system_controller.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/controller/styra/system_controller.go b/internal/controller/styra/system_controller.go index 8f934969..df8a9d12 100644 --- a/internal/controller/styra/system_controller.go +++ b/internal/controller/styra/system_controller.go @@ -100,7 +100,6 @@ func (r *SystemReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr r.Metrics.ReconcileTime.WithLabelValues("delete").Observe(time.Since(start).Seconds()) if k8serrors.IsNotFound(err) { log.Info("Could not find System in kubernetes") - r.deleteMetrics(req) return ctrl.Result{}, nil } r.deleteMetrics(req) @@ -178,7 +177,7 @@ func (r *SystemReconciler) deleteMetrics(req ctrl.Request) { return } if deleted := r.Metrics.ControllerSystemStatusReady.DeletePartialMatch( - prometheus.Labels{"System": req.Name, "namespace": req.Namespace}, + prometheus.Labels{"system_name": req.Name, "namespace": req.Namespace}, ); deleted != 1 { log.Log.Error(errors.New("Failed to delete metric"), "Incorrect number of deleted metrics", "deleted", deleted) } From 31c01b5f3fc4bf9e1ce824765be272846f989775 Mon Sep 17 00:00:00 2001 From: Anders Stigaard Date: Mon, 19 May 2025 10:51:31 +0200 Subject: [PATCH 2/2] Do not delete system metric when GET system returns != 404 --- internal/controller/styra/system_controller.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/controller/styra/system_controller.go b/internal/controller/styra/system_controller.go index df8a9d12..223b725e 100644 --- a/internal/controller/styra/system_controller.go +++ b/internal/controller/styra/system_controller.go @@ -97,12 +97,11 @@ func (r *SystemReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr log.Info("Fetching System") var system v1beta1.System if err := r.Get(ctx, req.NamespacedName, &system); err != nil { - r.Metrics.ReconcileTime.WithLabelValues("delete").Observe(time.Since(start).Seconds()) if k8serrors.IsNotFound(err) { log.Info("Could not find System in kubernetes") + r.Metrics.ReconcileTime.WithLabelValues("delete").Observe(time.Since(start).Seconds()) return ctrl.Result{}, nil } - r.deleteMetrics(req) return ctrl.Result{}, errors.Wrap(err, "unable to fetch System") }