Skip to content

Commit 7927f42

Browse files
committed
add internal retryer's to lazy discovery, scheme, scripting and table clients
1 parent 0f98551 commit 7927f42

File tree

5 files changed

+65
-17
lines changed

5 files changed

+65
-17
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
## 3.8.12
2-
* Fixed `test.TestTable`
2+
* Unwrap sub-tests called as `t.Run(...)` in integration tests
33
* Updated `grpc` dependency (from `v1.38.0` to `v1.43.0`)
44
* Updated `protobuf` dependency (from `v1.26.0` to `v1.27.1`)
5+
* Added internal retryers into `lazy.Ratelimiter`
6+
* Added internal retryers into `lazy.Coordination`
7+
* Added internal retryers into `lazy.Discovery`
8+
* Added internal retryers into `lazy.Scheme`
9+
* Added internal retryers into `lazy.Scripting`
10+
* Added internal retryer into `lazy.Table.CreateSession`
511

612
## 3.8.11
713
* Fixed version

internal/lazy/discovery.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/ydb-platform/ydb-go-sdk/v3/internal/db"
99
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/discovery"
1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/endpoint"
11+
"github.com/ydb-platform/ydb-go-sdk/v3/retry"
1112
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
1213
)
1314

@@ -27,14 +28,22 @@ func Discovery(db db.Connection, trace trace.Driver) discovery.Client {
2728
}
2829
}
2930

30-
func (d *lazyDiscovery) Discover(ctx context.Context) ([]endpoint.Endpoint, error) {
31+
func (d *lazyDiscovery) Discover(ctx context.Context) (endpoints []endpoint.Endpoint, err error) {
3132
d.init()
32-
return d.client.Discover(ctx)
33+
err = retry.Retry(ctx, true, func(ctx context.Context) (err error) {
34+
endpoints, err = d.client.Discover(ctx)
35+
return err
36+
})
37+
return endpoints, err
3338
}
3439

35-
func (d *lazyDiscovery) WhoAmI(ctx context.Context) (*discovery.WhoAmI, error) {
40+
func (d *lazyDiscovery) WhoAmI(ctx context.Context) (whoAmI *discovery.WhoAmI, err error) {
3641
d.init()
37-
return d.client.WhoAmI(ctx)
42+
err = retry.Retry(ctx, true, func(ctx context.Context) (err error) {
43+
whoAmI, err = d.client.WhoAmI(ctx)
44+
return err
45+
})
46+
return whoAmI, err
3847
}
3948

4049
func (d *lazyDiscovery) Close(ctx context.Context) error {

internal/lazy/scheme.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/ydb-platform/ydb-go-sdk/v3/internal/db"
88
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/scheme"
9+
"github.com/ydb-platform/ydb-go-sdk/v3/retry"
910
"github.com/ydb-platform/ydb-go-sdk/v3/scheme"
1011
)
1112

@@ -27,7 +28,9 @@ func (s *lazyScheme) ModifyPermissions(
2728
opts ...scheme.PermissionsOption,
2829
) (err error) {
2930
s.init()
30-
return s.client.ModifyPermissions(ctx, path, opts...)
31+
return retry.Retry(ctx, false, func(ctx context.Context) (err error) {
32+
return s.client.ModifyPermissions(ctx, path, opts...)
33+
})
3134
}
3235

3336
func (s *lazyScheme) Close(ctx context.Context) error {
@@ -52,20 +55,32 @@ func (s *lazyScheme) init() {
5255

5356
func (s *lazyScheme) DescribePath(ctx context.Context, path string) (e scheme.Entry, err error) {
5457
s.init()
55-
return s.client.DescribePath(ctx, path)
58+
err = retry.Retry(ctx, true, func(ctx context.Context) (err error) {
59+
e, err = s.client.DescribePath(ctx, path)
60+
return err
61+
})
62+
return e, err
5663
}
5764

5865
func (s *lazyScheme) MakeDirectory(ctx context.Context, path string) (err error) {
5966
s.init()
60-
return s.client.MakeDirectory(ctx, path)
67+
return retry.Retry(ctx, false, func(ctx context.Context) (err error) {
68+
return s.client.MakeDirectory(ctx, path)
69+
})
6170
}
6271

6372
func (s *lazyScheme) ListDirectory(ctx context.Context, path string) (d scheme.Directory, err error) {
6473
s.init()
65-
return s.client.ListDirectory(ctx, path)
74+
err = retry.Retry(ctx, true, func(ctx context.Context) (err error) {
75+
d, err = s.client.ListDirectory(ctx, path)
76+
return err
77+
})
78+
return d, err
6679
}
6780

6881
func (s *lazyScheme) RemoveDirectory(ctx context.Context, path string) (err error) {
6982
s.init()
70-
return s.client.RemoveDirectory(ctx, path)
83+
return retry.Retry(ctx, false, func(ctx context.Context) (err error) {
84+
return s.client.RemoveDirectory(ctx, path)
85+
})
7186
}

internal/lazy/scripting.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/ydb-platform/ydb-go-sdk/v3/internal/db"
88
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/scripting"
9+
"github.com/ydb-platform/ydb-go-sdk/v3/retry"
910
"github.com/ydb-platform/ydb-go-sdk/v3/scripting"
1011
"github.com/ydb-platform/ydb-go-sdk/v3/table"
1112
"github.com/ydb-platform/ydb-go-sdk/v3/table/result"
@@ -21,27 +22,39 @@ func (s *lazyScripting) Execute(
2122
ctx context.Context,
2223
query string,
2324
params *table.QueryParameters,
24-
) (result.Result, error) {
25+
) (res result.Result, err error) {
2526
s.init()
26-
return s.client.Execute(ctx, query, params)
27+
err = retry.Retry(ctx, false, func(ctx context.Context) (err error) {
28+
res, err = s.client.Execute(ctx, query, params)
29+
return err
30+
})
31+
return res, err
2732
}
2833

2934
func (s *lazyScripting) Explain(
3035
ctx context.Context,
3136
query string,
3237
mode scripting.ExplainMode,
33-
) (table.ScriptingYQLExplanation, error) {
38+
) (e table.ScriptingYQLExplanation, err error) {
3439
s.init()
35-
return s.client.Explain(ctx, query, mode)
40+
err = retry.Retry(ctx, false, func(ctx context.Context) (err error) {
41+
e, err = s.client.Explain(ctx, query, mode)
42+
return err
43+
})
44+
return e, err
3645
}
3746

3847
func (s *lazyScripting) StreamExecute(
3948
ctx context.Context,
4049
query string,
4150
params *table.QueryParameters,
42-
) (result.StreamResult, error) {
51+
) (res result.StreamResult, err error) {
4352
s.init()
44-
return s.client.StreamExecute(ctx, query, params)
53+
err = retry.Retry(ctx, false, func(ctx context.Context) (err error) {
54+
res, err = s.client.StreamExecute(ctx, query, params)
55+
return err
56+
})
57+
return res, err
4558
}
4659

4760
func (s *lazyScripting) Close(ctx context.Context) error {

internal/lazy/table.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/ydb-platform/ydb-go-sdk/v3/internal/db"
88
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/table"
9+
"github.com/ydb-platform/ydb-go-sdk/v3/retry"
910
"github.com/ydb-platform/ydb-go-sdk/v3/table"
1011
"github.com/ydb-platform/ydb-go-sdk/v3/table/config"
1112
)
@@ -26,7 +27,11 @@ func Table(db db.Connection, options []config.Option) table.Client {
2627

2728
func (t *lazyTable) CreateSession(ctx context.Context) (s table.ClosableSession, err error) {
2829
t.init(ctx)
29-
return t.client.CreateSession(ctx)
30+
err = retry.Retry(ctx, true, func(ctx context.Context) (err error) {
31+
s, err = t.client.CreateSession(ctx)
32+
return err
33+
})
34+
return s, err
3035
}
3136

3237
func (t *lazyTable) Do(ctx context.Context, op table.Operation, opts ...table.Option) (err error) {

0 commit comments

Comments
 (0)