2
0

Implement maximum connection idle time (MaxConnIdleTime) for pgxpool.

If a connection has been idle for longer than maxConnIdleTime, the health check will destroy it.
This commit is contained in:
Patrick Ellul
2020-01-28 16:36:34 +11:00
parent 366c926137
commit 5082e30c4c
4 changed files with 47 additions and 3 deletions
+23
View File
@@ -253,6 +253,29 @@ func TestPoolBackgroundChecksMaxConnLifetime(t *testing.T) {
assert.EqualValues(t, 0, stats.TotalConns())
}
func TestPoolBackgroundChecksMaxConnIdleTime(t *testing.T) {
t.Parallel()
config, err := pgxpool.ParseConfig(os.Getenv("PGX_TEST_DATABASE"))
require.NoError(t, err)
config.MaxConnLifetime = 1 * time.Minute
config.MaxConnIdleTime = 100 * time.Millisecond
config.HealthCheckPeriod = 150 * time.Millisecond
db, err := pgxpool.ConnectConfig(context.Background(), config)
require.NoError(t, err)
defer db.Close()
c, err := db.Acquire(context.Background())
require.NoError(t, err)
c.Release()
time.Sleep(config.HealthCheckPeriod + 50*time.Millisecond)
stats := db.Stat()
assert.EqualValues(t, 0, stats.TotalConns())
}
func TestPoolExec(t *testing.T) {
t.Parallel()