diff --git a/staging/src/slime.io/slime/modules/lazyload/controllers/process.go b/staging/src/slime.io/slime/modules/lazyload/controllers/process.go index 07101f98..01264d23 100644 --- a/staging/src/slime.io/slime/modules/lazyload/controllers/process.go +++ b/staging/src/slime.io/slime/modules/lazyload/controllers/process.go @@ -94,6 +94,11 @@ func (r *ServicefenceReconciler) Refresh(req reconcile.Request, value map[string return reconcile.Result{}, nil } + log.Debugf("refresh with servicefence %s metricstatus old: %v, new: %v", req.NamespacedName, sf.Status.MetricStatus, value) + // skip refresh when metric result has not changed + if mapStrStrEqual(sf.Status.MetricStatus, value) { + return reconcile.Result{}, nil + } // use updateVisitedHostStatus to update svf.spec and svf.status sf.Status.MetricStatus = value diff := r.updateVisitedHostStatus(sf) @@ -109,6 +114,22 @@ func (r *ServicefenceReconciler) Refresh(req reconcile.Request, value map[string return reconcile.Result{}, nil } +func mapStrStrEqual(m1, m2 map[string]string) bool { + if len(m1) != len(m2) { + return false + } + for k, v1 := range m1 { + v2, exist := m2[k] + if !exist { + return false + } + if v2 != v1 { + return false + } + } + return true +} + func (r *ServicefenceReconciler) isNsFenced(ns *corev1.Namespace) bool { if ns != nil && ns.Labels != nil { switch ns.Labels[LabelServiceFenced] {