From 9782ace1bdcf055da8ae22f39e7aff975d878de4 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 13 Nov 2012 12:13:40 -0800 Subject: [PATCH] add locking when adjusting topology --- weed-fs/src/pkg/replication/volume_growth.go | 6 ++++++ 1 file changed, 6 insertions(+) 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: