From dc4037925d34c15dcc77f4fb6fc6006aec7fb74b Mon Sep 17 00:00:00 2001 From: famosss Date: Sat, 27 Aug 2022 13:52:08 +0800 Subject: [PATCH] fix: Build DeletedVids before reset dn's children (#3530) --- weed/server/master_grpc_server.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index e917909ae..4b65979bd 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -68,11 +68,6 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ glog.V(0).Infof("disconnect phantom volume server %s:%d remaining %d", dn.Ip, dn.Port, dn.Counter) return } - // if the volume server disconnects and reconnects quickly - // the unregister and register can race with each other - ms.Topo.UnRegisterDataNode(dn) - glog.V(0).Infof("unregister disconnected volume server %s:%d", dn.Ip, dn.Port) - ms.UnRegisterUuids(dn.Ip, dn.Port) message := &master_pb.VolumeLocation{ Url: dn.Url(), @@ -85,6 +80,12 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ message.DeletedVids = append(message.DeletedVids, uint32(s.VolumeId)) } + // if the volume server disconnects and reconnects quickly + // the unregister and register can race with each other + ms.Topo.UnRegisterDataNode(dn) + glog.V(0).Infof("unregister disconnected volume server %s:%d", dn.Ip, dn.Port) + ms.UnRegisterUuids(dn.Ip, dn.Port) + if len(message.DeletedVids) > 0 { ms.broadcastToClients(&master_pb.KeepConnectedResponse{VolumeLocation: message}) }