2
0

CreateResource sets LastUsedNanotime so that Idle Time calculations are still valid

This commit is contained in:
Patrick Ellul
2020-02-03 15:56:07 +11:00
parent 426c57eed9
commit c42fada37e
2 changed files with 4 additions and 6 deletions
+1
View File
@@ -388,6 +388,7 @@ func (p *Pool) CreateResource(ctx context.Context) error {
creationTime: time.Now(), creationTime: time.Now(),
status: resourceStatusIdle, status: resourceStatusIdle,
value: value, value: value,
lastUsedNano: nanotime(),
} }
p.cond.L.Lock() p.cond.L.Lock()
+3 -6
View File
@@ -255,21 +255,18 @@ func TestPoolCreateResource(t *testing.T) {
err = pool.CreateResource(context.Background()) err = pool.CreateResource(context.Background())
require.NoError(t, err) require.NoError(t, err)
allIdle := pool.AcquireAllIdle()
assert.Equal(t, counter.Value(), allIdle[0].Value())
allIdle[0].ReleaseUnused()
stats := pool.Stat() stats := pool.Stat()
assert.EqualValues(t, 1, stats.IdleResources()) assert.EqualValues(t, 1, stats.IdleResources())
res, err := pool.Acquire(context.Background()) res, err := pool.Acquire(context.Background())
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, counter.Value(), res.Value())
assert.True(t, res.LastUsedNanotime() > 0, "should set LastUsedNanotime so that idle calculations can still work")
assert.Equal(t, 1, res.Value()) assert.Equal(t, 1, res.Value())
assert.WithinDuration(t, time.Now(), res.CreationTime(), time.Second) assert.WithinDuration(t, time.Now(), res.CreationTime(), time.Second)
res.Release() res.Release()
stats = pool.Stat() assert.EqualValues(t, 0, pool.Stat().EmptyAcquireCount(), "should have been a warm resource")
assert.EqualValues(t, 0, stats.EmptyAcquireCount())
} }
func TestPoolCreateResourceReturnsErrorFromFailedResourceCreate(t *testing.T) { func TestPoolCreateResourceReturnsErrorFromFailedResourceCreate(t *testing.T) {