Skip to content

Commit

Permalink
fix scripting package name + add public discovery package
Browse files Browse the repository at this point in the history
  • Loading branch information
asmyasnikov committed Feb 1, 2022
1 parent ba3aedd commit da80217
Show file tree
Hide file tree
Showing 29 changed files with 305 additions and 143 deletions.
49 changes: 48 additions & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
@@ -1,4 +1,51 @@
The following authors have created the source code of "Yandex Database GO SDK"
published and distributed by YANDEX LLC as the owner:

Aleksey Myasnikov <[email protected]>
Alexey Myasnikov [email protected], [email protected]
Sergey Kamardin [email protected]
Nikita Berezhnov [email protected], [email protected]
Andrey Terekhov [email protected]
Andrey Rotchev [email protected]
Alexander Shcherbakov [email protected]
Alexander Izyurov [email protected]
Oleg Doronin [email protected]
Dmitriy Beliakov [email protected]
Daniil Drizhuk [email protected]
Artem Zuikov [email protected]
Daniil Cherednik [email protected]
Vasiliy Gerasimov [email protected]
Sergey Puchin [email protected]
Alexey Borzenkov [email protected]
Ilnaz Nizametdinov [email protected]
Alexander Demidenko [email protected]
Nikolay Perfilov [email protected]
Andrey Haliullin [email protected]
Alexander Shabalin [email protected]
Fedor Korotkiy [email protected]
Sergey Trifonov [email protected]
Andrey Mitrofanov [email protected]
Vitaliy Gridnev [email protected]
Timofey Koolin [email protected], [email protected]
Gleb Borisov [email protected]
Evgeniy Anastasiev [email protected]
Yuriy Chernyshov [email protected]
Anton Kovalenko [email protected]
Sergey Ermolaev [email protected]
Alexey Efimov [email protected]
Damir Makhmutov [email protected]
Marat Mavlyutov [email protected]
Andrey Romashchenko [email protected]
Andrey Krasichkov [email protected]
Dmitriy Sychev [email protected]
Sergey Preis [email protected]
Andrey Kraynov [email protected]
Bulat Hasanov [email protected]
Dmitry Novikov [email protected]
Ilya Sinelnikov [email protected]
Alexander Dmitriev [email protected]
Georgiy Zuikov [email protected]
Maxim Kolganov [email protected]
Arseniy Balabanov [email protected]
Andrey Stolbovsky [email protected]
Alexander Gololobov [email protected]
Vsevolod Strukchinskiy [email protected]
39 changes: 2 additions & 37 deletions config/config.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
package config

import (
"context"
"crypto/tls"
"crypto/x509"
"net"
"time"

"google.golang.org/grpc"
grpcCredentials "google.golang.org/grpc/credentials"

"github.com/ydb-platform/ydb-go-sdk/v3/balancers"
ydbCredentials "github.com/ydb-platform/ydb-go-sdk/v3/credentials"
"github.com/ydb-platform/ydb-go-sdk/v3/credentials"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/meta"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/resolver"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)

