Skip to content

Commit afee622

Browse files
authored
Merge pull request #260 from ydb-platform/move-config-to-router
rename balancer to routerconfig
2 parents 3b1cce8 + 3e83482 commit afee622

File tree

12 files changed

+72
-156
lines changed

12 files changed

+72
-156
lines changed

balancers/balancers.go

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

6-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
76
"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() balancer.Balancer {
12-
return &balancer.Config{}
11+
func RoundRobin() *routerconfig.Config {
12+
return &routerconfig.Config{}
1313
}
1414

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

19-
func SingleConn() balancer.Balancer {
20-
return &balancer.Config{
19+
func SingleConn() *routerconfig.Config {
20+
return &routerconfig.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
27-
func PreferLocalDC(balancer balancer.Balancer) balancer.Balancer {
27+
func PreferLocalDC(balancer *routerconfig.Config) *routerconfig.Config {
2828
balancer.IsPreferConn = func(c conn.Conn) bool {
2929
return c.Endpoint().LocalDC()
3030
}
@@ -34,15 +34,15 @@ func PreferLocalDC(balancer balancer.Balancer) balancer.Balancer {
3434
// PreferLocalDCWithFallBack creates balancer which use endpoints only in location such as initial endpoint location
3535
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
3636
// If filter returned zero endpoints from all discovery endpoints list - used all endpoint instead
37-
func PreferLocalDCWithFallBack(balancer balancer.Balancer) balancer.Balancer {
37+
func PreferLocalDCWithFallBack(balancer *routerconfig.Config) *routerconfig.Config {
3838
balancer = PreferLocalDC(balancer)
3939
balancer.AllowFalback = true
4040
return balancer
4141
}
4242

4343
// PreferLocations creates balancer which use endpoints only in selected locations (such as "ABC", "DEF", etc.)
4444
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
45-
func PreferLocations(balancer balancer.Balancer, locations ...string) balancer.Balancer {
45+
func PreferLocations(balancer *routerconfig.Config, locations ...string) *routerconfig.Config {
4646
if len(locations) == 0 {
4747
panic("empty list of locations")
4848
}
@@ -64,7 +64,7 @@ func PreferLocations(balancer balancer.Balancer, locations ...string) balancer.B
6464
// PreferLocationsWithFallback creates balancer which use endpoints only in selected locations
6565
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter by location
6666
// If filter returned zero endpoints from all discovery endpoints list - used all endpoint instead
67-
func PreferLocationsWithFallback(balancer balancer.Balancer, locations ...string) balancer.Balancer {
67+
func PreferLocationsWithFallback(balancer *routerconfig.Config, locations ...string) *routerconfig.Config {
6868
balancer = PreferLocations(balancer, locations...)
6969
balancer.AllowFalback = true
7070
return balancer
@@ -79,7 +79,7 @@ type Endpoint interface {
7979

8080
// Prefer creates balancer which use endpoints by filter
8181
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter
82-
func Prefer(balancer balancer.Balancer, filter func(endpoint Endpoint) bool) balancer.Balancer {
82+
func Prefer(balancer *routerconfig.Config, filter func(endpoint Endpoint) bool) *routerconfig.Config {
8383
balancer.IsPreferConn = func(c conn.Conn) bool {
8484
return filter(c.Endpoint())
8585
}
@@ -89,13 +89,13 @@ func Prefer(balancer balancer.Balancer, filter func(endpoint Endpoint) bool) bal
8989
// PreferWithFallback creates balancer which use endpoints by filter
9090
// Balancer "balancer" defines balancing algorithm between endpoints selected with filter
9191
// If filter returned zero endpoints from all discovery endpoints list - used all endpoint instead
92-
func PreferWithFallback(balancer balancer.Balancer, filter func(endpoint Endpoint) bool) balancer.Balancer {
92+
func PreferWithFallback(balancer *routerconfig.Config, filter func(endpoint Endpoint) bool) *routerconfig.Config {
9393
balancer = Prefer(balancer, filter)
9494
balancer.AllowFalback = true
9595
return balancer
9696
}
9797

9898
// Default balancer used by default
99-
func Default() balancer.Balancer {
99+
func Default() *routerconfig.Config {
100100
return RandomChoice()
101101
}

balancers/balancers_test.go

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

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

8-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/mock"
9-
10-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
118
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
9+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/mock"
10+
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
1211
)
1312

1413
func TestPreferLocalDC(t *testing.T) {
@@ -57,7 +56,7 @@ func TestPreferLocationsWithFallback(t *testing.T) {
5756
require.Equal(t, []conn.Conn{conns[0], conns[2]}, applyPreferFilter(rr, conns))
5857
}
5958

60-
func applyPreferFilter(b balancer.Balancer, conns []conn.Conn) []conn.Conn {
59+
func applyPreferFilter(b *routerconfig.Config, conns []conn.Conn) []conn.Conn {
6160
if b.IsPreferConn == nil {
6261
b.IsPreferConn = func(c conn.Conn) bool { return true }
6362
}

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-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
7+
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/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 balancer.Balancer
34+
fallbackBalancer *routerconfig.Config
3535
errorHandler func(error)
3636
}
3737

3838
type fromConfigOption func(h *fromConfigOptionsHolder)
3939

40-
func WithParseErrorFallbackBalancer(b balancer.Balancer) fromConfigOption {
40+
func WithParseErrorFallbackBalancer(b *routerconfig.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) (balancer.Balancer, error) {
52+
func CreateFromConfig(config string) (*routerconfig.Config, error) {
5353
var (
54-
b balancer.Balancer
54+
b *routerconfig.Config
5555
err error
5656
c balancersConfig
5757
)
@@ -90,12 +90,12 @@ func CreateFromConfig(config string) (balancer.Balancer, error) {
9090
}
9191
}
9292

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

balancers/config_test.go

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,56 @@
11
package balancers
22

33
import (
4-
"context"
54
"testing"
65

76
"github.com/stretchr/testify/require"
87

9-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
8+
routerconfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/router/config"
9+
1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
1111
)
1212

13-
type testBalancer struct{}
14-
15-
func (t testBalancer) Next(ctx context.Context, opts ...balancer.NextOption) conn.Conn {
16-
panic("unexpected call")
17-
}
18-
19-
func (t testBalancer) Create([]conn.Conn) balancer.Balancer {
20-
panic("unexpected call")
21-
}
22-
2313
func TestFromConfig(t *testing.T) {
2414
for _, test := range []struct {
2515
name string
2616
config string
27-
res balancer.Config
17+
res routerconfig.Config
2818
fail bool
2919
}{
3020
{
3121
name: "empty",
3222
config: ``,
33-
res: balancer.Config{},
23+
res: routerconfig.Config{},
3424
fail: true,
3525
},
3626
{
3727
name: "single",
3828
config: `{
3929
"type": "single"
4030
}`,
41-
res: balancer.Config{SingleConn: true},
31+
res: routerconfig.Config{SingleConn: true},
4232
},
4333
{
4434
name: "round_robin",
4535
config: `{
4636
"type": "round_robin"
4737
}`,
48-
res: balancer.Config{},
38+
res: routerconfig.Config{},
4939
},
5040
{
5141
name: "random_choice",
5242
config: `{
5343
"type": "random_choice"
5444
}`,
55-
res: balancer.Config{},
45+
res: routerconfig.Config{},
5646
},
5747
{
5848
name: "prefer_local_dc",
5949
config: `{
6050
"type": "random_choice",
6151
"prefer": "local_dc"
6252
}`,
63-
res: balancer.Config{IsPreferConn: func(c conn.Conn) bool {
53+
res: routerconfig.Config{IsPreferConn: func(c conn.Conn) bool {
6454
// some non nil func
6555
return false
6656
}},
@@ -80,7 +70,7 @@ func TestFromConfig(t *testing.T) {
8070
"prefer": "local_dc",
8171
"fallback": true
8272
}`,
83-
res: balancer.Config{
73+
res: routerconfig.Config{
8474
AllowFalback: true,
8575
IsPreferConn: func(c conn.Conn) bool {
8676
// some non nil func
@@ -95,7 +85,7 @@ func TestFromConfig(t *testing.T) {
9585
"prefer": "locations",
9686
"locations": ["AAA", "BBB", "CCC"]
9787
}`,
98-
res: balancer.Config{
88+
res: routerconfig.Config{
9989
IsPreferConn: func(c conn.Conn) bool {
10090
// some non nil func
10191
return false
@@ -110,7 +100,7 @@ func TestFromConfig(t *testing.T) {
110100
"locations": ["AAA", "BBB", "CCC"],
111101
"fallback": true
112102
}`,
113-
res: balancer.Config{
103+
res: routerconfig.Config{
114104
AllowFalback: true,
115105
IsPreferConn: func(c conn.Conn) bool {
116106
// some non nil func
@@ -122,7 +112,7 @@ func TestFromConfig(t *testing.T) {
122112
t.Run(test.name, func(t *testing.T) {
123113
var (
124114
actErr error
125-
fallback = &balancer.Config{}
115+
fallback = &routerconfig.Config{}
126116
)
127117
b := FromConfig(
128118
test.config,

config/config.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ 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"
14+
1315
"github.com/ydb-platform/ydb-go-sdk/v3/balancers"
1416
"github.com/ydb-platform/ydb-go-sdk/v3/credentials"
15-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
1617
"github.com/ydb-platform/ydb-go-sdk/v3/internal/config"
1718
"github.com/ydb-platform/ydb-go-sdk/v3/internal/meta"
1819
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/xnet"
@@ -27,7 +28,7 @@ type Config struct {
2728
trace trace.Driver
2829
dialTimeout time.Duration
2930
connectionTTL time.Duration
30-
balancer balancer.Balancer
31+
balancer *routerconfig.Config
3132
secure bool
3233
endpoint string
3334
database string
@@ -104,7 +105,7 @@ func (c Config) Trace() trace.Driver {
104105

105106
// Balancer is an optional configuration related to selected balancer.
106107
// That is, some balancing methods allow to be configured.
107-
func (c Config) Balancer() balancer.Balancer {
108+
func (c Config) Balancer() *routerconfig.Config {
108109
return c.balancer
109110
}
110111

@@ -228,7 +229,7 @@ func WithDialTimeout(timeout time.Duration) Option {
228229
}
229230
}
230231

231-
func WithBalancer(balancer balancer.Balancer) Option {
232+
func WithBalancer(balancer *routerconfig.Config) Option {
232233
return func(c *Config) {
233234
c.balancer = balancer
234235
}

internal/balancer/balancer.go

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

0 commit comments

Comments
 (0)