From fd20c99c4a8ae3412308961b813b8dc43f399543 Mon Sep 17 00:00:00 2001 From: Nick Cabatoff Date: Tue, 25 Jul 2023 12:02:20 -0400 Subject: [PATCH] Use buffered channel for inmemlayer's pendingConns to fix timeout errors (#21098) Error in question is: `transport: Error while dialing: inmemlayer: timeout while accepting connection` --- vault/cluster/inmem_layer.go | 2 +- vault/cluster/inmem_layer_test.go | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/vault/cluster/inmem_layer.go b/vault/cluster/inmem_layer.go index 677a306bab..7d6db1477f 100644 --- a/vault/cluster/inmem_layer.go +++ b/vault/cluster/inmem_layer.go @@ -107,7 +107,7 @@ func (l *InmemLayer) Listeners() []NetworkListener { l.listener = &inmemListener{ addr: l.addr, - pendingConns: make(chan net.Conn), + pendingConns: make(chan net.Conn, 1), stopped: atomic.NewBool(false), stopCh: make(chan struct{}), diff --git a/vault/cluster/inmem_layer_test.go b/vault/cluster/inmem_layer_test.go index 3a0a52f6c4..e3769d0075 100644 --- a/vault/cluster/inmem_layer_test.go +++ b/vault/cluster/inmem_layer_test.go @@ -27,6 +27,7 @@ func TestInmemCluster_Connect(t *testing.T) { listener := server.Listeners()[0] var accepted int stopCh := make(chan struct{}) + defer close(stopCh) var wg sync.WaitGroup wg.Add(1) go func() { @@ -69,7 +70,6 @@ func TestInmemCluster_Connect(t *testing.T) { t.Fatal("nil conn") } - close(stopCh) wg.Wait() if accepted != 2 { @@ -93,6 +93,7 @@ func TestInmemCluster_Disconnect(t *testing.T) { listener := server.Listeners()[0] var accepted int stopCh := make(chan struct{}) + defer close(stopCh) var wg sync.WaitGroup wg.Add(1) go func() { @@ -136,7 +137,6 @@ func TestInmemCluster_Disconnect(t *testing.T) { t.Fatal("nil conn") } - close(stopCh) wg.Wait() if accepted != 1 { @@ -199,6 +199,8 @@ func TestInmemCluster_ConnectCluster(t *testing.T) { var accepted atomic.Int32 stopCh := make(chan struct{}) + defer close(stopCh) + var wg sync.WaitGroup acceptConns := func(listener NetworkListener) { wg.Add(1) @@ -255,7 +257,6 @@ func TestInmemCluster_ConnectCluster(t *testing.T) { } } - close(stopCh) wg.Wait() if accepted.Load() != 18 {