Skip to content

Commit c446b8f

Browse files
authored
Merge pull request #355 from ydb-platform/default-dial-timeout
* Defined default dial timeout (5 seconds)
2 parents 302d048 + db48c8e commit c446b8f

File tree

5 files changed

+103
-105
lines changed

5 files changed

+103
-105
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Defined default dial timeout (5 seconds)
2+
13
## v3.35.1
24
* Removed the deprecation warning for `ydb.WithSessionPoolIdleThreshold` option
35

config/config.go

Lines changed: 6 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
11
package config
22

33
import (
4-
"context"
54
"crypto/tls"
65
"crypto/x509"
7-
"net"
86
"time"
97

108
"google.golang.org/grpc"
119
grpcCodes "google.golang.org/grpc/codes"
1210

13-
"github.com/ydb-platform/ydb-go-sdk/v3/balancers"
1411
"github.com/ydb-platform/ydb-go-sdk/v3/credentials"
1512
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
1613
"github.com/ydb-platform/ydb-go-sdk/v3/internal/config"
1714
"github.com/ydb-platform/ydb-go-sdk/v3/internal/meta"
18-
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/xnet"
19-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xresolver"
2015
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
2116
)
2217

@@ -259,18 +254,15 @@ func ExcludeGRPCCodesForPessimization(codes ...grpcCodes.Code) Option {
259254

260255
func New(opts ...Option) Config {
261256
c := defaultConfig()
257+
262258
for _, o := range opts {
263259
o(&c)
264260
}
265-
c.grpcOptions = append(c.grpcOptions,
266-
grpcCredentials(c.secure, c.tlsConfig),
267-
)
268-
c.meta = meta.New(
269-
c.database,
270-
c.credentials,
271-
c.trace,
272-
c.metaOptions...,
273-
)
261+
262+
c.grpcOptions = append(c.grpcOptions, grpcOptions(c.trace, c.secure, c.tlsConfig)...)
263+
264+
c.meta = meta.New(c.database, c.credentials, c.trace, c.metaOptions...)
265+
274266
return c
275267
}
276268

@@ -287,55 +279,3 @@ func (c Config) With(opts ...Option) Config {
287279
)
288280
return c
289281
}
290-
291-
func certPool() *x509.CertPool {
292-
certPool, err := x509.SystemCertPool()
293-
if err == nil {
294-
return certPool
295-
}
296-
return x509.NewCertPool()
297-
}
298-
299-
func defaultTLSConfig() *tls.Config {
300-
return &tls.Config{
301-
MinVersion: tls.VersionTLS12,
302-
RootCAs: certPool(),
303-
}
304-
}
305-
306-
func defaultConfig() (c Config) {
307-
return Config{
308-
credentials: credentials.NewAnonymousCredentials(
309-
credentials.WithSourceInfo("default"),
310-
),
311-
balancerConfig: balancers.Default(),
312-
tlsConfig: defaultTLSConfig(),
313-
grpcOptions: []grpc.DialOption{
314-
grpc.WithContextDialer(
315-
func(ctx context.Context, address string) (net.Conn, error) {
316-
return builder.New(
317-
ctx,
318-
address,
319-
c.trace,
320-
)
321-
},
322-
),
323-
grpc.WithKeepaliveParams(
324-
DefaultGrpcConnectionPolicy,
325-
),
326-
grpc.WithDefaultServiceConfig(`{
327-
"loadBalancingPolicy": "round_robin"
328-
}`),
329-
grpc.WithDefaultCallOptions(
330-
grpc.MaxCallRecvMsgSize(DefaultGRPCMsgSize),
331-
grpc.MaxCallSendMsgSize(DefaultGRPCMsgSize),
332-
),
333-
grpc.WithResolvers(
334-
xresolver.New("", c.trace),
335-
xresolver.New("ydb", c.trace),
336-
xresolver.New("grpc", c.trace),
337-
xresolver.New("grpcs", c.trace),
338-
),
339-
},
340-
}
341-
}

config/defaults.go

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package config
2+
3+
import (
4+
"context"
5+
"crypto/tls"
6+
"crypto/x509"
7+
"net"
8+
"time"
9+
10+
"google.golang.org/grpc"
11+
grpcCredentials "google.golang.org/grpc/credentials"
12+
"google.golang.org/grpc/credentials/insecure"
13+
"google.golang.org/grpc/keepalive"
14+
15+
"github.com/ydb-platform/ydb-go-sdk/v3/balancers"
16+
"github.com/ydb-platform/ydb-go-sdk/v3/credentials"
17+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xnet"
18+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xresolver"
19+
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
20+
)
21+
22+
var (
23+
// DefaultKeepaliveInterval contains default duration between grpc keepalive
24+
DefaultKeepaliveInterval = 10 * time.Second
25+
MinKeepaliveInterval = 10 * time.Second
26+
DefaultDialTimeout = 5 * time.Second
27+
DefaultGRPCMsgSize = 64 * 1024 * 1024 // 64MB
28+
DefaultGrpcConnectionPolicy = keepalive.ClientParameters{
29+
Time: DefaultKeepaliveInterval,
30+
Timeout: MinKeepaliveInterval,
31+
PermitWithoutStream: true,
32+
}
33+
)
34+
35+
func grpcOptions(t trace.Driver, secure bool, tlsConfig *tls.Config) (opts []grpc.DialOption) {
36+
opts = append(opts,
37+
grpc.WithContextDialer(
38+
func(ctx context.Context, address string) (net.Conn, error) {
39+
return xnet.New(ctx, address, t)
40+
},
41+
),
42+
grpc.WithKeepaliveParams(
43+
DefaultGrpcConnectionPolicy,
44+
),
45+
grpc.WithDefaultServiceConfig(`{
46+
"loadBalancingPolicy": "round_robin"
47+
}`),
48+
grpc.WithDefaultCallOptions(
49+
grpc.MaxCallRecvMsgSize(DefaultGRPCMsgSize),
50+
grpc.MaxCallSendMsgSize(DefaultGRPCMsgSize),
51+
),
52+
grpc.WithResolvers(
53+
xresolver.New("", t),
54+
xresolver.New("ydb", t),
55+
xresolver.New("grpc", t),
56+
xresolver.New("grpcs", t),
57+
),
58+
)
59+
if secure {
60+
opts = append(opts, grpc.WithTransportCredentials(
61+
grpcCredentials.NewTLS(tlsConfig),
62+
))
63+
} else {
64+
opts = append(opts, grpc.WithTransportCredentials(
65+
insecure.NewCredentials(),
66+
))
67+
}
68+
return opts
69+
}
70+
71+
func certPool() *x509.CertPool {
72+
certPool, err := x509.SystemCertPool()
73+
if err == nil {
74+
return certPool
75+
}
76+
return x509.NewCertPool()
77+
}
78+
79+
func defaultTLSConfig() *tls.Config {
80+
return &tls.Config{
81+
MinVersion: tls.VersionTLS12,
82+
RootCAs: certPool(),
83+
}
84+
}
85+
86+
func defaultConfig() (c Config) {
87+
return Config{
88+
credentials: credentials.NewAnonymousCredentials(
89+
credentials.WithSourceInfo("default"),
90+
),
91+
balancerConfig: balancers.Default(),
92+
tlsConfig: defaultTLSConfig(),
93+
dialTimeout: DefaultDialTimeout,
94+
}
95+
}

config/grpc_credentials.go

Lines changed: 0 additions & 20 deletions
This file was deleted.

config/keepalive.go

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)