From 943e1514068ad8649f30aaf5e017fb556d07b94b Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Wed, 7 May 2025 19:23:34 +0200 Subject: [PATCH] fix select order --- net/peer/peer.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/peer/peer.go b/net/peer/peer.go index 1c73af0b..b3885e4b 100644 --- a/net/peer/peer.go +++ b/net/peer/peer.go @@ -174,12 +174,13 @@ func (p *peer) AcquireDrpcConn(ctx context.Context) (drpc.Conn, error) { func (p *peer) ReleaseDrpcConn(ctx context.Context, conn drpc.Conn) { var closed bool select { + case <-conn.Closed(): + closed = true case <-ctx.Done(): // in case ctx is closed the connection may be not yet closed because of the signal logic in the drpc manager + // but, we want to shortcut to avoid race conditions _ = conn.Close() closed = true - case <-conn.Closed(): - closed = true default: // make sure this connection doesn't have an unfinished work if connCasted, ok := conn.(connUnblocked); ok {