Skip to content

Commit b646dd9

Browse files
committed
2 parents 481ac73 + 48b5520 commit b646dd9

File tree

3 files changed

+57
-57
lines changed

3 files changed

+57
-57
lines changed

README.md

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -14,41 +14,42 @@ Supports `table`, `discovery`, `coordination`, `ratelimiter`, `scheme` and `scri
1414
## Example Usage <a name="example"></a>
1515

1616
* connect to YDB
17-
```
18-
db, err := ydb.Open(ctx, "grpcs://localhost:2135/?database=/local")
17+
```golang
18+
db, err := ydb.Open(ctx, "grpcs://localhost:2135/?database=/local")
19+
if err != nil {
20+
log.Fatal(err)
21+
}
22+
```
23+
* execute `SELECT` query
24+
```golang
25+
const query = `SELECT 42 as id, "myStr" as myStr;`
26+
27+
// Do retry operation on errors with best effort
28+
queryErr := db.Table().Do(ctx, func(ctx context.Context, s table.Session) (err error) {
29+
_, res, err := s.Execute(ctx, table.DefaultTxControl(), query, nil)
1930
if err != nil {
20-
log.Fatal(err)
31+
return err
2132
}
22-
```
23-
* execute `SELECT` query
24-
```
25-
const query = `SELECT 42 as id, "myStr" as myStr;`
26-
27-
// Do retry operation on errors with best effort
28-
queryErr := db.Table().Do(ctx, func(ctx context.Context, s table.Session) (err error) {
29-
_, res, err := s.Execute(ctx, table.DefaultTxControl(), query, nil)
33+
defer res.Close()
34+
if err = res.NextResultSetErr(ctx); err != nil {
35+
return err
36+
}
37+
for res.NextRow() {
38+
var id int32
39+
var myStr string
40+
err = res.ScanNamed(named.Required("id", &id),named.OptionalWithDefault("myStr", &myStr))
3041
if err != nil {
31-
return err
32-
}
33-
defer res.Close()
34-
if err = res.NextResultSetErr(ctx); err != nil {
35-
return err
42+
log.Fatal(err)
3643
}
37-
for res.NextRow() {
38-
var id int32
39-
var myStr string
40-
err = res.ScanNamed(named.Required("id", &id),named.OptionalWithDefault("myStr", &myStr))
41-
if err != nil {
42-
log.Fatal(err)
43-
}
44-
log.Printf("id=%v, myStr='%s'\n", id, myStr)
45-
}
46-
return res.Err() // for driver retry if not nil
47-
})
48-
if queryErr != nil {
49-
log.Fatal(queryErr)
44+
log.Printf("id=%v, myStr='%s'\n", id, myStr)
5045
}
51-
```
46+
return res.Err() // for driver retry if not nil
47+
})
48+
if queryErr != nil {
49+
log.Fatal(queryErr)
50+
}
51+
```
52+
5253
More examples of usage placed in [examples](https://github.com/ydb-platform/ydb-go-examples) repository.
5354

5455
## Credentials <a name="credentials"></a>
@@ -59,36 +60,34 @@ Driver contains two options for making simple `credentials.Credentials`:
5960

6061
Another variants of `credentials.Credentials` object provides with external packages:
6162

62-
Package | Type | Description | Link of example usage
63-
--- | --- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---
64-
[ydb-go-yc](https://github.com/ydb-platform/ydb-go-yc) | credentials | credentials provider for Yandex.Cloud | [yc.WithServiceAccountKeyFileCredentials](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L22) [yc.WithInternalCA](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L22) [yc.WithMetadataCredentials](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L24)
65-
[ydb-go-yc-metadata](https://github.com/ydb-platform/ydb-go-yc-metadata) | credentials | metadata credentials provider for Yandex.Cloud | [yc.WithInternalCA](https://github.com/ydb-platform/ydb-go-yc-metadata/blob/master/options.go#L23) [yc.WithCredentials](https://github.com/ydb-platform/ydb-go-yc-metadata/blob/master/options.go#L17)
66-
[ydb-go-sdk-auth-environ](https://github.com/ydb-platform/ydb-go-sdk-auth-environ) | credentials | create credentials from environ | [ydbEnviron.WithEnvironCredentials](https://github.com/ydb-platform/ydb-go-sdk-auth-environ/blob/master/env.go#L11)
63+
| Package | Type | Description | Link of example usage |
64+
|------------------------------------------------------------------------------------|-------------|------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
65+
| [ydb-go-yc](https://github.com/ydb-platform/ydb-go-yc) | credentials | credentials provider for Yandex.Cloud | [yc.WithServiceAccountKeyFileCredentials](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L22) [yc.WithInternalCA](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L22) [yc.WithMetadataCredentials](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L24) |
66+
| [ydb-go-yc-metadata](https://github.com/ydb-platform/ydb-go-yc-metadata) | credentials | metadata credentials provider for Yandex.Cloud | [yc.WithInternalCA](https://github.com/ydb-platform/ydb-go-yc-metadata/blob/master/options.go#L23) [yc.WithCredentials](https://github.com/ydb-platform/ydb-go-yc-metadata/blob/master/options.go#L17) |
67+
| [ydb-go-sdk-auth-environ](https://github.com/ydb-platform/ydb-go-sdk-auth-environ) | credentials | create credentials from environ | [ydbEnviron.WithEnvironCredentials](https://github.com/ydb-platform/ydb-go-sdk-auth-environ/blob/master/env.go#L11) |
6768

6869
## Ecosystem of debug tools over `ydb-go-sdk` <a name="debug"></a>
6970

7071
Package `ydb-go-sdk` provide debugging over trace events in package `trace`.
7172
Next packages provide debug tooling:
7273

73-
Package | Type | Description | Link of example usage
74-
--- | --- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---
75-
[ydb-go-sdk-zap](https://github.com/ydb-platform/ydb-go-sdk-zap) | logging | logging ydb-go-sdk events with zap package | [ydbZap.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-zap/blob/master/internal/cmd/bench/main.go#L64)
76-
[ydb-go-sdk-zerolog](https://github.com/ydb-platform/ydb-go-sdk-zap) | logging | logging ydb-go-sdk events with zerolog package | [ydbZerolog.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-zerolog/blob/master/internal/cmd/bench/main.go#L47)
77-
[ydb-go-sdk-metrics](https://github.com/ydb-platform/ydb-go-sdk-metrics) | metrics | common metrics of ydb-go-sdk. Package declare interfaces such as `Registry`, `GaugeVec` and `Gauge` and use it for traces |
78-
[ydb-go-sdk-prometheus](https://github.com/ydb-platform/ydb-go-sdk-prometheus) | metrics | prometheus wrapper over [ydb-go-sdk-metrics](https://github.com/ydb-platform/ydb-go-sdk-metrics) | [ydbPrometheus.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-prometheus/blob/master/internal/cmd/bench/main.go#L56)
79-
[ydb-go-sdk-opentracing](https://github.com/ydb-platform/ydb-go-sdk-opentracing) | tracing | opentracing plugin for trace internal ydb-go-sdk calls | [ydbOpentracing.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-opentracing/blob/master/internal/cmd/bench/main.go#L86)
74+
| Package | Type | Description | Link of example usage |
75+
|----------------------------------------------------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|
76+
| [ydb-go-sdk-zap](https://github.com/ydb-platform/ydb-go-sdk-zap) | logging | logging ydb-go-sdk events with zap package | [ydbZap.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-zap/blob/master/internal/cmd/bench/main.go#L64) |
77+
| [ydb-go-sdk-zerolog](https://github.com/ydb-platform/ydb-go-sdk-zap) | logging | logging ydb-go-sdk events with zerolog package | [ydbZerolog.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-zerolog/blob/master/internal/cmd/bench/main.go#L47) |
78+
| [ydb-go-sdk-metrics](https://github.com/ydb-platform/ydb-go-sdk-metrics) | metrics | common metrics of ydb-go-sdk. Package declare interfaces such as `Registry`, `GaugeVec` and `Gauge` and use it for traces | |
79+
| [ydb-go-sdk-prometheus](https://github.com/ydb-platform/ydb-go-sdk-prometheus) | metrics | prometheus wrapper over [ydb-go-sdk-metrics](https://github.com/ydb-platform/ydb-go-sdk-metrics) | [ydbPrometheus.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-prometheus/blob/master/internal/cmd/bench/main.go#L56) |
80+
| [ydb-go-sdk-opentracing](https://github.com/ydb-platform/ydb-go-sdk-opentracing) | tracing | opentracing plugin for trace internal ydb-go-sdk calls | [ydbOpentracing.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-opentracing/blob/master/internal/cmd/bench/main.go#L86) |
8081

8182
## Environment variables <a name="environ"></a>
8283

8384
`ydb-go-sdk` supports next environment variables which redefines default behavior of driver
8485

85-
Name | Type | Default | Description
86-
--- | --- | --- | ---
87-
`YDB_SSL_ROOT_CERTIFICATES_FILE` | `string` | | path to certificates file
88-
`YDB_LOG_SEVERITY_LEVEL` | `string` | `quiet` | severity logging level of internal driver logger. Supported: `trace`, `debug`, `info`, `warn`, `error`, `fatal`, `quiet`
89-
`YDB_LOG_NO_COLOR` | `bool` | `false` | set any non empty value to disable colouring logs with internal driver logger
90-
`GRPC_GO_LOG_VERBOSITY_LEVEL` | `integer` | | set to `99` to see grpc logs
91-
`GRPC_GO_LOG_SEVERITY_LEVEL` | `string` | | set to `info` to see grpc logs
92-
93-
86+
| Name | Type | Default | Description |
87+
|----------------------------------|-----------|---------|--------------------------------------------------------------------------------------------------------------------------|
88+
| `YDB_SSL_ROOT_CERTIFICATES_FILE` | `string` | | path to certificates file |
89+
| `YDB_LOG_SEVERITY_LEVEL` | `string` | `quiet` | severity logging level of internal driver logger. Supported: `trace`, `debug`, `info`, `warn`, `error`, `fatal`, `quiet` |
90+
| `YDB_LOG_NO_COLOR` | `bool` | `false` | set any non empty value to disable colouring logs with internal driver logger |
91+
| `GRPC_GO_LOG_VERBOSITY_LEVEL` | `integer` | | set to `99` to see grpc logs |
92+
| `GRPC_GO_LOG_SEVERITY_LEVEL` | `string` | | set to `info` to see grpc logs |
9493

internal/balancer/rr/rr.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ func (r *randomChoice) Next() conn.Conn {
141141
}
142142

143143
func isOkConnection(c conn.Conn, bannedIsOk bool) bool {
144-
state := c.GetState()
145-
if state == conn.Online || state == conn.Created {
146-
return true
147-
}
148-
if bannedIsOk && state == conn.Banned {
144+
switch c.GetState() {
145+
case conn.Online, conn.Created, conn.Offline:
149146
return true
147+
case conn.Banned:
148+
return bannedIsOk
149+
default:
150+
return false
150151
}
151-
return false
152152
}

internal/conn/conn.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ func (c *conn) take(ctx context.Context) (cc *grpc.ClientConn, err error) {
221221
}
222222

223223
// prepend "ydb" scheme for grpc dns-xresolver to find the proper scheme
224+
/// ydb:///", three slashes is ok. It need for good parse scheme in grpc resolver.
224225
address := "ydb:///" + c.endpoint.Address()
225226

226227
cc, err = grpc.DialContext(ctx, address, c.config.GrpcDialOptions()...)

0 commit comments

Comments
 (0)