diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2022-06-27 21:23:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-27 21:23:48 -0700 |
| commit | 8d810f83059b593cc2a15055bee7a39672e9779b (patch) | |
| tree | 7e33749a683498444dd45800ad87807a1424cd36 /weed/cluster/cluster.go | |
| parent | 4b1f48a399ac8e18154929b942d47e10c60a54d9 (diff) | |
| parent | e1b94eb6b96c89e97f1a431d2e0b53ad3db11ee4 (diff) | |
| download | seaweedfs-8d810f83059b593cc2a15055bee7a39672e9779b.tar.xz seaweedfs-8d810f83059b593cc2a15055bee7a39672e9779b.zip | |
Merge pull request #3251 from shichanglin5/fix_concurrent_write_read
Diffstat (limited to 'weed/cluster/cluster.go')
| -rw-r--r-- | weed/cluster/cluster.go | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/weed/cluster/cluster.go b/weed/cluster/cluster.go index 6c24df44c..ad6e6b879 100644 --- a/weed/cluster/cluster.go +++ b/weed/cluster/cluster.go @@ -46,8 +46,6 @@ func NewCluster() *Cluster { } func (cluster *Cluster) getFilers(filerGroup FilerGroup, createIfNotFound bool) *Filers { - cluster.filersLock.Lock() - defer cluster.filersLock.Unlock() filers, found := cluster.filerGroup2filers[filerGroup] if !found && createIfNotFound { filers = &Filers{ @@ -63,6 +61,8 @@ func (cluster *Cluster) AddClusterNode(ns, nodeType string, address pb.ServerAdd filerGroup := FilerGroup(ns) switch nodeType { case FilerType: + cluster.filersLock.Lock() + defer cluster.filersLock.Unlock() filers := cluster.getFilers(filerGroup, true) if existingNode, found := filers.filers[address]; found { existingNode.counter++ @@ -115,6 +115,8 @@ func (cluster *Cluster) RemoveClusterNode(ns string, nodeType string, address pb filerGroup := FilerGroup(ns) switch nodeType { case FilerType: + cluster.filersLock.Lock() + defer cluster.filersLock.Unlock() filers := cluster.getFilers(filerGroup, false) if filers == nil { return nil @@ -165,12 +167,12 @@ func (cluster *Cluster) RemoveClusterNode(ns string, nodeType string, address pb func (cluster *Cluster) ListClusterNode(filerGroup FilerGroup, nodeType string) (nodes []*ClusterNode) { switch nodeType { case FilerType: + cluster.filersLock.RLock() + defer cluster.filersLock.RUnlock() filers := cluster.getFilers(filerGroup, false) if filers == nil { return } - cluster.filersLock.RLock() - defer cluster.filersLock.RUnlock() for _, node := range filers.filers { nodes = append(nodes, node) } |
