Browse Source

shell: only one shell is allowed to connect to the cluster

fix https://github.com/chrislusf/seaweedfs/issues/1266
pull/1273/head
Chris Lu 5 years ago
parent
commit
5361f999ed
  1. 13
      weed/server/master_grpc_server.go
  2. 2
      weed/server/master_server.go

13
weed/server/master_grpc_server.go

@ -190,6 +190,19 @@ func (ms *MasterServer) KeepConnected(stream master_pb.Seaweed_KeepConnectedServ
peerAddress := findClientAddress(stream.Context(), req.GrpcPort)
// only one shell can be connected at any time
if req.Name == "shell" {
if ms.currentAdminShellClient == ""{
ms.currentAdminShellClient = peerAddress
defer func() {
ms.currentAdminShellClient = ""
}()
} else {
return fmt.Errorf("only one concurrent shell allowed, but another shell is already connected from %s", peerAddress)
}
}
stopChan := make(chan bool)
clientName, messageChan := ms.addClient(req.Name, peerAddress)

2
weed/server/master_server.go

@ -64,6 +64,8 @@ type MasterServer struct {
grpcDialOption grpc.DialOption
MasterClient *wdclient.MasterClient
currentAdminShellClient string
}
func NewMasterServer(r *mux.Router, option *MasterOption, peers []string) *MasterServer {

Loading…
Cancel
Save