mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
fix(cli): fix flakes related to context cancellation when establishing pg connections (#18246)
Since https://github.com/coder/coder/pull/18195 was merged, we started running CLI tests with postgres instead of just dbmem. This surfaced errors related to context cancellation while establishing postgres connections. This PR should fix https://github.com/coder/internal/issues/672. Related to https://github.com/coder/coder/issues/15109.
This commit is contained in:
@ -552,15 +552,14 @@ func (p *PGPubsub) startListener(ctx context.Context, connectURL string) error {
|
||||
sentErrCh = true
|
||||
}),
|
||||
}
|
||||
select {
|
||||
case err = <-errCh:
|
||||
if err != nil {
|
||||
_ = p.pgListener.Close()
|
||||
return xerrors.Errorf("create pq listener: %w", err)
|
||||
}
|
||||
case <-ctx.Done():
|
||||
// We don't respect context cancellation here. There's a bug in the pq library
|
||||
// where if you close the listener before or while the connection is being
|
||||
// established, the connection will be established anyway, and will not be
|
||||
// closed.
|
||||
// https://github.com/lib/pq/issues/1192
|
||||
if err := <-errCh; err != nil {
|
||||
_ = p.pgListener.Close()
|
||||
return ctx.Err()
|
||||
return xerrors.Errorf("create pq listener: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user