diff options
Diffstat (limited to 'weed/topology')
| -rw-r--r-- | weed/topology/topology.go | 2 | ||||
| -rw-r--r-- | weed/topology/volume_growth.go | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/weed/topology/topology.go b/weed/topology/topology.go index ba3be97c4..e436b453a 100644 --- a/weed/topology/topology.go +++ b/weed/topology/topology.go @@ -55,6 +55,8 @@ type Topology struct { UuidAccessLock sync.RWMutex UuidMap map[string][]string + + LastLeaderChangeTime time.Time } func NewTopology(id string, seq sequence.Sequencer, volumeSizeLimit uint64, pulse int, replicationAsMin bool) *Topology { diff --git a/weed/topology/volume_growth.go b/weed/topology/volume_growth.go index d856bbc22..23e1d5fd6 100644 --- a/weed/topology/volume_growth.go +++ b/weed/topology/volume_growth.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" + "github.com/seaweedfs/seaweedfs/weed/server/constants" "math/rand/v2" "reflect" "sync" @@ -126,6 +127,10 @@ func (vg *VolumeGrowth) findAndGrow(grpcDialOption grpc.DialOption, topo *Topolo if e != nil { return nil, e } + for !topo.LastLeaderChangeTime.Add(constants.VolumePulseSeconds * 2).Before(time.Now()) { + glog.V(0).Infof("wait for volume servers to join back") + time.Sleep(constants.VolumePulseSeconds / 2) + } vid, raftErr := topo.NextVolumeId() if raftErr != nil { return nil, raftErr |
