From 53ca7e66ef03964b2e02ae8eb64f02bbd0d0cb16 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 16 Feb 2021 10:48:16 -0800 Subject: [PATCH] avoid dead lock --- weed/topology/data_node.go | 2 +- weed/topology/node.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/weed/topology/data_node.go b/weed/topology/data_node.go index ae69534da..1a0ebf761 100644 --- a/weed/topology/data_node.go +++ b/weed/topology/data_node.go @@ -46,7 +46,7 @@ func (dn *DataNode) getOrCreateDisk(diskType string) *Disk { c, found := dn.children[NodeId(diskType)] if !found { c = NewDisk(diskType) - dn.LinkChildNode(c) + dn.doLinkChildNode(c) } disk := c.(*Disk) return disk diff --git a/weed/topology/node.go b/weed/topology/node.go index 25b048452..f9ac890ef 100644 --- a/weed/topology/node.go +++ b/weed/topology/node.go @@ -210,6 +210,10 @@ func (n *NodeImpl) GetMaxVolumeId() needle.VolumeId { func (n *NodeImpl) LinkChildNode(node Node) { n.Lock() defer n.Unlock() + n.doLinkChildNode(node) +} + +func (n *NodeImpl) doLinkChildNode(node Node) { if n.children[node.Id()] == nil { n.children[node.Id()] = node n.UpAdjustDiskUsageDelta(node.GetDiskUsages())