aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-11-22 17:15:59 -0800
committerChris Lu <chris.lu@gmail.com>2020-11-22 17:15:59 -0800
commitc7ebadc25dd47b4167b9c25d381db1276e7c5a80 (patch)
tree684a84e57d6bed48ad02ac3c5d66c08a850630a6
parent92f906b6fcce2ef72661bb825075e2826b8f3aa1 (diff)
downloadseaweedfs-c7ebadc25dd47b4167b9c25d381db1276e7c5a80.tar.xz
seaweedfs-c7ebadc25dd47b4167b9c25d381db1276e7c5a80.zip
avoid possible concurrent access inside ensureCorrectWritables()
-rw-r--r--weed/topology/topology.go4
-rw-r--r--weed/topology/volume_layout.go1
2 files changed, 3 insertions, 2 deletions
diff --git a/weed/topology/topology.go b/weed/topology/topology.go
index e217617e9..bde72cf09 100644
--- a/weed/topology/topology.go
+++ b/weed/topology/topology.go
@@ -177,7 +177,9 @@ func (t *Topology) DeleteCollection(collectionName string) {
}
func (t *Topology) RegisterVolumeLayout(v storage.VolumeInfo, dn *DataNode) {
- t.GetVolumeLayout(v.Collection, v.ReplicaPlacement, v.Ttl).RegisterVolume(&v, dn)
+ vl := t.GetVolumeLayout(v.Collection, v.ReplicaPlacement, v.Ttl)
+ vl.RegisterVolume(&v, dn)
+ vl.EnsureCorrectWritables(&v)
}
func (t *Topology) UnRegisterVolumeLayout(v storage.VolumeInfo, dn *DataNode) {
glog.Infof("removing volume info:%+v", v)
diff --git a/weed/topology/volume_layout.go b/weed/topology/volume_layout.go
index 4c9c84459..0db95d289 100644
--- a/weed/topology/volume_layout.go
+++ b/weed/topology/volume_layout.go
@@ -141,7 +141,6 @@ func (vl *VolumeLayout) RegisterVolume(v *storage.VolumeInfo, dn *DataNode) {
vl.accessLock.Lock()
defer vl.accessLock.Unlock()
- defer vl.ensureCorrectWritables(v.Id)
defer vl.rememberOversizedVolume(v, dn)
if _, ok := vl.vid2location[v.Id]; !ok {