add locking when adjusting topology

This commit is contained in:
Chris Lu 2012-11-13 12:13:40 -08:00
parent 6f606bb350
commit 9782ace1bd

View file

@ -7,6 +7,7 @@ import (
"pkg/operation" "pkg/operation"
"pkg/storage" "pkg/storage"
"pkg/topology" "pkg/topology"
"sync"
) )
/* /*
@ -22,6 +23,8 @@ type VolumeGrowth struct {
copy2factor int copy2factor int
copy3factor int copy3factor int
copyAll int copyAll int
accessLock sync.Mutex
} }
func NewDefaultVolumeGrowth() *VolumeGrowth { func NewDefaultVolumeGrowth() *VolumeGrowth {
@ -46,6 +49,9 @@ func (vg *VolumeGrowth) GrowByType(repType storage.ReplicationType, topo *topolo
return 0, errors.New("Unknown Replication Type!") return 0, errors.New("Unknown Replication Type!")
} }
func (vg *VolumeGrowth) GrowByCountAndType(count int, repType storage.ReplicationType, topo *topology.Topology) (counter int, err error) { 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 counter = 0
switch repType { switch repType {
case storage.Copy000: case storage.Copy000: