Skip to content

Commit be339ca

Browse files
authored
Merge pull request #262 from ydb-platform/rename-router-to-balancer
* Renamed `internal/router` package to `internal/balancer` for unambi…
2 parents d25adf4 + cd49a69 commit be339ca

22 files changed

+255
-263
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Fixed data race on session stream queries
2+
* Renamed `internal/router` package to `internal/balancer` for unambiguous understanding of package mission
13
* Implemented detection of local data-center with measuring tcp dial RTT
24
* Added `trace.Driver.OnBalancer{Init,Close,ChooseEndpoint,Update}` events
35
* Marked the driver cluster events as deprecated

balancers/balancers.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,31 @@ package balancers
33
import (
44
"strings"
55

6+
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
67
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
7-
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
88
)
99

1010
// Deprecated: RoundRobin is RandomChoice now
11-
func RoundRobin() *routerconfig.Config {
12-
return &routerconfig.Config{}
11+
func RoundRobin() *balancerConfig.Config {
12+
return &balancerConfig.Config{}
1313
}
1414

15-
func RandomChoice() *routerconfig.Config {
16-
return &routerconfig.Config{}
15+
func RandomChoice() *balancerConfig.Config {
16+
return &balancerConfig.Config{}
1717
}
1818

19-
func SingleConn() *routerconfig.Config {
20-
return &routerconfig.Config{
19+
func SingleConn() *balancerConfig.Config {
20+
return &balancerConfig.Config{
2121
SingleConn: true,
2222
}
2323
}
2424

2525
// PreferLocalDC creates balancer which use endpoints only in location such as initial endpoint location
2626
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
2727
// PreferLocalDC balancer try to autodetect local DC from client side.
28-
func PreferLocalDC(balancer *routerconfig.Config) *routerconfig.Config {
29-
balancer.IsPreferConn = func(routerInfo routerconfig.Info, c conn.Conn) bool {
30-
return c.Endpoint().Location() == routerInfo.SelfLocation
28+
func PreferLocalDC(balancer *balancerConfig.Config) *balancerConfig.Config {
29+
balancer.IsPreferConn = func(info balancerConfig.Info, c conn.Conn) bool {
30+
return c.Endpoint().Location() == info.SelfLocation
3131
}
3232
balancer.DetectlocalDC = true
3333
return balancer
@@ -36,22 +36,22 @@ func PreferLocalDC(balancer *routerconfig.Config) *routerconfig.Config {
3636
// PreferLocalDCWithFallBack creates balancer which use endpoints only in location such as initial endpoint location
3737
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
3838
// If filter returned zero endpoints from all discovery endpoints list - used all endpoint instead
39-
func PreferLocalDCWithFallBack(balancer *routerconfig.Config) *routerconfig.Config {
39+
func PreferLocalDCWithFallBack(balancer *balancerConfig.Config) *balancerConfig.Config {
4040
balancer = PreferLocalDC(balancer)
4141
balancer.AllowFalback = true
4242
return balancer
4343
}
4444

4545
// PreferLocations creates balancer which use endpoints only in selected locations (such as "ABC", "DEF", etc.)
4646
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
47-
func PreferLocations(balancer *routerconfig.Config, locations ...string) *routerconfig.Config {
47+
func PreferLocations(balancer *balancerConfig.Config, locations ...string) *balancerConfig.Config {
4848
if len(locations) == 0 {
4949
panic("empty list of locations")
5050
}
5151
for i := range locations {
5252
locations[i] = strings.ToUpper(locations[i])
5353
}
54-
balancer.IsPreferConn = func(_ routerconfig.Info, c conn.Conn) bool {
54+
balancer.IsPreferConn = func(_ balancerConfig.Info, c conn.Conn) bool {
5555
location := strings.ToUpper(c.Endpoint().Location())
5656
for _, l := range locations {
5757
if location == l {
@@ -66,7 +66,7 @@ func PreferLocations(balancer *routerconfig.Config, locations ...string) *router
6666
// PreferLocationsWithFallback creates balancer which use endpoints only in selected locations
6767
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
6868
// If filter returned zero endpoints from all discovery endpoints list - used all endpoint instead
69-
func PreferLocationsWithFallback(balancer *routerconfig.Config, locations ...string) *routerconfig.Config {
69+
func PreferLocationsWithFallback(balancer *balancerConfig.Config, locations ...string) *balancerConfig.Config {
7070
balancer = PreferLocations(balancer, locations...)
7171
balancer.AllowFalback = true
7272
return balancer
@@ -84,8 +84,8 @@ type Endpoint interface {
8484

8585
// Prefer creates balancer which use endpoints by filter
8686
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter
87-
func Prefer(balancer *routerconfig.Config, filter func(endpoint Endpoint) bool) *routerconfig.Config {
88-
balancer.IsPreferConn = func(_ routerconfig.Info, c conn.Conn) bool {
87+
func Prefer(balancer *balancerConfig.Config, filter func(endpoint Endpoint) bool) *balancerConfig.Config {
88+
balancer.IsPreferConn = func(_ balancerConfig.Info, c conn.Conn) bool {
8989
return filter(c.Endpoint())
9090
}
9191
return balancer
@@ -94,13 +94,13 @@ func Prefer(balancer *routerconfig.Config, filter func(endpoint Endpoint) bool)
9494
// PreferWithFallback creates balancer which use endpoints by filter
9595
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter
9696
// If filter returned zero endpoints from all discovery endpoints list - used all endpoint instead
97-
func PreferWithFallback(balancer *routerconfig.Config, filter func(endpoint Endpoint) bool) *routerconfig.Config {
97+
func PreferWithFallback(balancer *balancerConfig.Config, filter func(endpoint Endpoint) bool) *balancerConfig.Config {
9898
balancer = Prefer(balancer, filter)
9999
balancer.AllowFalback = true
100100
return balancer
101101
}
102102

103103
// Default balancer used by default
104-
func Default() *routerconfig.Config {
104+
func Default() *balancerConfig.Config {
105105
return RandomChoice()
106106
}

balancers/balancers_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import (
55

66
"github.com/stretchr/testify/require"
77

8+
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
89
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
910
"github.com/ydb-platform/ydb-go-sdk/v3/internal/mock"
10-
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
1111
)
1212

1313
func TestPreferLocalDC(t *testing.T) {
@@ -18,7 +18,7 @@ func TestPreferLocalDC(t *testing.T) {
1818
}
1919
rr := PreferLocalDC(Default())
2020
require.False(t, rr.AllowFalback)
21-
require.Equal(t, []conn.Conn{conns[1], conns[2]}, applyPreferFilter(routerconfig.Info{SelfLocation: "2"}, rr, conns))
21+
require.Equal(t, []conn.Conn{conns[1], conns[2]}, applyPreferFilter(balancerConfig.Info{SelfLocation: "2"}, rr, conns))
2222
}
2323

2424
func TestPreferLocalDCWithFallBack(t *testing.T) {
@@ -29,7 +29,7 @@ func TestPreferLocalDCWithFallBack(t *testing.T) {
2929
}
3030
rr := PreferLocalDCWithFallBack(Default())
3131
require.True(t, rr.AllowFalback)
32-
require.Equal(t, []conn.Conn{conns[1], conns[2]}, applyPreferFilter(routerconfig.Info{SelfLocation: "2"}, rr, conns))
32+
require.Equal(t, []conn.Conn{conns[1], conns[2]}, applyPreferFilter(balancerConfig.Info{SelfLocation: "2"}, rr, conns))
3333
}
3434

3535
func TestPreferLocations(t *testing.T) {
@@ -41,7 +41,7 @@ func TestPreferLocations(t *testing.T) {
4141

4242
rr := PreferLocations(Default(), "zero", "two")
4343
require.False(t, rr.AllowFalback)
44-
require.Equal(t, []conn.Conn{conns[0], conns[2]}, applyPreferFilter(routerconfig.Info{}, rr, conns))
44+
require.Equal(t, []conn.Conn{conns[0], conns[2]}, applyPreferFilter(balancerConfig.Info{}, rr, conns))
4545
}
4646

4747
func TestPreferLocationsWithFallback(t *testing.T) {
@@ -53,12 +53,12 @@ func TestPreferLocationsWithFallback(t *testing.T) {
5353

5454
rr := PreferLocationsWithFallback(Default(), "zero", "two")
5555
require.True(t, rr.AllowFalback)
56-
require.Equal(t, []conn.Conn{conns[0], conns[2]}, applyPreferFilter(routerconfig.Info{}, rr, conns))
56+
require.Equal(t, []conn.Conn{conns[0], conns[2]}, applyPreferFilter(balancerConfig.Info{}, rr, conns))
5757
}
5858

59-
func applyPreferFilter(info routerconfig.Info, b *routerconfig.Config, conns []conn.Conn) []conn.Conn {
59+
func applyPreferFilter(info balancerConfig.Info, b *balancerConfig.Config, conns []conn.Conn) []conn.Conn {
6060
if b.IsPreferConn == nil {
61-
b.IsPreferConn = func(routerInfo routerconfig.Info, c conn.Conn) bool { return true }
61+
b.IsPreferConn = func(info balancerConfig.Info, c conn.Conn) bool { return true }
6262
}
6363
res := make([]conn.Conn, 0, len(conns))
6464
for _, c := range conns {

balancers/config.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"encoding/json"
55
"fmt"
66

7-
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
7+
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
88
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
99
)
1010

@@ -31,13 +31,13 @@ type balancersConfig struct {
3131
}
3232

3333
type fromConfigOptionsHolder struct {
34-
fallbackBalancer *routerconfig.Config
34+
fallbackBalancer *balancerConfig.Config
3535
errorHandler func(error)
3636
}
3737

3838
type fromConfigOption func(h *fromConfigOptionsHolder)
3939

40-
func WithParseErrorFallbackBalancer(b *routerconfig.Config) fromConfigOption {
40+
func WithParseErrorFallbackBalancer(b *balancerConfig.Config) fromConfigOption {
4141
return func(h *fromConfigOptionsHolder) {
4242
h.fallbackBalancer = b
4343
}
@@ -49,9 +49,9 @@ func WithParseErrorHandler(errorHandler func(error)) fromConfigOption {
4949
}
5050
}
5151

52-
func CreateFromConfig(config string) (*routerconfig.Config, error) {
52+
func CreateFromConfig(config string) (*balancerConfig.Config, error) {
5353
var (
54-
b *routerconfig.Config
54+
b *balancerConfig.Config
5555
err error
5656
c balancersConfig
5757
)
@@ -90,12 +90,12 @@ func CreateFromConfig(config string) (*routerconfig.Config, error) {
9090
}
9191
}
9292

93-
func FromConfig(config string, opts ...fromConfigOption) *routerconfig.Config {
93+
func FromConfig(config string, opts ...fromConfigOption) *balancerConfig.Config {
9494
var (
9595
h = fromConfigOptionsHolder{
9696
fallbackBalancer: Default(),
9797
}
98-
b *routerconfig.Config
98+
b *balancerConfig.Config
9999
err error
100100
)
101101
for _, o := range opts {

balancers/config_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55

66
"github.com/stretchr/testify/require"
77

8-
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
8+
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
99

1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
1111
)
@@ -14,45 +14,45 @@ func TestFromConfig(t *testing.T) {
1414
for _, test := range []struct {
1515
name string
1616
config string
17-
res routerconfig.Config
17+
res balancerConfig.Config
1818
fail bool
1919
}{
2020
{
2121
name: "empty",
2222
config: ``,
23-
res: routerconfig.Config{},
23+
res: balancerConfig.Config{},
2424
fail: true,
2525
},
2626
{
2727
name: "single",
2828
config: `{
2929
"type": "single"
3030
}`,
31-
res: routerconfig.Config{SingleConn: true},
31+
res: balancerConfig.Config{SingleConn: true},
3232
},
3333
{
3434
name: "round_robin",
3535
config: `{
3636
"type": "round_robin"
3737
}`,
38-
res: routerconfig.Config{},
38+
res: balancerConfig.Config{},
3939
},
4040
{
4141
name: "random_choice",
4242
config: `{
4343
"type": "random_choice"
4444
}`,
45-
res: routerconfig.Config{},
45+
res: balancerConfig.Config{},
4646
},
4747
{
4848
name: "prefer_local_dc",
4949
config: `{
5050
"type": "random_choice",
5151
"prefer": "local_dc"
5252
}`,
53-
res: routerconfig.Config{
53+
res: balancerConfig.Config{
5454
DetectlocalDC: true,
55-
IsPreferConn: func(routerInfo routerconfig.Info, c conn.Conn) bool {
55+
IsPreferConn: func(info balancerConfig.Info, c conn.Conn) bool {
5656
// some non nil func
5757
return false
5858
},
@@ -73,10 +73,10 @@ func TestFromConfig(t *testing.T) {
7373
"prefer": "local_dc",
7474
"fallback": true
7575
}`,
76-
res: routerconfig.Config{
76+
res: balancerConfig.Config{
7777
AllowFalback: true,
7878
DetectlocalDC: true,
79-
IsPreferConn: func(routerInfo routerconfig.Info, c conn.Conn) bool {
79+
IsPreferConn: func(info balancerConfig.Info, c conn.Conn) bool {
8080
// some non nil func
8181
return false
8282
},
@@ -89,8 +89,8 @@ func TestFromConfig(t *testing.T) {
8989
"prefer": "locations",
9090
"locations": ["AAA", "BBB", "CCC"]
9191
}`,
92-
res: routerconfig.Config{
93-
IsPreferConn: func(routerInfo routerconfig.Info, c conn.Conn) bool {
92+
res: balancerConfig.Config{
93+
IsPreferConn: func(info balancerConfig.Info, c conn.Conn) bool {
9494
// some non nil func
9595
return false
9696
},
@@ -104,9 +104,9 @@ func TestFromConfig(t *testing.T) {
104104
"locations": ["AAA", "BBB", "CCC"],
105105
"fallback": true
106106
}`,
107-
res: routerconfig.Config{
107+
res: balancerConfig.Config{
108108
AllowFalback: true,
109-
IsPreferConn: func(routerInfo routerconfig.Info, c conn.Conn) bool {
109+
IsPreferConn: func(info balancerConfig.Info, c conn.Conn) bool {
110110
// some non nil func
111111
return false
112112
},
@@ -116,7 +116,7 @@ func TestFromConfig(t *testing.T) {
116116
t.Run(test.name, func(t *testing.T) {
117117
var (
118118
actErr error
119-
fallback = &routerconfig.Config{}
119+
fallback = &balancerConfig.Config{}
120120
)
121121
b := FromConfig(
122122
test.config,

config/config.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"google.golang.org/grpc"
1111
grpcCodes "google.golang.org/grpc/codes"
1212

13-
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
13+
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
1414

1515
"github.com/ydb-platform/ydb-go-sdk/v3/balancers"
1616
"github.com/ydb-platform/ydb-go-sdk/v3/credentials"
@@ -25,19 +25,19 @@ import (
2525
type Config struct {
2626
config.Common
2727

28-
trace trace.Driver
29-
dialTimeout time.Duration
30-
connectionTTL time.Duration
31-
routerConfig *routerconfig.Config
32-
secure bool
33-
endpoint string
34-
database string
35-
requestsType string
36-
userAgent string
37-
grpcOptions []grpc.DialOption
38-
credentials credentials.Credentials
39-
tlsConfig *tls.Config
40-
meta meta.Meta
28+
trace trace.Driver
29+
dialTimeout time.Duration
30+
connectionTTL time.Duration
31+
balancerConfig *balancerConfig.Config
32+
secure bool
33+
endpoint string
34+
database string
35+
requestsType string
36+
userAgent string
37+
grpcOptions []grpc.DialOption
38+
credentials credentials.Credentials
39+
tlsConfig *tls.Config
40+
meta meta.Meta
4141

4242
excludeGRPCCodesForPessimization []grpcCodes.Code
4343
}
@@ -105,8 +105,8 @@ func (c Config) Trace() trace.Driver {
105105

106106
// Balancer is an optional configuration related to selected balancer.
107107
// That is, some balancing methods allow to be configured.
108-
func (c Config) Balancer() *routerconfig.Config {
109-
return c.routerConfig
108+
func (c Config) Balancer() *balancerConfig.Config {
109+
return c.balancerConfig
110110
}
111111

112112
// RequestsType set an additional type hint to all requests.
@@ -229,9 +229,9 @@ func WithDialTimeout(timeout time.Duration) Option {
229229
}
230230
}
231231

232-
func WithBalancer(balancer *routerconfig.Config) Option {
232+
func WithBalancer(balancer *balancerConfig.Config) Option {
233233
return func(c *Config) {
234-
c.routerConfig = balancer
234+
c.balancerConfig = balancer
235235
}
236236
}
237237

@@ -312,8 +312,8 @@ func defaultConfig() (c Config) {
312312
credentials: credentials.NewAnonymousCredentials(
313313
credentials.WithSourceInfo("default"),
314314
),
315-
routerConfig: balancers.Default(),
316-
tlsConfig: defaultTLSConfig(),
315+
balancerConfig: balancers.Default(),
316+
tlsConfig: defaultTLSConfig(),
317317
grpcOptions: []grpc.DialOption{
318318
grpc.WithContextDialer(
319319
func(ctx context.Context, address string) (net.Conn, error) {

0 commit comments

Comments
 (0)