From 0bc3cdd26ae96de640b8b06896dff2baf7605abf Mon Sep 17 00:00:00 2001 From: chenwanli Date: Mon, 25 Feb 2019 10:47:41 +0800 Subject: [PATCH] Fix https://github.com/chrislusf/seaweedfs/issues/825 --- weed/topology/topology.go | 8 +++++--- weed/topology/volume_growth.go | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/weed/topology/topology.go b/weed/topology/topology.go index 619cc9696..77716605a 100644 --- a/weed/topology/topology.go +++ b/weed/topology/topology.go @@ -88,11 +88,13 @@ func (t *Topology) Lookup(collection string, vid storage.VolumeId) []*DataNode { return nil } -func (t *Topology) NextVolumeId() storage.VolumeId { +func (t *Topology) NextVolumeId() (storage.VolumeId, error) { vid := t.GetMaxVolumeId() next := vid.Next() - go t.RaftServer.Do(NewMaxVolumeIdCommand(next)) - return next + if _, err := t.RaftServer.Do(NewMaxVolumeIdCommand(next)); err != nil { + return 0, err + } + return next, nil } func (t *Topology) HasWritableVolume(option *VolumeGrowOption) bool { diff --git a/weed/topology/volume_growth.go b/weed/topology/volume_growth.go index 3d178b827..ef39a1c01 100644 --- a/weed/topology/volume_growth.go +++ b/weed/topology/volume_growth.go @@ -82,7 +82,10 @@ func (vg *VolumeGrowth) findAndGrow(grpcDialOption grpc.DialOption, topo *Topolo if e != nil { return 0, e } - vid := topo.NextVolumeId() + vid, raftErr := topo.NextVolumeId() + if raftErr != nil { + return 0, raftErr + } err := vg.grow(grpcDialOption, topo, vid, option, servers...) return len(servers), err }