mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
Merge pull request #93971 from Danil-Grigorev/vsphere-secret-deadlock
Refactor locks logic on registeredNodesLock to be non-blocking
This commit is contained in:
commit
1c548c328a
@ -259,6 +259,16 @@ func (nm *NodeManager) GetNode(nodeName k8stypes.NodeName) (v1.Node, error) {
|
|||||||
return *node, nil
|
return *node, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (nm *NodeManager) getNodes() map[string]*v1.Node {
|
||||||
|
nm.registeredNodesLock.RLock()
|
||||||
|
defer nm.registeredNodesLock.RUnlock()
|
||||||
|
registeredNodes := make(map[string]*v1.Node, len(nm.registeredNodes))
|
||||||
|
for nodeName, node := range nm.registeredNodes {
|
||||||
|
registeredNodes[nodeName] = node
|
||||||
|
}
|
||||||
|
return registeredNodes
|
||||||
|
}
|
||||||
|
|
||||||
func (nm *NodeManager) addNode(node *v1.Node) {
|
func (nm *NodeManager) addNode(node *v1.Node) {
|
||||||
nm.registeredNodesLock.Lock()
|
nm.registeredNodesLock.Lock()
|
||||||
nm.registeredNodes[node.ObjectMeta.Name] = node
|
nm.registeredNodes[node.ObjectMeta.Name] = node
|
||||||
@ -288,11 +298,9 @@ func (nm *NodeManager) GetNodeInfo(nodeName k8stypes.NodeName) (NodeInfo, error)
|
|||||||
//
|
//
|
||||||
// This method is a getter but it can cause side-effect of updating NodeInfo objects.
|
// This method is a getter but it can cause side-effect of updating NodeInfo objects.
|
||||||
func (nm *NodeManager) GetNodeDetails() ([]NodeDetails, error) {
|
func (nm *NodeManager) GetNodeDetails() ([]NodeDetails, error) {
|
||||||
nm.registeredNodesLock.Lock()
|
|
||||||
defer nm.registeredNodesLock.Unlock()
|
|
||||||
var nodeDetails []NodeDetails
|
var nodeDetails []NodeDetails
|
||||||
|
|
||||||
for nodeName, nodeObj := range nm.registeredNodes {
|
for nodeName, nodeObj := range nm.getNodes() {
|
||||||
nodeInfo, err := nm.GetNodeInfoWithNodeObject(nodeObj)
|
nodeInfo, err := nm.GetNodeInfoWithNodeObject(nodeObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -304,10 +312,7 @@ func (nm *NodeManager) GetNodeDetails() ([]NodeDetails, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (nm *NodeManager) refreshNodes() (errList []error) {
|
func (nm *NodeManager) refreshNodes() (errList []error) {
|
||||||
nm.registeredNodesLock.Lock()
|
for nodeName := range nm.getNodes() {
|
||||||
defer nm.registeredNodesLock.Unlock()
|
|
||||||
|
|
||||||
for nodeName := range nm.registeredNodes {
|
|
||||||
nodeInfo, err := nm.getRefreshedNodeInfo(convertToK8sType(nodeName))
|
nodeInfo, err := nm.getRefreshedNodeInfo(convertToK8sType(nodeName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errList = append(errList, err)
|
errList = append(errList, err)
|
||||||
|
Loading…
Reference in New Issue
Block a user