go-tarantool: Connect method freezes and context.WithTimeout doest recover it
./picodata run --data-dir d1 --listen localhost:3301 --pg-listen localhost:5432
./picodata run --data-dir d2 --listen localhost:3302 --pg-listen localhost:5433 --peer localhost:3301
echo "CREATE USER \"stress\" WITH PASSWORD 'Secrett5' USING chap-sha1;
ALTER USER \"stress\" WITH LOGIN;
GRANT CREATE TABLE TO \"stress\";
GRANT ALTER TABLE TO \"stress\";
GRANT DROP TABLE TO \"stress\";
GRANT READ TABLE TO \"stress\";
GRANT WRITE TABLE TO \"stress\";" | ./picodata admin d1/admin.sock
package main
import (
"context"
"fmt"
"time"
"github.com/tarantool/go-tarantool/v2"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
dialer := tarantool.NetDialer{
Address: "localhost:5432",
User: "stress",
Password: "Secrett5",
}
opts := tarantool.Opts{
Timeout: 0,
}
println("before!")
conn, err := tarantool.Connect(ctx, dialer, opts)
println("after!")
if err != nil {
fmt.Println("Connection refused:", err)
return
}
data, err := conn.Do(
tarantool.NewCallRequest(".proc_version_info").Args([]any{})).Get()
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Data:", data)
}
}
Edited by Georgiy Lomakin