Chris Lu
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
9 additions and
4 deletions
-
weed/topology/topology.go
-
weed/topology/volume_growth.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 { |
|
|
|
|
|
@ -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 |
|
|
|
} |
|
|
|