aboutsummaryrefslogtreecommitdiff
path: root/weed/server
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-06-23 00:41:33 -0700
committerchrislu <chris.lu@gmail.com>2022-06-23 00:41:33 -0700
commit96496d5286ca172bf3237d856b2273a0b85e6819 (patch)
tree43283a356c1c287029ae16c97fabd8925bb41326 /weed/server
parent52c44d646e530a78936bed4915e47cae8dfa63c2 (diff)
downloadseaweedfs-96496d5286ca172bf3237d856b2273a0b85e6819.tar.xz
seaweedfs-96496d5286ca172bf3237d856b2273a0b85e6819.zip
master: broadcast new volume locations to clients to avoid possible racing condition
fix https://github.com/chrislusf/seaweedfs/issues/3220
Diffstat (limited to 'weed/server')
-rw-r--r--weed/server/master_grpc_server_volume.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/weed/server/master_grpc_server_volume.go b/weed/server/master_grpc_server_volume.go
index bc92dd332..0382c2dae 100644
--- a/weed/server/master_grpc_server_volume.go
+++ b/weed/server/master_grpc_server_volume.go
@@ -52,8 +52,13 @@ func (ms *MasterServer) ProcessGrowRequest() {
go func() {
glog.V(1).Infoln("starting automatic volume grow")
start := time.Now()
- _, err := ms.vg.AutomaticGrowByType(req.Option, ms.grpcDialOption, ms.Topo, req.Count)
+ newVidLocations, err := ms.vg.AutomaticGrowByType(req.Option, ms.grpcDialOption, ms.Topo, req.Count)
glog.V(1).Infoln("finished automatic volume grow, cost ", time.Now().Sub(start))
+ if err == nil {
+ for _, newVidLocation := range newVidLocations {
+ ms.broadcastToClients(&master_pb.KeepConnectedResponse{VolumeLocation: newVidLocation})
+ }
+ }
vl.DoneGrowRequest()
if req.ErrCh != nil {