aboutsummaryrefslogtreecommitdiff
path: root/weed/server/master_grpc_server.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/server/master_grpc_server.go')
-rw-r--r--weed/server/master_grpc_server.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go
index 256a4be52..dcf279e1d 100644
--- a/weed/server/master_grpc_server.go
+++ b/weed/server/master_grpc_server.go
@@ -4,12 +4,13 @@ import (
"context"
"errors"
"fmt"
- "github.com/google/uuid"
- "github.com/seaweedfs/seaweedfs/weed/cluster"
"net"
"sort"
"time"
+ "github.com/google/uuid"
+ "github.com/seaweedfs/seaweedfs/weed/cluster"
+
"github.com/seaweedfs/seaweedfs/weed/pb"
"github.com/seaweedfs/seaweedfs/weed/stats"
"github.com/seaweedfs/seaweedfs/weed/storage/backend"
@@ -89,7 +90,7 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ
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 || len(message.DeletedEcVids) > 0 {
+ if ms.Topo.IsLeader() && (len(message.DeletedVids) > 0 || len(message.DeletedEcVids) > 0) {
ms.broadcastToClients(&master_pb.KeepConnectedResponse{VolumeLocation: message})
}
}
@@ -338,8 +339,14 @@ func (ms *MasterServer) KeepConnected(stream master_pb.Seaweed_KeepConnectedServ
func (ms *MasterServer) broadcastToClients(message *master_pb.KeepConnectedResponse) {
ms.clientChansLock.RLock()
- for _, ch := range ms.clientChans {
- ch <- message
+ for client, ch := range ms.clientChans {
+ select {
+ case ch <- message:
+ glog.V(4).Infof("send message to %s", client)
+ default:
+ stats.MasterBroadcastToFullErrorCounter.Inc()
+ glog.Errorf("broadcastToClients %s message full", client)
+ }
}
ms.clientChansLock.RUnlock()
}