Skip to content

Commit f2b7e2a

Browse files
authored
fix: resync and add automatic resync period (#225)
Signed-off-by: Mateusz Urbanek <[email protected]>
1 parent af045d1 commit f2b7e2a

File tree

1 file changed

+42
-17
lines changed

1 file changed

+42
-17
lines changed

cloud/linode/node_controller.go

+42-17
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ import (
2323
"github.com/linode/linode-cloud-controller-manager/cloud/linode/client"
2424
)
2525

26+
const (
27+
informerResyncPeriod = 1 * time.Minute
28+
defaultMetadataTTL = 300 * time.Second
29+
)
30+
2631
type nodeController struct {
2732
sync.RWMutex
2833

@@ -38,10 +43,10 @@ type nodeController struct {
3843
}
3944

4045
func newNodeController(kubeclient kubernetes.Interface, client client.Client, informer v1informers.NodeInformer) *nodeController {
41-
timeout := 300
46+
timeout := defaultMetadataTTL
4247
if raw, ok := os.LookupEnv("LINODE_METADATA_TTL"); ok {
4348
if t, _ := strconv.Atoi(raw); t > 0 {
44-
timeout = t
49+
timeout = time.Duration(t) * time.Second
4550
}
4651
}
4752

@@ -50,24 +55,36 @@ func newNodeController(kubeclient kubernetes.Interface, client client.Client, in
5055
instances: newInstances(client),
5156
kubeclient: kubeclient,
5257
informer: informer,
53-
ttl: time.Duration(timeout) * time.Second,
58+
ttl: timeout,
5459
metadataLastUpdate: make(map[string]time.Time),
5560
queue: workqueue.NewDelayingQueue(),
5661
}
5762
}
5863

5964
func (s *nodeController) Run(stopCh <-chan struct{}) {
60-
if _, err := s.informer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
61-
AddFunc: func(obj interface{}) {
62-
node, ok := obj.(*v1.Node)
63-
if !ok {
64-
return
65-
}
66-
67-
klog.Infof("NodeController will handle newly created node (%s) metadata", node.Name)
68-
s.queue.Add(node)
65+
if _, err := s.informer.Informer().AddEventHandlerWithResyncPeriod(
66+
cache.ResourceEventHandlerFuncs{
67+
AddFunc: func(obj interface{}) {
68+
node, ok := obj.(*v1.Node)
69+
if !ok {
70+
return
71+
}
72+
73+
klog.Infof("NodeController will handle newly created node (%s) metadata", node.Name)
74+
s.queue.Add(node)
75+
},
76+
UpdateFunc: func(oldObj, newObj interface{}) {
77+
node, ok := newObj.(*v1.Node)
78+
if !ok {
79+
return
80+
}
81+
82+
klog.Infof("NodeController will handle newly updated node (%s) metadata", node.Name)
83+
s.queue.Add(node)
84+
},
6985
},
70-
}); err != nil {
86+
informerResyncPeriod,
87+
); err != nil {
7188
klog.Errorf("NodeController can't handle newly created node's metadata. %s", err)
7289
}
7390

@@ -125,19 +142,27 @@ func (s *nodeController) SetLastMetadataUpdate(nodeName string) {
125142
}
126143

127144
func (s *nodeController) handleNode(ctx context.Context, node *v1.Node) error {
128-
klog.Infof("NodeController handling node (%s) metadata", node.Name)
145+
klog.V(3).InfoS("NodeController handling node metadata",
146+
"node", klog.KObj(node))
129147

130148
lastUpdate := s.LastMetadataUpdate(node.Name)
131149

132150
uuid, foundLabel := node.Labels[annotations.AnnLinodeHostUUID]
133151
configuredPrivateIP, foundAnnotation := node.Annotations[annotations.AnnLinodeNodePrivateIP]
134-
if foundLabel && foundAnnotation && time.Since(lastUpdate) < s.ttl {
152+
153+
metaAge := time.Since(lastUpdate)
154+
if foundLabel && foundAnnotation && metaAge < s.ttl {
155+
klog.V(3).InfoS("Skipping refresh, ttl not reached",
156+
"node", klog.KObj(node),
157+
"ttl", s.ttl,
158+
"metadata_age", metaAge,
159+
)
135160
return nil
136161
}
137162

138163
linode, err := s.instances.lookupLinode(ctx, node)
139164
if err != nil {
140-
klog.Infof("instance lookup error: %s", err.Error())
165+
klog.V(1).ErrorS(err, "Instance lookup error")
141166
return err
142167
}
143168

@@ -182,7 +207,7 @@ func (s *nodeController) handleNode(ctx context.Context, node *v1.Node) error {
182207
_, err = s.kubeclient.CoreV1().Nodes().Update(ctx, n, metav1.UpdateOptions{})
183208
return err
184209
}); err != nil {
185-
klog.Infof("node update error: %s", err.Error())
210+
klog.V(1).ErrorS(err, "Node update error")
186211
return err
187212
}
188213

0 commit comments

Comments
 (0)