diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-02-16 10:48:16 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-02-16 10:48:16 -0800 |
| commit | 53ca7e66ef03964b2e02ae8eb64f02bbd0d0cb16 (patch) | |
| tree | e11e9b093e416faa1737fc51412bb131d2ee8af1 /weed | |
| parent | 38efc6f5727046a38e8e1903f7fb715362926b7e (diff) | |
| download | seaweedfs-53ca7e66ef03964b2e02ae8eb64f02bbd0d0cb16.tar.xz seaweedfs-53ca7e66ef03964b2e02ae8eb64f02bbd0d0cb16.zip | |
avoid dead lock
Diffstat (limited to 'weed')
| -rw-r--r-- | weed/topology/data_node.go | 2 | ||||
| -rw-r--r-- | weed/topology/node.go | 4 |
2 files changed, 5 insertions, 1 deletions
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()) |
