From 68a7d03bac9ba36f5d623117992bc3323e30b833 Mon Sep 17 00:00:00 2001 From: Aaron U'Ren Date: Sat, 16 Sep 2023 13:04:14 -0500 Subject: [PATCH] fix: take family metrics out of defer Deferring these will end up making the end times match for both families as the variables aren't tracked separately. Since these are the same metrics, it should be safe to emit them at time of generation. --- .../netpol/network_policy_controller.go | 36 +++++++++---------- pkg/controllers/netpol/policy.go | 18 +++++----- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/pkg/controllers/netpol/network_policy_controller.go b/pkg/controllers/netpol/network_policy_controller.go index 8c3e7781..e767708f 100644 --- a/pkg/controllers/netpol/network_policy_controller.go +++ b/pkg/controllers/netpol/network_policy_controller.go @@ -257,17 +257,15 @@ func (npc *NetworkPolicyController) fullPolicySync() { saveStart := time.Now() err := iptablesSaveRestore.SaveInto("filter", npc.filterTableRules[ipFamily]) saveEndTime := time.Since(saveStart) - defer func() { - if npc.MetricsEnabled { - switch ipFamily { - case v1core.IPv4Protocol: - metrics.ControllerIptablesV4SaveTime.Observe(saveEndTime.Seconds()) - case v1core.IPv6Protocol: - metrics.ControllerIptablesV6SaveTime.Observe(saveEndTime.Seconds()) - } + if npc.MetricsEnabled { + switch ipFamily { + case v1core.IPv4Protocol: + metrics.ControllerIptablesV4SaveTime.Observe(saveEndTime.Seconds()) + case v1core.IPv6Protocol: + metrics.ControllerIptablesV6SaveTime.Observe(saveEndTime.Seconds()) } - klog.V(2).Infof("Saving %v iptables rules took %v", ipFamily, saveEndTime) - }() + } + klog.V(2).Infof("Saving %v iptables rules took %v", ipFamily, saveEndTime) if err != nil { klog.Errorf("Aborting sync. Failed to run iptables-save: %v", err.Error()) @@ -298,17 +296,15 @@ func (npc *NetworkPolicyController) fullPolicySync() { restoreStart := time.Now() err := iptablesSaveRestore.Restore("filter", npc.filterTableRules[ipFamily].Bytes()) restoreEndTime := time.Since(restoreStart) - defer func() { - if npc.MetricsEnabled { - switch ipFamily { - case v1core.IPv4Protocol: - metrics.ControllerIptablesV4RestoreTime.Observe(restoreEndTime.Seconds()) - case v1core.IPv6Protocol: - metrics.ControllerIptablesV6RestoreTime.Observe(restoreEndTime.Seconds()) - } + if npc.MetricsEnabled { + switch ipFamily { + case v1core.IPv4Protocol: + metrics.ControllerIptablesV4RestoreTime.Observe(restoreEndTime.Seconds()) + case v1core.IPv6Protocol: + metrics.ControllerIptablesV6RestoreTime.Observe(restoreEndTime.Seconds()) } - klog.V(2).Infof("Restoring %v iptables rules took %v", ipFamily, restoreEndTime) - }() + } + klog.V(2).Infof("Restoring %v iptables rules took %v", ipFamily, restoreEndTime) if err != nil { klog.Errorf("Aborting sync. Failed to run iptables-restore: %v\n%s", diff --git a/pkg/controllers/netpol/policy.go b/pkg/controllers/netpol/policy.go index 118f7dbb..4e3a657f 100644 --- a/pkg/controllers/netpol/policy.go +++ b/pkg/controllers/netpol/policy.go @@ -151,17 +151,15 @@ func (npc *NetworkPolicyController) syncNetworkPolicyChains(networkPoliciesInfo err := ipset.Restore() restoreEndTime := time.Since(restoreStart) - defer func() { - if npc.MetricsEnabled { - switch ipFamily { - case api.IPv4Protocol: - metrics.ControllerPolicyIpsetV4RestoreTime.Observe(restoreEndTime.Seconds()) - case api.IPv6Protocol: - metrics.ControllerPolicyIpsetV6RestoreTime.Observe(restoreEndTime.Seconds()) - } + if npc.MetricsEnabled { + switch ipFamily { + case api.IPv4Protocol: + metrics.ControllerPolicyIpsetV4RestoreTime.Observe(restoreEndTime.Seconds()) + case api.IPv6Protocol: + metrics.ControllerPolicyIpsetV6RestoreTime.Observe(restoreEndTime.Seconds()) } - klog.V(2).Infof("Restoring %v ipset took %v", ipFamily, restoreEndTime) - }() + } + klog.V(2).Infof("Restoring %v ipset took %v", ipFamily, restoreEndTime) if err != nil { return nil, nil, fmt.Errorf("failed to perform ipset restore: %w", err)