Idle connections are never replaced after timeout
fmoor opened this issue · 0 comments
fmoor commented
When a connection is closed because it's idle timeout expires the connection is never replaced which effectively reduces the pool's concurrency by 1.
Version:
github.com/edgedb/edgedb-go v0.13.4
Reproduction
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/edgedb/edgedb-go"
)
func query(ctx context.Context, db *edgedb.Client) error {
var result int64
return db.QuerySingle(ctx, `select 1 + 1`, &result)
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 65*time.Second)
defer cancel()
client, err := edgedb.CreateClient(ctx, edgedb.Options{Concurrency: 1})
if err != nil {
log.Fatal(err)
}
fmt.Println("first query")
err = query(ctx, client)
if err != nil {
log.Fatal(err)
}
fmt.Println("sleeping...")
time.Sleep(60 * time.Second)
fmt.Println("second query")
err = query(ctx, client)
if err != nil {
log.Fatal(err)
}
}