From 7b8929e8ba20dc05c0049258bfddb4dfa41aa02d Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Wed, 7 May 2025 18:06:10 +0200 Subject: [PATCH] add semaphore on grpc --- management/server/grpcserver.go | 10 ++++++++++ management/server/peer.go | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/management/server/grpcserver.go b/management/server/grpcserver.go index 43d35f643..65f095bd2 100644 --- a/management/server/grpcserver.go +++ b/management/server/grpcserver.go @@ -444,6 +444,16 @@ func (s *GRPCServer) Login(ctx context.Context, req *proto.EncryptedMessage) (*p //nolint ctx = context.WithValue(ctx, nbContext.AccountIDKey, accountID) + err = TryAcquire(loginReq.GetPeerKeys().String()) + if err != nil { + log.WithContext(ctx).Debugf("error while acquiring grpc semaphore for %s: %v", loginReq.GetPeerKeys().String(), err) + return nil, err + } + + defer func() { + Release(loginReq.GetPeerKeys().String()) + }() + if loginReq.GetMeta() == nil { msg := status.Errorf(codes.FailedPrecondition, "peer system meta has to be provided to log in. Peer %s, remote addr %s", peerKey.String(), realIP) diff --git a/management/server/peer.go b/management/server/peer.go index df528e295..e7d14dd3b 100644 --- a/management/server/peer.go +++ b/management/server/peer.go @@ -463,7 +463,6 @@ func TryAcquire(key string) error { return nil } -// Release marks a worker key as free. func Release(key string) { mu.Lock() defer mu.Unlock()