Open
Description
Bug Report
YDB GO SDK version:
v3.84.1
Environment
Ubuntu, x86_64
Current behavior:
Balancers initializes grpc pool with 2 connections refers to different endpoints. First correct and second to localhost.
As a result following error occures:
[error] failed to initialize database, got error transport/Unavailable (code = 14, source error = "rpc error: code = Unavailable desc = last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:2136: connect: connection refused\"", address: "localhost:2136", nodeID = 1, traceID: "e3fb36d4-10ae-4b4a-bddb-a7c80d4418b8") at `github.com/ydb-platform/ydb-go-sdk/v3/internal/conn.invoke(conn.go:392)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer.(*Balancer).wrapCall(balancer.go:313)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table.newSession(session.go:142)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table.(*Client).CreateSession.func1(client.go:108)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table.(*Client).CreateSession(client.go:116)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql.(*Connector).Connect(connector.go:348)`
transport/Unavailable (code = 14, source error = "rpc error: code = Unavailable desc = last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:2136: connect: connection refused\"", address: "localhost:2136", nodeID = 1, traceID: "e3fb36d4-10ae-4b4a-bddb-a7c80d4418b8") at `github.com/ydb-platform/ydb-go-sdk/v3/internal/conn.invoke(conn.go:392)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer.(*Balancer).wrapCall(balancer.go:313)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table.newSession(session.go:142)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table.(*Client).CreateSession.func1(client.go:108)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table.(*Client).CreateSession(client.go:116)` at `github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql.(*Connector).Connect(connector.go:348)`
Expected behavior:
All connections in pool a refers to a correct endpoint specified in constructor.
Steps to reproduce:
Use not a localhost endpoint
Related code:
db, err := gorm.Open(ydb.Open(
"grpc://192.168.20.20:2136/local",
ydb.With(ydb2.WithStaticCredentials(
"user1",
"pswd",
),
//ydb2.With(config.WithNoAutoRetry()), ydb2.WithBalancer(balancers.SingleConn()), // UNCOMMENT FOR WORKAROUND
),
), &gorm.Config{
Logger: logger.New(
log.Default(),
logger.Config{
SlowThreshold: time.Second,
LogLevel: logger.Error,
},
),
})
if err != nil {
fmt.Println(err)
err = s.CloseConnect(db)
if err != nil {
return nil, err
}
return nil, err
}
Other information:
uncomment line from the example for a workaround.
debug screen