From dba8c8505d5debb6b963b11da55785dee50c1631 Mon Sep 17 00:00:00 2001 From: Oleg Jukovec Date: Tue, 10 Dec 2024 19:16:17 +0300 Subject: [PATCH] test: fix flaky TestAdd_Close_concurrent We need to reset an error to pool.ErrClosed in a Pool.Add() method if a pool already closed or closing in progress to make the behavior deterministic. --- pool/connection_pool.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pool/connection_pool.go b/pool/connection_pool.go index 1c9d85f44..9be46665e 100644 --- a/pool/connection_pool.go +++ b/pool/connection_pool.go @@ -283,6 +283,13 @@ func (p *ConnectionPool) Add(ctx context.Context, instance Instance) error { canceled = false } if canceled { + if p.state.get() != connectedState { + // If it is canceled (or could be canceled) due to a + // Close()/CloseGraceful() call we overwrite the error + // to make behavior expected. + err = ErrClosed + } + p.endsMutex.Lock() delete(p.ends, instance.Name) p.endsMutex.Unlock()