/
githubmirror
/
ydb-go-sdk
Обзор
Документация
Войти
/
githubmirror
/
ydb-go-sdk
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
with.go
69 строк
1 KB
Aleksey Myasnikov
Moved the trace-generated code in `trace` package from the public API to the internal packages (#2172)
24 май 2026, 16:46
Не верифицирован
24 май 2026, 16:46
86fc0c2
Код
Авторство
О чём код?
package ydb import ( "context" "sync/atomic" "github.com/ydb-platform/ydb-go-sdk/v3/internal/conn/gtrace" "github.com/ydb-platform/ydb-go-sdk/v3/internal/stack" "github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors" ) var nextID atomic.Uint64 //nolint:gochecknoglobals func (d *Driver) with(ctx context.Context, opts ...Option) (*Driver, uint64, error) { id := nextID.Add(1) child, err := driverFromOptions( ctx, append( append( d.opts, WithBalancer( d.config.Balancer(), ), withOnClose(func(child *Driver) { d.childrenMtx.Lock() defer d.childrenMtx.Unlock() delete(d.children, id) }), withConnPool(d.pool), ), opts..., )..., ) if err != nil { return nil, 0, xerrors.WithStackTrace(err) } return child, id, nil } // With makes child Driver with the same options and another options func (d *Driver) With(ctx context.Context, opts ...Option) (*Driver, error) { child, id, err := d.with(ctx, opts...) if err != nil { return nil, xerrors.WithStackTrace(err) } onDone := gtrace.DriverOnWith( d.config.Trace(), &ctx, stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/v3/ydb.(*Driver).With"), d.config.Endpoint(), d.config.Database(), d.config.Secure(), ) defer func() { onDone(err) }() if err = child.connect(ctx); err != nil { return nil, xerrors.WithStackTrace(err) } d.childrenMtx.Lock() defer d.childrenMtx.Unlock() d.children[id] = child return child, nil }