Expand All @@ -36,7 +31,7 @@ type Config interface {

// Credentials is an ydb client credentials.
// In most cases Credentials are required.
Credentials() ydbCredentials.Credentials
Credentials() credentials.Credentials

// Trace contains driver tracing options.
Trace() trace.Driver
Expand Down Expand Up @@ -130,36 +125,6 @@ func (c *config) ConnectionTTL() time.Duration {
return c.connectionTTL
}

func (c *config) GrpcDialOptions() (opts []grpc.DialOption) {
// nolint:gocritic
opts = append(
c.grpcOptions,
grpc.WithContextDialer(func(ctx context.Context, address string) (net.Conn, error) {
return newConn(ctx, address, trace.ContextDriver(ctx).Compose(c.trace))
}),
grpc.WithKeepaliveParams(DefaultGrpcConnectionPolicy),
grpc.WithResolvers(
resolver.New(""), // for use this resolver by default
resolver.New("grpc"),
resolver.New("grpcs"),
),
grpc.WithDefaultServiceConfig(`{"loadBalancingConfig": [{"round_robin":{}}]}`),
grpc.WithDefaultCallOptions(
grpc.MaxCallRecvMsgSize(DefaultGRPCMsgSize),
grpc.MaxCallSendMsgSize(DefaultGRPCMsgSize),
),
grpc.WithBlock(),
)
if c.secure {
opts = append(opts, grpc.WithTransportCredentials(
grpcCredentials.NewTLS(c.tlsConfig),
))
} else {
opts = append(opts, grpc.WithInsecure())
}
return
}

func (c *config) Secure() bool {
return c.secure
}
Expand Down
42 changes: 42 additions & 0 deletions config/grpc_dial_options.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package config

import (
"context"
"net"

"google.golang.org/grpc"
"google.golang.org/grpc/credentials"

"github.com/ydb-platform/ydb-go-sdk/v3/internal/resolver"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)

func (c *config) GrpcDialOptions() (opts []grpc.DialOption) {
// nolint:gocritic
opts = append(
c.grpcOptions,
grpc.WithContextDialer(func(ctx context.Context, address string) (net.Conn, error) {
return newConn(ctx, address, trace.ContextDriver(ctx).Compose(c.trace))
}),
grpc.WithKeepaliveParams(DefaultGrpcConnectionPolicy),
grpc.WithResolvers(
resolver.New(""), // for use this resolver by default
resolver.New("grpc"),
resolver.New("grpcs"),
),
grpc.WithDefaultServiceConfig(`{"loadBalancingConfig": [{"round_robin":{}}]}`),
grpc.WithDefaultCallOptions(
grpc.MaxCallRecvMsgSize(DefaultGRPCMsgSize),
grpc.MaxCallSendMsgSize(DefaultGRPCMsgSize),
),
grpc.WithBlock(),
)
if c.secure {
opts = append(opts, grpc.WithTransportCredentials(
credentials.NewTLS(c.tlsConfig),
))
} else {
opts = append(opts, grpc.WithInsecure())
}
return
}
12 changes: 7 additions & 5 deletions connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (

"github.com/ydb-platform/ydb-go-sdk/v3/config"
"github.com/ydb-platform/ydb-go-sdk/v3/coordination"
"github.com/ydb-platform/ydb-go-sdk/v3/discovery"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/db"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/discovery"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/errors"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/lazy"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/logger"
Expand Down Expand Up @@ -66,15 +66,17 @@ type connection struct {
config config.Config
options []config.Option
tableOptions []tableConfig.Option
conns conn.Pool
mtx sync.Mutex
db db.Connection
scripting scripting.Client

table table.Client
scheme scheme.Client
scripting scripting.Client
discovery discovery.Client
coordination coordination.Client
rateLimiter ratelimiter.Client

conns conn.Pool
mtx sync.Mutex
db db.Connection
}

func (c *connection) Close(ctx context.Context) error {
Expand Down
24 changes: 24 additions & 0 deletions discovery/client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package discovery

import (
"context"
"fmt"
"strings"

"github.com/ydb-platform/ydb-go-sdk/v3/internal/endpoint"
)

type WhoAmI struct {
User string
Groups []string
}

func (w WhoAmI) String() string {
return fmt.Sprintf("{User: %s, Groups: [%s]}", w.User, strings.Join(w.Groups, ","))
}

type Client interface {
Discover(ctx context.Context) ([]endpoint.Endpoint, error)
WhoAmI(ctx context.Context) (*WhoAmI, error)
Close(ctx context.Context) error
}
24 changes: 12 additions & 12 deletions internal/balancer/single/single.go
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
package single

import (
balancer2 "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/endpoint/info"
)

func Balancer() balancer2.Balancer {
return &balancer{}
func Balancer() balancer.Balancer {
return &single{}
}

type balancer struct {
type single struct {
conn conn.Conn
}

func (b *balancer) Create() balancer2.Balancer {
return &balancer{conn: b.conn}
func (b *single) Create() balancer.Balancer {
return &single{conn: b.conn}
}

func (b *balancer) Next() conn.Conn {
func (b *single) Next() conn.Conn {
return b.conn
}

func (b *balancer) Insert(conn conn.Conn) balancer2.Element {
func (b *single) Insert(conn conn.Conn) balancer.Element {
if b.conn != nil {
panic("ydb: single Conn Balancer: double Insert()")
}
b.conn = conn
return conn
}

func (b *balancer) Remove(x balancer2.Element) {
func (b *single) Remove(x balancer.Element) {
if b.conn != x.(conn.Conn) {
panic("ydb: single Conn Balancer: Remove() unknown Conn")
}
b.conn = nil
}

func (b *balancer) Update(balancer2.Element, info.Info) {}
func (b *single) Update(balancer.Element, info.Info) {}

func (b *balancer) Contains(x balancer2.Element) bool {
func (b *single) Contains(x balancer.Element) bool {
if x == nil {
return false
}
return b.conn != x.(conn.Conn)
}

func IsSingle(i interface{}) bool {
_, ok := i.(*balancer)
_, ok := i.(*single)
return ok
}
3 changes: 2 additions & 1 deletion internal/conn/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ import (
"sync/atomic"
"time"

"github.com/ydb-platform/ydb-go-genproto/protos/Ydb"
"google.golang.org/grpc"
"google.golang.org/grpc/connectivity"

"github.com/ydb-platform/ydb-go-genproto/protos/Ydb"

"github.com/ydb-platform/ydb-go-sdk/v3/internal/endpoint"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/errors"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/operation"
Expand Down
9 changes: 8 additions & 1 deletion internal/coordination/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,14 @@ func (c *client) DropNode(ctx context.Context, path string) (err error) {
}

// DescribeNode describes a coordination node
func (c *client) DescribeNode(ctx context.Context, path string) (_ *scheme.Entry, _ *coordination.Config, err error) {
func (c *client) DescribeNode(
ctx context.Context,
path string,
) (
_ *scheme.Entry,
_ *coordination.Config,
err error,
) {
var (
response *Ydb_Coordination.DescribeNodeResponse
result Ydb_Coordination.DescribeNodeResult
Expand Down
29 changes: 9 additions & 20 deletions internal/discovery/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,26 @@ package discovery

import (
"context"
"fmt"
"net"
"strconv"
"strings"

"google.golang.org/grpc"
"google.golang.org/protobuf/proto"

"github.com/ydb-platform/ydb-go-genproto/Ydb_Discovery_V1"
"github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Discovery"

"github.com/ydb-platform/ydb-go-sdk/v3/discovery"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/endpoint"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)

type WhoAmI struct {
User string
Groups []string
}

func (w WhoAmI) String() string {
return fmt.Sprintf("{User: %s, Groups: [%s]}", w.User, strings.Join(w.Groups, ","))
}

type Client interface {
Discover(ctx context.Context) ([]endpoint.Endpoint, error)
WhoAmI(ctx context.Context) (*WhoAmI, error)
Close(ctx context.Context) error
}

func New(conn grpc.ClientConnInterface, endpoint, database string, ssl bool, trace trace.Driver) Client {
func New(
conn grpc.ClientConnInterface,
endpoint, database string,
ssl bool,
trace trace.Driver,
) discovery.Client {
return &client{
trace: trace,
endpoint: endpoint,
Expand Down Expand Up @@ -88,7 +77,7 @@ func (d *client) Discover(ctx context.Context) (endpoints []endpoint.Endpoint, e
return endpoints, nil
}

func (d *client) WhoAmI(ctx context.Context) (*WhoAmI, error) {
func (d *client) WhoAmI(ctx context.Context) (*discovery.WhoAmI, error) {
request := Ydb_Discovery.WhoAmIRequest{}
response, err := d.service.WhoAmI(ctx, &request)
if err != nil {
Expand All @@ -99,7 +88,7 @@ func (d *client) WhoAmI(ctx context.Context) (*WhoAmI, error) {
if err != nil {
return nil, err
}
return &WhoAmI{
return &discovery.WhoAmI{
User: whoAmIResultResult.GetUser(),
Groups: whoAmIResultResult.GetGroups(),
}, nil
Expand Down
4 changes: 2 additions & 2 deletions internal/lazy/coordiantion.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"sync"

"github.com/ydb-platform/ydb-go-sdk/v3/coordination"
internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/coordination"
builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/coordination"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/db"
"github.com/ydb-platform/ydb-go-sdk/v3/scheme"
)
Expand Down Expand Up @@ -64,7 +64,7 @@ func (c *lazyCoordination) Close(ctx context.Context) error {
func (c *lazyCoordination) init() {
c.m.Lock()
if c.client == nil {
c.client = internal.New(c.db)
c.client = builder.New(c.db)
}
c.m.Unlock()
}
Loading

0 comments on commit da80217

Please sign in to comment.