2
0

Do not leave pool lock after panic from nil context

refs #13
This commit is contained in:
Jack Christensen
2021-11-13 17:39:29 -06:00
parent 69a4c02937
commit 4d33264d63
2 changed files with 17 additions and 1 deletions
+14
View File
@@ -192,6 +192,20 @@ func TestPoolTryAcquireDoesNotBlock(t *testing.T) {
assert.Equal(t, 1, createCounter.Value())
}
func TestPoolAcquireNilContextDoesNotLeavePoolLocked(t *testing.T) {
constructor, createCounter := createConstructor()
pool := puddle.NewPool(constructor, stubDestructor, 10)
assert.Panics(t, func() { pool.Acquire(nil) })
res, err := pool.Acquire(context.Background())
require.NoError(t, err)
assert.Equal(t, 1, res.Value())
res.Release()
assert.Equal(t, 1, createCounter.Value())
}
func TestPoolAcquireContextAlreadyCanceled(t *testing.T) {
constructor := func(ctx context.Context) (interface{}, error) {
panic("should never be called")