in pkg/node/manager/manager.go [127:156]
func (m *manager) CheckNodeForLeakedENIs(nodeName string) {
cachedNode, found := m.GetNode(nodeName)
if !found || !cachedNode.IsManaged() {
m.Log.V(1).Info("node not found or not managed by controller, skip reconciliation", "nodeName", nodeName)
return
}
// Only start a goroutine when need to
if time.Now().After(cachedNode.GetNextReconciliationTime()) {
go func() {
if resourceProvider, found := m.resourceManager.GetResourceProvider(config.ResourceNamePodENI); found {
foundLeakedENI := resourceProvider.ReconcileNode(nodeName)
if foundLeakedENI {
cachedNode.SetReconciliationInterval(node.NodeInitialCleanupInterval)
} else {
interval := wait.Jitter(cachedNode.GetReconciliationInterval(), 5)
if interval > node.MaxNodeReconciliationInterval {
interval = node.MaxNodeReconciliationInterval
}
cachedNode.SetReconciliationInterval(interval)
}
cachedNode.SetNextReconciliationTime(time.Now().Add(cachedNode.GetReconciliationInterval()))
m.Log.Info("reconciled node to cleanup leaked branch ENIs", "NodeName", nodeName, "NextInterval", cachedNode.GetReconciliationInterval(), "NextReconciliationTime", cachedNode.GetNextReconciliationTime())
} else {
// no SGP provider enabled
return
}
}()
}
}