Skip to content

Commit be34c3d

Browse files
committed
perf: only enqueue subnet when necessary
Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>
1 parent 15c7c79 commit be34c3d

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

pkg/controller/subnet.go

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,15 @@ func (c *Controller) handleAddOrUpdateSubnet(key string) error {
493493
return err
494494
}
495495

496+
subnet, deleted, err := c.handleSubnetFinalizer(subnet)
497+
if err != nil {
498+
klog.Errorf("handle subnet finalizer failed %v", err)
499+
return err
500+
}
501+
if deleted {
502+
return nil
503+
}
504+
496505
err = c.validateSubnetVlan(subnet)
497506
if err != nil {
498507
err := fmt.Errorf("failed to validate vlan for subnet %s, %w", key, err)
@@ -529,15 +538,6 @@ func (c *Controller) handleAddOrUpdateSubnet(key string) error {
529538
return err
530539
}
531540

532-
subnet, deleted, err := c.handleSubnetFinalizer(subnet)
533-
if err != nil {
534-
klog.Errorf("handle subnet finalizer failed %v", err)
535-
return err
536-
}
537-
if deleted {
538-
return nil
539-
}
540-
541541
if !isOvnSubnet(subnet) {
542542
// subnet provider is not ovn, and vpc is empty, should not reconcile
543543
if err = c.patchSubnetStatus(subnet, "SetNonOvnSubnetSuccess", ""); err != nil {
@@ -1526,10 +1526,12 @@ func (c *Controller) reconcileOvnDefaultVpcRoute(subnet *kubeovnv1.Subnet) error
15261526
}
15271527
}
15281528

1529-
if subnet.Spec.U2OInterconnection && subnet.Status.U2OInterconnectionIP != "" {
1530-
if err := c.addPolicyRouteForU2OInterconn(subnet); err != nil {
1531-
klog.Errorf("failed to add policy route for underlay to overlay subnet interconnection %s %v", subnet.Name, err)
1532-
return err
1529+
if subnet.Spec.U2OInterconnection {
1530+
if subnet.Status.U2OInterconnectionIP != "" {
1531+
if err := c.addPolicyRouteForU2OInterconn(subnet); err != nil {
1532+
klog.Errorf("failed to add policy route for underlay to overlay subnet interconnection %s %v", subnet.Name, err)
1533+
return err
1534+
}
15331535
}
15341536
} else {
15351537
if err := c.deletePolicyRouteForU2OInterconn(subnet); err != nil {
@@ -1538,11 +1540,12 @@ func (c *Controller) reconcileOvnDefaultVpcRoute(subnet *kubeovnv1.Subnet) error
15381540
}
15391541
}
15401542

1541-
if (!c.config.EnableLb || (subnet.Spec.EnableLb == nil || !*subnet.Spec.EnableLb)) &&
1542-
subnet.Spec.U2OInterconnection && subnet.Status.U2OInterconnectionIP != "" {
1543-
if err := c.addPolicyRouteForU2ONoLoadBalancer(subnet); err != nil {
1544-
klog.Errorf("failed to add policy route for underlay to overlay subnet interconnection without enabling loadbalancer %s %v", subnet.Name, err)
1545-
return err
1543+
if (!c.config.EnableLb || (subnet.Spec.EnableLb == nil || !*subnet.Spec.EnableLb)) && subnet.Spec.U2OInterconnection {
1544+
if subnet.Status.U2OInterconnectionIP != "" {
1545+
if err := c.addPolicyRouteForU2ONoLoadBalancer(subnet); err != nil {
1546+
klog.Errorf("failed to add policy route for underlay to overlay subnet interconnection without enabling loadbalancer %s %v", subnet.Name, err)
1547+
return err
1548+
}
15461549
}
15471550
} else {
15481551
if err := c.deletePolicyRouteForU2ONoLoadBalancer(subnet); err != nil {
@@ -1734,11 +1737,6 @@ func (c *Controller) reconcileSubnetSpecialIPs(subnet *kubeovnv1.Subnet) (bool,
17341737
}
17351738
isU2OIPChanged = true
17361739
}
1737-
1738-
if isU2OIPChanged {
1739-
klog.Infof("reconcile underlay subnet %s to overlay interconnection with U2OInterconnection %v U2OInterconnectionIP %s",
1740-
subnet.Name, subnet.Spec.U2OInterconnection, subnet.Status.U2OInterconnectionIP)
1741-
}
17421740
}
17431741

17441742
// reconcile mcast querier IP

pkg/controller/vpc.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,11 @@ func (c *Controller) handleAddOrUpdateVpc(key string) error {
594594
custVpcEnableExternalEcmp := false
595595
for _, subnet := range subnets {
596596
if subnet.Spec.Vpc == key {
597-
c.addOrUpdateSubnetQueue.Add(subnet.Name)
597+
// Accelerate subnet update when vpc config is updated.
598+
// In case VPC not set namespaces, subnet will backoff and may take long time to back to ready.
599+
if subnet.Status.IsNotReady() {
600+
c.addOrUpdateSubnetQueue.Add(subnet.Name)
601+
}
598602
if vpc.Name != util.DefaultVpc && vpc.Spec.EnableBfd && subnet.Spec.EnableEcmp {
599603
custVpcEnableExternalEcmp = true
600604
}

0 commit comments

Comments
 (0)