mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
Merge pull request #1683 from qieqieplus/master
fix race condition when loading volumes concurrently
This commit is contained in:
commit
8cb67952db
|
@ -99,12 +99,14 @@ func (l *DiskLocation) loadExistingVolume(fileInfo os.FileInfo, needleMapKind Ne
|
|||
}
|
||||
|
||||
// avoid loading one volume more than once
|
||||
l.volumesLock.RLock()
|
||||
_, found := l.volumes[vid]
|
||||
l.volumesLock.RUnlock()
|
||||
if found {
|
||||
l.volumesLock.Lock()
|
||||
if _, found := l.volumes[vid]; found {
|
||||
l.volumesLock.Unlock()
|
||||
glog.V(1).Infof("loaded volume, %v", vid)
|
||||
return true
|
||||
} else {
|
||||
l.volumes[vid] = nil
|
||||
l.volumesLock.Unlock()
|
||||
}
|
||||
|
||||
// load the volume
|
||||
|
@ -113,7 +115,7 @@ func (l *DiskLocation) loadExistingVolume(fileInfo os.FileInfo, needleMapKind Ne
|
|||
glog.V(0).Infof("new volume %s error %s", volumeName, e)
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
l.SetVolume(vid, v)
|
||||
|
||||
size, _, _ := v.FileStat()
|
||||
|
|
Loading…
Reference in a new issue