@@ -259,6 +259,16 @@ func (nm *NodeManager) GetNode(nodeName k8stypes.NodeName) (v1.Node, error) {
259
259
return * node , nil
260
260
}
261
261
262
+ func (nm * NodeManager ) getNodes () map [string ]* v1.Node {
263
+ nm .registeredNodesLock .RLock ()
264
+ defer nm .registeredNodesLock .RUnlock ()
265
+ registeredNodes := make (map [string ]* v1.Node , len (nm .registeredNodes ))
266
+ for nodeName , node := range nm .registeredNodes {
267
+ registeredNodes [nodeName ] = node
268
+ }
269
+ return registeredNodes
270
+ }
271
+
262
272
func (nm * NodeManager ) addNode (node * v1.Node ) {
263
273
nm .registeredNodesLock .Lock ()
264
274
nm .registeredNodes [node .ObjectMeta .Name ] = node
@@ -288,11 +298,9 @@ func (nm *NodeManager) GetNodeInfo(nodeName k8stypes.NodeName) (NodeInfo, error)
288
298
//
289
299
// This method is a getter but it can cause side-effect of updating NodeInfo objects.
290
300
func (nm * NodeManager ) GetNodeDetails () ([]NodeDetails , error ) {
291
- nm .registeredNodesLock .Lock ()
292
- defer nm .registeredNodesLock .Unlock ()
293
301
var nodeDetails []NodeDetails
294
302
295
- for nodeName , nodeObj := range nm .registeredNodes {
303
+ for nodeName , nodeObj := range nm .getNodes () {
296
304
nodeInfo , err := nm .GetNodeInfoWithNodeObject (nodeObj )
297
305
if err != nil {
298
306
return nil , err
@@ -304,10 +312,7 @@ func (nm *NodeManager) GetNodeDetails() ([]NodeDetails, error) {
304
312
}
305
313
306
314
func (nm * NodeManager ) refreshNodes () (errList []error ) {
307
- nm .registeredNodesLock .Lock ()
308
- defer nm .registeredNodesLock .Unlock ()
309
-
310
- for nodeName := range nm .registeredNodes {
315
+ for nodeName := range nm .getNodes () {
311
316
nodeInfo , err := nm .getRefreshedNodeInfo (convertToK8sType (nodeName ))
312
317
if err != nil {
313
318
errList = append (errList , err )
0 commit comments