diff --git a/weed-fs/src/pkg/replication/volume_growth.go b/weed-fs/src/pkg/replication/volume_growth.go index 3942c5743..b73a89339 100644 --- a/weed-fs/src/pkg/replication/volume_growth.go +++ b/weed-fs/src/pkg/replication/volume_growth.go @@ -7,6 +7,7 @@ import ( "pkg/operation" "pkg/storage" "pkg/topology" + "sync" ) /* @@ -22,6 +23,8 @@ type VolumeGrowth struct { copy2factor int copy3factor int copyAll int + + accessLock sync.Mutex } func NewDefaultVolumeGrowth() *VolumeGrowth { @@ -46,6 +49,9 @@ func (vg *VolumeGrowth) GrowByType(repType storage.ReplicationType, topo *topolo return 0, errors.New("Unknown Replication Type!") } func (vg *VolumeGrowth) GrowByCountAndType(count int, repType storage.ReplicationType, topo *topology.Topology) (counter int, err error) { + vg.accessLock.Lock() + defer vg.accessLock.Unlock() + counter = 0 switch repType { case storage.Copy000: