diff options
| author | hilimd <68371223+hilimd@users.noreply.github.com> | 2020-09-23 11:39:57 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-23 11:39:57 +0800 |
| commit | 85570f27a0baf1fb7327d047b5b826eda34e652f (patch) | |
| tree | abe712fd7b420c5e251f2f91e1386dbe37a762ab /weed/server/master_grpc_server.go | |
| parent | a99f63cb4d8d1bcbdeba3c735947ca9992914d5c (diff) | |
| parent | 3e52329cee39f3a83f58d3896514547093ff0cf8 (diff) | |
| download | seaweedfs-85570f27a0baf1fb7327d047b5b826eda34e652f.tar.xz seaweedfs-85570f27a0baf1fb7327d047b5b826eda34e652f.zip | |
Merge pull request #17 from chrislusf/master
sync
Diffstat (limited to 'weed/server/master_grpc_server.go')
| -rw-r--r-- | weed/server/master_grpc_server.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index f3a2ee013..692909a29 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -187,7 +187,8 @@ func (ms *MasterServer) KeepConnected(stream master_pb.Seaweed_KeepConnectedServ peerAddress := findClientAddress(stream.Context(), req.GrpcPort) - stopChan := make(chan bool) + // buffer by 1 so we don't end up getting stuck writing to stopChan forever + stopChan := make(chan bool, 1) clientName, messageChan := ms.addClient(req.Name, peerAddress) @@ -247,7 +248,12 @@ func (ms *MasterServer) addClient(clientType string, clientAddress string) (clie clientName = clientType + "@" + clientAddress glog.V(0).Infof("+ client %v", clientName) - messageChan = make(chan *master_pb.VolumeLocation) + // we buffer this because otherwise we end up in a potential deadlock where + // the KeepConnected loop is no longer listening on this channel but we're + // trying to send to it in SendHeartbeat and so we can't lock the + // clientChansLock to remove the channel and we're stuck writing to it + // 100 is probably overkill + messageChan = make(chan *master_pb.VolumeLocation, 100) ms.clientChansLock.Lock() ms.clientChans[clientName] = messageChan |
