diff --git a/weed/worker/client.go b/weed/worker/client.go index a90eac643..9066afdf3 100644 --- a/weed/worker/client.go +++ b/weed/worker/client.go @@ -74,11 +74,12 @@ func NewGrpcAdminClient(adminAddress string, workerID string, dialOption grpc.Di // Connect establishes gRPC connection to admin server with TLS detection func (c *GrpcAdminClient) Connect() error { c.mutex.Lock() - defer c.mutex.Unlock() - if c.connected { + c.mutex.Unlock() return fmt.Errorf("already connected") } + // Release lock before calling attemptConnection which needs to acquire locks internally + c.mutex.Unlock() // Always start the reconnection loop, even if initial connection fails go c.reconnectionLoop()