From da802170e5a8c64254864eb9d96077023fe2997d Mon Sep 17 00:00:00 2001 From: asmyasnikov <79263256394@ya.ru> Date: Mon, 31 Jan 2022 15:19:32 +0300 Subject: [PATCH] fix scripting package name + add public discovery package --- AUTHORS | 49 +++++++++++++++- config/config.go | 39 +------------ config/grpc_dial_options.go | 42 +++++++++++++ connection.go | 12 ++-- discovery/client.go | 24 ++++++++ internal/balancer/single/single.go | 24 ++++---- internal/conn/conn.go | 3 +- internal/coordination/client.go | 9 ++- internal/discovery/discovery.go | 29 +++------ internal/lazy/coordiantion.go | 4 +- internal/lazy/discovery.go | 5 +- internal/lazy/ratelimiter.go | 4 +- internal/lazy/scheme.go | 10 +++- internal/lazy/scripting.go | 4 +- internal/lazy/table.go | 4 +- internal/proxy/discovery.go | 2 +- internal/scripting/scripting.go | 2 +- internal/table/client_test.go | 26 +++++++-- internal/table/scanner/result.go | 24 ++++---- internal/table/scanner/scanner.go | 2 +- internal/table/scanner/scanner_data_test.go | 6 +- internal/table/session.go | 23 ++++++-- internal/table/session_test.go | 10 ++-- log/driver.go | 9 ++- log/table.go | 65 ++++++++++++++++----- sugar/sugar.go | 2 +- table/options/models.go | 5 +- table/options/options_test.go | 6 +- test/table_test.go | 4 +- 29 files changed, 305 insertions(+), 143 deletions(-) create mode 100644 config/grpc_dial_options.go create mode 100644 discovery/client.go diff --git a/AUTHORS b/AUTHORS index 483a9f3e6..fadf37ba3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -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 +Alexey Myasnikov asmyasnikov@yandex-team.ru, 79263256394@ya.ru +Sergey Kamardin kamardin@yandex-team.ru +Nikita Berezhnov niberezhnov@yandex-team.ru, beregnovnikita@gmail.com +Andrey Terekhov tserakhau@yandex-team.ru +Andrey Rotchev arotchev@yandex-team.ru +Alexander Shcherbakov a-shch@yandex-team.ru +Alexander Izyurov lvovich@yandex-team.ru +Oleg Doronin hcpp@yandex-team.ru +Dmitriy Beliakov dbeliakov@yandex-team.ru +Daniil Drizhuk complynx@yandex-team.ru +Artem Zuikov chertus@yandex-team.ru +Daniil Cherednik dcherednik@yandex-team.ru +Vasiliy Gerasimov galaxycrab@yandex-team.ru +Sergey Puchin spuchin@yandex-team.ru +Alexey Borzenkov snaury@yandex-team.ru +Ilnaz Nizametdinov ilnaz@yandex-team.ru +Alexander Demidenko hurd@yandex-team.ru +Nikolay Perfilov pnv1@yandex-team.ru +Andrey Haliullin avhaliullin@yandex-team.ru +Alexander Shabalin alshabalin@yandex-team.ru +Fedor Korotkiy prime@yandex-team.ru +Sergey Trifonov serxa@yandex-team.ru +Andrey Mitrofanov drew@yandex-team.ru +Vitaliy Gridnev gvit@yandex-team.ru +Timofey Koolin rekby@yandex-team.ru, timofey.koolin@gmail.com +Gleb Borisov bgleb@yandex-team.ru +Evgeniy Anastasiev sheogorath@yandex-team.ru +Yuriy Chernyshov thegeorg@yandex-team.ru +Anton Kovalenko kovalad@yandex-team.ru +Sergey Ermolaev snermolaev@yandex-team.ru +Alexey Efimov xenoxeno@yandex-team.ru +Damir Makhmutov yesworld@yandex-team.ru +Marat Mavlyutov maprapuh@gmail.com +Andrey Romashchenko arovesto@yandex-team.ru +Andrey Krasichkov buglloc@yandex-team.ru +Dmitriy Sychev freyr@yandex-team.ru +Sergey Preis spreis@yandex-team.ru +Andrey Kraynov iceman@yandex-team.ru +Bulat Hasanov bkhasanov@yandex-team.ru +Dmitry Novikov novikoff@yandex-team.ru +Ilya Sinelnikov sidh@yandex-team.ru +Alexander Dmitriev monster@yandex-team.ru +Georgiy Zuikov gzuykov@yandex-team.ru +Maxim Kolganov manykey@yandex-team.ru +Arseniy Balabanov verytable@yandex-team.ru +Andrey Stolbovsky andreyst@yandex-team.ru +Alexander Gololobov agololobov@gmail.com +Vsevolod Strukchinskiy floatdrop@yandex-team.ru diff --git a/config/config.go b/config/config.go index e3ecbff16..8505c4b3e 100644 --- a/config/config.go +++ b/config/config.go @@ -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" ) @@ -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 @@ -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 } diff --git a/config/grpc_dial_options.go b/config/grpc_dial_options.go new file mode 100644 index 000000000..a368ad5a6 --- /dev/null +++ b/config/grpc_dial_options.go @@ -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 +} diff --git a/connection.go b/connection.go index 6f006b8c9..7c2e6f119 100644 --- a/connection.go +++ b/connection.go @@ -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" @@ -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 { diff --git a/discovery/client.go b/discovery/client.go new file mode 100644 index 000000000..65a6547f8 --- /dev/null +++ b/discovery/client.go @@ -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 +} diff --git a/internal/balancer/single/single.go b/internal/balancer/single/single.go index eb9f9eaef..34328fb5a 100644 --- a/internal/balancer/single/single.go +++ b/internal/balancer/single/single.go @@ -1,28 +1,28 @@ 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()") } @@ -30,16 +30,16 @@ func (b *balancer) Insert(conn conn.Conn) balancer2.Element { 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 } @@ -47,6 +47,6 @@ func (b *balancer) Contains(x balancer2.Element) bool { } func IsSingle(i interface{}) bool { - _, ok := i.(*balancer) + _, ok := i.(*single) return ok } diff --git a/internal/conn/conn.go b/internal/conn/conn.go index 745dd5bb7..e5884fb51 100644 --- a/internal/conn/conn.go +++ b/internal/conn/conn.go @@ -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" diff --git a/internal/coordination/client.go b/internal/coordination/client.go index de3a65d44..9fa96e662 100644 --- a/internal/coordination/client.go +++ b/internal/coordination/client.go @@ -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 diff --git a/internal/discovery/discovery.go b/internal/discovery/discovery.go index 98956dab8..92aaef94f 100644 --- a/internal/discovery/discovery.go +++ b/internal/discovery/discovery.go @@ -2,10 +2,8 @@ package discovery import ( "context" - "fmt" "net" "strconv" - "strings" "google.golang.org/grpc" "google.golang.org/protobuf/proto" @@ -13,26 +11,17 @@ import ( "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, @@ -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 { @@ -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 diff --git a/internal/lazy/coordiantion.go b/internal/lazy/coordiantion.go index 075bfed62..f4b9ec46d 100644 --- a/internal/lazy/coordiantion.go +++ b/internal/lazy/coordiantion.go @@ -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" ) @@ -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() } diff --git a/internal/lazy/discovery.go b/internal/lazy/discovery.go index caa91b904..40ab57eca 100644 --- a/internal/lazy/discovery.go +++ b/internal/lazy/discovery.go @@ -4,8 +4,9 @@ import ( "context" "sync" + "github.com/ydb-platform/ydb-go-sdk/v3/discovery" "github.com/ydb-platform/ydb-go-sdk/v3/internal/db" - "github.com/ydb-platform/ydb-go-sdk/v3/internal/discovery" + builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/discovery" "github.com/ydb-platform/ydb-go-sdk/v3/internal/endpoint" "github.com/ydb-platform/ydb-go-sdk/v3/trace" ) @@ -51,7 +52,7 @@ func (d *lazyDiscovery) Close(ctx context.Context) error { func (d *lazyDiscovery) init() { d.m.Lock() if d.client == nil { - d.client = discovery.New(d.db, d.db.Endpoint(), d.db.Name(), d.db.Secure(), d.trace) + d.client = builder.New(d.db, d.db.Endpoint(), d.db.Name(), d.db.Secure(), d.trace) } d.m.Unlock() } diff --git a/internal/lazy/ratelimiter.go b/internal/lazy/ratelimiter.go index 4a379c57a..e2fb33e4f 100644 --- a/internal/lazy/ratelimiter.go +++ b/internal/lazy/ratelimiter.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/ydb-platform/ydb-go-sdk/v3/internal/db" - internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/ratelimiter" + builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/ratelimiter" "github.com/ydb-platform/ydb-go-sdk/v3/ratelimiter" ) @@ -93,7 +93,7 @@ func (r *lazyRatelimiter) AcquireResource( func (r *lazyRatelimiter) init() { r.m.Lock() if r.client == nil { - r.client = internal.New(r.db) + r.client = builder.New(r.db) } r.m.Unlock() } diff --git a/internal/lazy/scheme.go b/internal/lazy/scheme.go index f9fdfa8d3..4f22fc472 100644 --- a/internal/lazy/scheme.go +++ b/internal/lazy/scheme.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/ydb-platform/ydb-go-sdk/v3/internal/db" - internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/scheme" + builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/scheme" "github.com/ydb-platform/ydb-go-sdk/v3/scheme" ) @@ -21,7 +21,11 @@ func Scheme(db db.Connection) scheme.Client { } } -func (s *lazyScheme) ModifyPermissions(ctx context.Context, path string, opts ...scheme.PermissionsOption) (err error) { +func (s *lazyScheme) ModifyPermissions( + ctx context.Context, + path string, + opts ...scheme.PermissionsOption, +) (err error) { s.init() return s.client.ModifyPermissions(ctx, path, opts...) } @@ -41,7 +45,7 @@ func (s *lazyScheme) Close(ctx context.Context) error { func (s *lazyScheme) init() { s.m.Lock() if s.client == nil { - s.client = internal.New(s.db) + s.client = builder.New(s.db) } s.m.Unlock() } diff --git a/internal/lazy/scripting.go b/internal/lazy/scripting.go index 0b2f7259b..124877430 100644 --- a/internal/lazy/scripting.go +++ b/internal/lazy/scripting.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/ydb-platform/ydb-go-sdk/v3/internal/db" - internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/scripting" + builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/scripting" "github.com/ydb-platform/ydb-go-sdk/v3/scripting" "github.com/ydb-platform/ydb-go-sdk/v3/table" "github.com/ydb-platform/ydb-go-sdk/v3/table/result" @@ -65,7 +65,7 @@ func Scripting(db db.Connection) scripting.Client { func (s *lazyScripting) init() { s.m.Lock() if s.client == nil { - s.client = internal.New(s.db) + s.client = builder.New(s.db) } s.m.Unlock() } diff --git a/internal/lazy/table.go b/internal/lazy/table.go index 6f733f8ae..4496893fc 100644 --- a/internal/lazy/table.go +++ b/internal/lazy/table.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/ydb-platform/ydb-go-sdk/v3/internal/db" - internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/table" + builder "github.com/ydb-platform/ydb-go-sdk/v3/internal/table" "github.com/ydb-platform/ydb-go-sdk/v3/table" "github.com/ydb-platform/ydb-go-sdk/v3/table/config" ) @@ -54,7 +54,7 @@ func (t *lazyTable) Close(ctx context.Context) error { func (t *lazyTable) init(ctx context.Context) { t.m.Lock() if t.client == nil { - t.client = internal.New(ctx, t.db, t.options...) + t.client = builder.New(ctx, t.db, t.options...) } t.m.Unlock() } diff --git a/internal/proxy/discovery.go b/internal/proxy/discovery.go index d38525b5a..e3dd488ed 100644 --- a/internal/proxy/discovery.go +++ b/internal/proxy/discovery.go @@ -3,7 +3,7 @@ package proxy import ( "context" - "github.com/ydb-platform/ydb-go-sdk/v3/internal/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/internal/meta" ) diff --git a/internal/scripting/scripting.go b/internal/scripting/scripting.go index 24a5bafa8..e1ab4901d 100644 --- a/internal/scripting/scripting.go +++ b/internal/scripting/scripting.go @@ -1,4 +1,4 @@ -package scheme +package scripting import ( "context" diff --git a/internal/table/client_test.go b/internal/table/client_test.go index 310d01a4d..0cc8b3e54 100644 --- a/internal/table/client_test.go +++ b/internal/table/client_test.go @@ -265,7 +265,11 @@ func TestSessionPoolClose(t *testing.T) { wg.Done() } }, - OnPoolSessionClose: func(info trace.PoolSessionCloseStartInfo) func(doneInfo trace.PoolSessionCloseDoneInfo) { + OnPoolSessionClose: func( + info trace.PoolSessionCloseStartInfo, + ) func( + doneInfo trace.PoolSessionCloseDoneInfo, + ) { wg.Add(1) return func(info trace.PoolSessionCloseDoneInfo) { wg.Done() @@ -1313,7 +1317,11 @@ func mustPutSession(t *testing.T, p *client, s Session) { wg.Done() } }, - OnPoolSessionClose: func(info trace.PoolSessionCloseStartInfo) func(doneInfo trace.PoolSessionCloseDoneInfo) { + OnPoolSessionClose: func( + info trace.PoolSessionCloseStartInfo, + ) func( + doneInfo trace.PoolSessionCloseDoneInfo, + ) { wg.Add(1) return func(info trace.PoolSessionCloseDoneInfo) { wg.Done() @@ -1335,7 +1343,13 @@ func mustTakeSession(t *testing.T, p *client, s Session) { trace.WithTable( context.Background(), trace.Table{ - OnPoolTake: func(info trace.PoolTakeStartInfo) func(trace.PoolTakeWaitInfo) func(trace.PoolTakeDoneInfo) { + OnPoolTake: func( + info trace.PoolTakeStartInfo, + ) func( + trace.PoolTakeWaitInfo, + ) func( + trace.PoolTakeDoneInfo, + ) { wg.Add(1) return func(trace.PoolTakeWaitInfo) func(trace.PoolTakeDoneInfo) { return func(trace.PoolTakeDoneInfo) { @@ -1360,7 +1374,11 @@ func mustClose(t *testing.T, p *client) { trace.WithTable( context.Background(), trace.Table{ - OnPoolSessionClose: func(info trace.PoolSessionCloseStartInfo) func(doneInfo trace.PoolSessionCloseDoneInfo) { + OnPoolSessionClose: func( + info trace.PoolSessionCloseStartInfo, + ) func( + doneInfo trace.PoolSessionCloseDoneInfo, + ) { wg.Add(1) return func(info trace.PoolSessionCloseDoneInfo) { wg.Done() diff --git a/internal/table/scanner/result.go b/internal/table/scanner/result.go index b21c8f487..e669dc8f7 100644 --- a/internal/table/scanner/result.go +++ b/internal/table/scanner/result.go @@ -10,11 +10,11 @@ import ( "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_TableStats" "github.com/ydb-platform/ydb-go-sdk/v3/internal/errors" - public "github.com/ydb-platform/ydb-go-sdk/v3/table/result" + "github.com/ydb-platform/ydb-go-sdk/v3/table/result" "github.com/ydb-platform/ydb-go-sdk/v3/table/stats" ) -type result struct { +type baseResult struct { scanner statsMtx sync.RWMutex @@ -25,14 +25,14 @@ type result struct { } type streamResult struct { - result + baseResult recv func(ctx context.Context) (*Ydb.ResultSet, *Ydb_TableStats.QueryStats, error) close func(error) error } type unaryResult struct { - result + baseResult sets []*Ydb.ResultSet nextSet int @@ -53,7 +53,7 @@ func (r *unaryResult) ResultSetCount() int { return len(r.sets) } -func (r *result) isClosed() bool { +func (r *baseResult) isClosed() bool { r.closedMtx.RLock() defer r.closedMtx.RUnlock() return r.closed @@ -64,12 +64,12 @@ type resultWithError interface { } type UnaryResult interface { - public.Result + result.Result resultWithError } type StreamResult interface { - public.StreamResult + result.StreamResult resultWithError } @@ -86,7 +86,7 @@ func NewStream( func NewUnary(sets []*Ydb.ResultSet, stats *Ydb_TableStats.QueryStats) UnaryResult { r := &unaryResult{ - result: result{ + baseResult: baseResult{ stats: stats, }, sets: sets, @@ -94,7 +94,7 @@ func NewUnary(sets []*Ydb.ResultSet, stats *Ydb_TableStats.QueryStats) UnaryResu return r } -func (r *result) Reset(set *Ydb.ResultSet, columnNames ...string) { +func (r *baseResult) Reset(set *Ydb.ResultSet, columnNames ...string) { r.reset(set) if set != nil { r.setColumnIndexes(columnNames) @@ -145,12 +145,12 @@ func (r *streamResult) NextResultSet(ctx context.Context, columns ...string) boo } // CurrentResultSet get current result set -func (r *result) CurrentResultSet() public.Set { +func (r *baseResult) CurrentResultSet() result.Set { return r } // Stats returns query execution queryStats. -func (r *result) Stats() stats.QueryStats { +func (r *baseResult) Stats() stats.QueryStats { var s queryStats r.statsMtx.RLock() s.stats = r.stats @@ -171,7 +171,7 @@ func (r *streamResult) Close() (err error) { return r.close(r.Err()) } -func (r *result) inactive() bool { +func (r *baseResult) inactive() bool { return r.isClosed() || r.Err() != nil } diff --git a/internal/table/scanner/scanner.go b/internal/table/scanner/scanner.go index ec80c4323..76b758abf 100644 --- a/internal/table/scanner/scanner.go +++ b/internal/table/scanner/scanner.go @@ -1010,7 +1010,7 @@ func (s *scanner) scan(values []interface{}) (err error) { return s.Err() } -func (r *result) SetErr(err error) { +func (r *baseResult) SetErr(err error) { r.errMtx.Lock() r.err = err r.errMtx.Unlock() diff --git a/internal/table/scanner/scanner_data_test.go b/internal/table/scanner/scanner_data_test.go index 920d88dc2..672a0960c 100644 --- a/internal/table/scanner/scanner_data_test.go +++ b/internal/table/scanner/scanner_data_test.go @@ -221,7 +221,11 @@ var scannerData = []struct { typeID: Ydb.Type_JSON, ydbvalue: true, }}, - values: []interface{}{new(types.Value), new(types.Value), new(types.Value)}, + values: []interface{}{ + new(types.Value), + new(types.Value), + new(types.Value), + }, }, { name: "Scan table with single column", diff --git a/internal/table/session.go b/internal/table/session.go index e9889757c..e9338aba5 100644 --- a/internal/table/session.go +++ b/internal/table/session.go @@ -188,7 +188,11 @@ func (s *session) KeepAlive(ctx context.Context) (err error) { } // CreateTable creates table at given path with given options. -func (s *session) CreateTable(ctx context.Context, path string, opts ...options.CreateTableOption) (err error) { +func (s *session) CreateTable( + ctx context.Context, + path string, + opts ...options.CreateTableOption, +) (err error) { request := Ydb_Table.CreateTableRequest{ SessionId: s.id, Path: path, @@ -344,7 +348,11 @@ func (s *session) AlterTable(ctx context.Context, path string, opts ...options.A } // CopyTable creates copy of table at given path. -func (s *session) CopyTable(ctx context.Context, dst, src string, opts ...options.CopyTableOption) (err error) { +func (s *session) CopyTable( + ctx context.Context, + dst, src string, + opts ...options.CopyTableOption, +) (err error) { request := Ydb_Table.CopyTableRequest{ SessionId: s.id, SourcePath: src, @@ -511,7 +519,11 @@ func keepInCache(req *Ydb_Table.ExecuteDataQueryRequest) bool { // executeQueryResult returns Transaction and result built from received // result. -func (s *session) executeQueryResult(res *Ydb_Table.ExecuteQueryResult) (table.Transaction, result.Result, error) { +func (s *session) executeQueryResult(res *Ydb_Table.ExecuteQueryResult) ( + table.Transaction, + result.Result, + error, +) { t := &Transaction{ id: res.GetTxMeta().GetId(), s: s, @@ -570,7 +582,10 @@ func (s *session) ExecuteSchemeQuery( } // DescribeTableOptions describes supported table options. -func (s *session) DescribeTableOptions(ctx context.Context) (desc options.TableOptionsDescription, err error) { +func (s *session) DescribeTableOptions(ctx context.Context) ( + desc options.TableOptionsDescription, + err error, +) { var ( response *Ydb_Table.DescribeTableOptionsResponse result Ydb_Table.DescribeTableOptionsResult diff --git a/internal/table/session_test.go b/internal/table/session_test.go index f77c490c9..f524336f0 100644 --- a/internal/table/session_test.go +++ b/internal/table/session_test.go @@ -19,7 +19,7 @@ import ( "github.com/ydb-platform/ydb-go-sdk/v3/internal/operation" "github.com/ydb-platform/ydb-go-sdk/v3/internal/value" "github.com/ydb-platform/ydb-go-sdk/v3/table" - "github.com/ydb-platform/ydb-go-sdk/v3/table/config" + tableConfig "github.com/ydb-platform/ydb-go-sdk/v3/table/config" "github.com/ydb-platform/ydb-go-sdk/v3/table/options" "github.com/ydb-platform/ydb-go-sdk/v3/table/types" "github.com/ydb-platform/ydb-go-sdk/v3/testutil" @@ -374,7 +374,7 @@ func TestSessionOperationModeOnExecuteDataQuery(t *testing.T) { ), ), nil, - config.New(), + tableConfig.New(), ) ctx, cancel := context.WithTimeout( context.Background(), @@ -401,8 +401,10 @@ func TestQueryCachePolicyKeepInCache(t *testing.T) { queryCachePolicyOption []options.QueryCachePolicyOption }{ { - name: "with server cache", - queryCachePolicyOption: []options.QueryCachePolicyOption{options.WithQueryCachePolicyKeepInCache()}, + name: "with server cache", + queryCachePolicyOption: []options.QueryCachePolicyOption{ + options.WithQueryCachePolicyKeepInCache(), + }, }, { name: "no server cache", diff --git a/log/driver.go b/log/driver.go index f6569d8fb..bc1114351 100644 --- a/log/driver.go +++ b/log/driver.go @@ -244,8 +244,13 @@ func Driver(log Logger, details trace.Details) trace.Driver { } } } - // nolint:lll - t.OnConnNewStream = func(info trace.ConnNewStreamStartInfo) func(trace.ConnNewStreamRecvInfo) func(trace.ConnNewStreamDoneInfo) { + t.OnConnNewStream = func( + info trace.ConnNewStreamStartInfo, + ) func( + trace.ConnNewStreamRecvInfo, + ) func( + trace.ConnNewStreamDoneInfo, + ) { address := info.Endpoint.Address() local := info.Endpoint.LocalDC() method := string(info.Method) diff --git a/log/table.go b/log/table.go index e121c0c27..86b8ab8c3 100644 --- a/log/table.go +++ b/log/table.go @@ -14,8 +14,13 @@ func Table(log Logger, details trace.Details) trace.Table { if details&trace.TablePoolRetryEvents != 0 { // nolint:govet log := log.WithName(`retry`) - // nolint:lll - t.OnPoolRetry = func(info trace.PoolRetryStartInfo) func(info trace.PoolRetryInternalInfo) func(trace.PoolRetryDoneInfo) { + t.OnPoolRetry = func( + info trace.PoolRetryStartInfo, + ) func( + info trace.PoolRetryInternalInfo, + ) func( + trace.PoolRetryDoneInfo, + ) { idempotent := info.Idempotent log.Tracef(`retry start {idempotent:%t}`, idempotent, @@ -130,7 +135,11 @@ func Table(log Logger, details trace.Details) trace.Table { if details&trace.TableSessionQueryInvokeEvents != 0 { // nolint:govet log := log.WithName(`invoke`) - t.OnSessionQueryPrepare = func(info trace.SessionQueryPrepareStartInfo) func(trace.PrepareDataQueryDoneInfo) { + t.OnSessionQueryPrepare = func( + info trace.SessionQueryPrepareStartInfo, + ) func( + trace.PrepareDataQueryDoneInfo, + ) { session := info.Session query := info.Query log.Tracef(`prepare start {id:"%s",status:"%s",query:"%s"}`, @@ -159,7 +168,11 @@ func Table(log Logger, details trace.Details) trace.Table { } } } - t.OnSessionQueryExecute = func(info trace.ExecuteDataQueryStartInfo) func(trace.SessionQueryPrepareDoneInfo) { + t.OnSessionQueryExecute = func( + info trace.ExecuteDataQueryStartInfo, + ) func( + trace.SessionQueryPrepareDoneInfo, + ) { session := info.Session query := info.Query params := info.Parameters @@ -201,8 +214,11 @@ func Table(log Logger, details trace.Details) trace.Table { if details&trace.TableSessionQueryStreamEvents != 0 { // nolint:govet log := log.WithName(`stream`) - // nolint:lll - t.OnSessionQueryStreamExecute = func(info trace.SessionQueryStreamExecuteStartInfo) func(trace.SessionQueryStreamExecuteDoneInfo) { + t.OnSessionQueryStreamExecute = func( + info trace.SessionQueryStreamExecuteStartInfo, + ) func( + trace.SessionQueryStreamExecuteDoneInfo, + ) { session := info.Session query := info.Query params := info.Parameters @@ -234,8 +250,11 @@ func Table(log Logger, details trace.Details) trace.Table { } } } - // nolint:lll - t.OnSessionQueryStreamRead = func(info trace.SessionQueryStreamReadStartInfo) func(trace.SessionQueryStreamReadDoneInfo) { + t.OnSessionQueryStreamRead = func( + info trace.SessionQueryStreamReadStartInfo, + ) func( + trace.SessionQueryStreamReadDoneInfo, + ) { session := info.Session log.Tracef(`read start {id:"%s",status:"%s"}`, session.ID(), @@ -264,8 +283,11 @@ func Table(log Logger, details trace.Details) trace.Table { if details&trace.TableSessionTransactionEvents != 0 { // nolint:govet log := log.WithName(`transaction`) - // nolint:lll - t.OnSessionTransactionBegin = func(info trace.SessionTransactionBeginStartInfo) func(trace.SessionTransactionBeginDoneInfo) { + t.OnSessionTransactionBegin = func( + info trace.SessionTransactionBeginStartInfo, + ) func( + trace.SessionTransactionBeginDoneInfo, + ) { session := info.Session log.Tracef(`begin start {id:"%s",status:"%s"}`, session.ID(), @@ -290,8 +312,11 @@ func Table(log Logger, details trace.Details) trace.Table { } } } - // nolint:lll - t.OnSessionTransactionCommit = func(info trace.SessionTransactionCommitStartInfo) func(trace.SessionTransactionCommitDoneInfo) { + t.OnSessionTransactionCommit = func( + info trace.SessionTransactionCommitStartInfo, + ) func( + trace.SessionTransactionCommitDoneInfo, + ) { session := info.Session tx := info.Tx log.Tracef(`commit start {id:"%s",status:"%s",tx:"%s"}`, @@ -319,8 +344,11 @@ func Table(log Logger, details trace.Details) trace.Table { } } } - // nolint:lll - t.OnSessionTransactionRollback = func(info trace.SessionTransactionRollbackStartInfo) func(trace.SessionTransactionRollbackDoneInfo) { + t.OnSessionTransactionRollback = func( + info trace.SessionTransactionRollbackStartInfo, + ) func( + trace.SessionTransactionRollbackDoneInfo, + ) { session := info.Session tx := info.Tx log.Tracef(`rollback start {id:"%s",status:"%s",tx:"%s"}`, @@ -500,8 +528,13 @@ func Table(log Logger, details trace.Details) trace.Table { } } } - // nolint:lll - t.OnPoolTake = func(info trace.PoolTakeStartInfo) func(doneInfo trace.PoolTakeWaitInfo) func(doneInfo trace.PoolTakeDoneInfo) { + t.OnPoolTake = func( + info trace.PoolTakeStartInfo, + ) func( + doneInfo trace.PoolTakeWaitInfo, + ) func( + doneInfo trace.PoolTakeDoneInfo, + ) { session := info.Session log.Tracef(`take start {id:"%s",status:"%s"}`, session.ID(), diff --git a/sugar/sugar.go b/sugar/sugar.go index cbf1e1957..4c0d0adde 100644 --- a/sugar/sugar.go +++ b/sugar/sugar.go @@ -6,7 +6,7 @@ import ( "path" "strings" - ydb "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3" "github.com/ydb-platform/ydb-go-sdk/v3/internal/errors" "github.com/ydb-platform/ydb-go-sdk/v3/retry" "github.com/ydb-platform/ydb-go-sdk/v3/scheme" diff --git a/table/options/models.go b/table/options/models.go index 49b149925..d373b1b2c 100644 --- a/table/options/models.go +++ b/table/options/models.go @@ -4,11 +4,10 @@ import ( "bytes" "time" - "github.com/ydb-platform/ydb-go-sdk/v3/internal/feature" - "github.com/ydb-platform/ydb-go-sdk/v3/internal/value" - "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Table" + "github.com/ydb-platform/ydb-go-sdk/v3/internal/feature" + "github.com/ydb-platform/ydb-go-sdk/v3/internal/value" "github.com/ydb-platform/ydb-go-sdk/v3/table/types" ) diff --git a/table/options/options_test.go b/table/options/options_test.go index 4bc0b2fc9..31fd83a59 100644 --- a/table/options/options_test.go +++ b/table/options/options_test.go @@ -76,7 +76,11 @@ func TestSessionOptionsProfile(t *testing.T) { if !ok { t.Errorf("Explicitly partitioning policy is not as expected") } else { - testutil.Equal(t, pp.ExplicitPartitions.SplitPoints, []*Ydb.TypedValue{value.ToYDB(types.Int64Value(1))}) + testutil.Equal( + t, + pp.ExplicitPartitions.SplitPoints, + []*Ydb.TypedValue{value.ToYDB(types.Int64Value(1))}, + ) } } { diff --git a/test/table_test.go b/test/table_test.go index 8c0174041..647fee834 100644 --- a/test/table_test.go +++ b/test/table_test.go @@ -18,7 +18,7 @@ import ( "google.golang.org/grpc" - ydb "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3" "github.com/ydb-platform/ydb-go-sdk/v3/balancers" "github.com/ydb-platform/ydb-go-sdk/v3/config" "github.com/ydb-platform/ydb-go-sdk/v3/sugar" @@ -1018,7 +1018,7 @@ func describeTableOptions(ctx context.Context, c table.Client) error { if err != nil { return err } - log.Println("> describe_table_options:") + log.Println("> describe_options:") for i, p := range desc.TableProfilePresets { log.Printf(" > TableProfilePresets: %d/%d: %+v", i+1, len(desc.TableProfilePresets), p)