Tags: tarantool/go-tarantool
Tags
Release v2.3.1 The patch releases fixes expected Connect() behavior and reduces allocations. Added - A usage of sync.Pool of msgpack.Decoder saves 2 object allocations per a response decoding (#440). Changed - Connect() now retry the connection if a failure occurs and opts.Reconnect > 0. The number of attempts is equal to opts.MaxReconnects or unlimited if opts.MaxReconnects == 0. Connect() blocks until a connection is established, the context is cancelled, or the number of attempts is exhausted (#436).
Release v2.3.0 The release extends box.info responses and ConnectionPool.GetInfo return data. Be careful, we have changed the test_helpers package a little since we do not provide backward compatibility for it. Added - Extend box with replication information (#427). - The Instance info has been added to ConnectionInfo for ConnectionPool.GetInfo response (#429). - Added helpers to run Tarantool config storage (#431). Changed - Changed helpers API `StartTarantool` and `StopTarantool`, now it uses pointer on `TarantoolInstance`: * `StartTarantool()` returns `*TarantoolInstance`; * `StopTarantool()` and `StopTarantoolWithCleanup()` accepts `*TarantoolInstance` as arguments. - Field `Cmd` in `TarantoolInstance` struct declared as deprecated. Suggested `Wait()`, `Stop()` and `Signal()` methods as safer to use instead of direct `Cmd.Process` access (#431). Fixed - Test helpers does not detect a fail to start a Tarantool instance if another Tarantool instance already listens a port (#431).
Release v2.2.0 The release introduces the IPROTO_INSERT_ARROW request (arrow.InsertRequest) and a request to archive `box.info` values (box.InfoRequest). Additionally, it includes some improvements to logging. Added - Error logging to `ConnectionPool.Add()` in case, when unable to establish connection and ctx is not canceled (#389). - Error logging for error case of `ConnectionPool.tryConnect()` calls in `ConnectionPool.controller()` and `ConnectionPool.reconnect()` (#389). - Methods that are implemented but not included in the pooler interface (#395). - Implemented stringer methods for pool.Role (#405). - Support the IPROTO_INSERT_ARROW request (#399). - A simple implementation of using the box interface (#410). Changed - More informative request canceling: log the probable reason for unexpected request ID and add request ID info to context done error message (#407).
Release v2.1.0 Overview The small release improves the ConnectionPool. The ConnectionPool is no longer required execute access for `box.info` from a user for Tarantool >= 3.0.0. Breaking changes There are no breaking changes in the release. New features `execute` access for `box.info` is no longer required for ConnectionPool for a Tarantool version >= 3.0.0 (#380). Bugfixes `ConnectionPool.Remove()` does not notify a `ConnectionHandler` after an instance is already removed from the pool (#385).
Release 2.0.0 Overview There are a lot of changes in the new major version. The main ones: * The `go_tarantool_call_17` build tag is no longer needed, since by default the `CallRequest` is `Call17Request`. * The `go_tarantool_msgpack_v5` build tag is no longer needed, since only the `msgpack/v5` library is used. * The `go_tarantool_ssl_disable` build tag is no longer needed, since the connector is no longer depends on `OpenSSL` by default. You could use the external library go-tlsdialer[1] to create a connection with the `ssl` transport. * Required Go version is `1.20` now. * The `Connect` function became more flexible. It now allows to create a connection with cancellation and a custom `Dialer` implementation. * It is required to use `Request` implementation types with the `Connection.Do` method instead of `Connection.<Request>` methods. * The `connection_pool` package renamed to `pool`. See the migration guide[2] for more details. Breaking changes connection_pool renamed to pool (#239). Use msgpack/v5 instead of msgpack.v2 (#236). Call/NewCallRequest = Call17/NewCall17Request (#235). Change encoding of the queue.Identify() UUID argument from binary blob to plain string. Needed for upgrade to Tarantool 3.0, where a binary blob is decoded to a varbinary object (#313). Use objects of the Decimal type instead of pointers (#238). Use objects of the Datetime type instead of pointers (#238). `connection.Connect` no longer return non-working connection objects (#136). This function now does not attempt to reconnect and tries to establish a connection only once. Function might be canceled via context. Context accepted as first argument. `pool.Connect` and `pool.Add` now accept context as the first argument, which user may cancel in process. If `pool.Connect` is canceled in progress, an error will be returned. All created connections will be closed. `iproto.Feature` type now used instead of `ProtocolFeature` (#337). `iproto.IPROTO_FEATURE_` constants now used instead of local `Feature` constants for `protocol` (#337). Change `crud` operations `Timeout` option type to `crud.OptFloat64` instead of `crud.OptUint` (#342). Change all `Upsert` and `Update` requests to accept `*tarantool.Operations` as `ops` parameters instead of `interface{}` (#348). Change `OverrideSchema(*Schema)` to `SetSchema(Schema)` (#7). Change values, stored by pointers in the `Schema`, `Space`, `Index` structs, to be stored by their values (#7). Make `Dialer` mandatory for creation a single connection (#321). Remove `Connection.RemoteAddr()`, `Connection.LocalAddr()`. Add `Addr()` function instead (#321). Remove `Connection.ClientProtocolInfo`, `Connection.ServerProtocolInfo`. Add `ProtocolInfo()` function instead, which returns the server protocol info (#321). `NewWatcher` checks the actual features of the server, rather than relying on the features provided by the user during connection creation (#321). `pool.NewWatcher` does not create watchers for connections that do not support it (#321). Rename `pool.GetPoolInfo` to `pool.GetInfo`. Change return type to `map[string]ConnectionInfo` (#321). `Response` is now an interface (#237). All responses are now implementations of the `Response` interface (#237). `SelectResponse`, `ExecuteResponse`, `PrepareResponse`, `PushResponse` are part of a public API. `Pos()`, `MetaData()`, `SQLInfo()` methods created for them to get specific info. Special types of responses are used with special requests. `IsPush()` method is added to the response iterator (#237). It returns the information if the current response is a `PushResponse`. `PushCode` constant is removed. Method `Get` for `Future` now returns response data (#237). To get the actual response new `GetResponse` method has been added. Methods `AppendPush` and `SetResponse` accept response `Header` and data as their arguments. `Future` constructors now accept `Request` as their argument (#237). Operations `Ping`, `Select`, `Insert`, `Replace`, `Delete`, `Update`, `Upsert`, `Call`, `Call16`, `Call17`, `Eval`, `Execute` of a `Connector` and `Pooler` return response data instead of an actual responses (#237). `pool.Connect`, `pool.ConnetcWithOpts` and `pool.Add` use a new type `pool.Instance` to determinate connection options (#356). `pool.Connect`, `pool.ConnectWithOpts` and `pool.Add` add connections to the pool even it is unable to connect to it (#372). Required Go version from `1.13` to `1.20` (#378). multi subpackage is removed (#240). msgpack.v2 support is removed (#236). pool/RoundRobinStrategy is removed (#158). DeadlineIO is removed (#158). UUID_extId is removed (#158). IPROTO constants are removed (#158). Code() method from the Request interface is removed (#158). `Schema` field from the `Connection` struct is removed (#7). `OkCode` and `PushCode` constants is removed (#237). SSL support is removed (#301). `Future.Err()` method is removed (#382). New features Type() method to the Request interface (#158). Enumeration types for RLimitAction/iterators (#158). IsNullable flag for Field (#302). Meaningful description for read/write socket errors (#129). Support `operation_data` in `crud.Error` (#330). Support `fetch_latest_metadata` option for crud requests with metadata (#335). Support `noreturn` option for data change crud requests (#335). Support `crud.schema` request (#336, #351). Support `IPROTO_WATCH_ONCE` request type for Tarantool version >= 3.0.0-alpha1 (#337). Support `yield_every` option for crud select requests (#350). Support `IPROTO_FEATURE_SPACE_AND_INDEX_NAMES` for Tarantool version >= 3.0.0-alpha1 (#338). It allows to use space and index names in requests instead of their IDs. `GetSchema` function to get the actual schema (#7). Support connection via an existing socket fd (#321). `Header` struct for the response header (#237). It can be accessed via `Header()` method of the `Response` interface. `Response` method added to the `Request` interface (#237). New `LogAppendPushFailed` connection log constant (#237). It is logged when connection fails to append a push response. `ErrorNo` constant that indicates that no error has occurred while getting the response (#237). `AuthDialer` type for creating a dialer with authentication (#301). `ProtocolDialer` type for creating a dialer with `ProtocolInfo` receiving and check (#301). `GreetingDialer` type for creating a dialer, that fills `Greeting` of a connection (#301). New method `Pool.DoInstance` to execute a request on a target instance in a pool (#376). Bugfixes Race condition at roundRobinStrategy.GetNextConnection() (#309). Incorrect decoding of an MP_DECIMAL when the `scale` value is negative (#314). Incorrect options (`after`, `batch_size` and `force_map_call`) setup for crud.SelectRequest (#320). Incorrect options (`vshard_router`, `fields`, `bucket_id`, `mode`, `prefer_replica`, `balance`) setup for crud.GetRequest (#335). Splice update operation accepts 3 arguments instead of 5 (#348). Unable to use a slice of custom types as a slice of tuples or objects for `crud.*ManyRequest/crud.*ObjectManyRequest` (#365). Testing More linters on CI (#310). Added an ability to mock connections for tests (#237). Added new types `MockDoer`, `MockRequest` to `test_helpers`. Fixed flaky decimal/TestSelect (#300). Fixed tests with crud 1.4.0 (#336). Fixed tests with case sensitive SQL (#341). Renamed `StrangerResponse` to `MockResponse` (#237). Other All Connection.<Request>, Connection.<Request>Typed and Connection.<Request>Async methods are now deprecated. Instead you should use requests objects + Connection.Do() (#241). All ConnectionPool.<Request>, ConnectionPool.<Request>Typed and ConnectionPool.<Request>Async methods are now deprecated. Instead you should use requests objects + ConnectionPool.Do() (#241). box.session.push() usage is deprecated: Future.AppendPush() and Future.GetIterator() methods, ResponseIterator and TimeoutResponseIterator types (#324). 1. https://github.com/tarantool/go-tlsdialer 2. https://github.com/tarantool/go-tarantool/blob/master/MIGRATION.md
Release 1.12.1 Overview The patch release imports fixes from the master branch. Breaking changes There are no breaking changes in the release. Bugfixes Flaky decimal/TestSelect (#300). Race condition at roundRobinStrategy.GetNextConnection() (#309). Incorrect decoding of an MP_DECIMAL when the `scale` value is negative (#314). Incorrect options (`after`, `batch_size` and `force_map_call`) setup for crud.SelectRequest (#320). Other Change encoding of the queue.Identify() UUID argument from binary blob to plain string. Needed for upgrade to Tarantool 3.0, where a binary blob is decoded to a varbinary object (#313).
Release 1.12.0 Overview The release introduces the ability to gracefully close Connection and ConnectionPool and also provides methods for adding or removing an endpoint from a ConnectionPool. Breaking changes There are no breaking changes in the release. New features Connection.CloseGraceful() unlike Connection.Close() waits for all requests to complete (#257). ConnectionPool.CloseGraceful() unlike ConnectionPool.Close() waits for all requests to complete (#257). ConnectionPool.Add()/ConnectionPool.Remove() to add/remove endpoints from a pool (#290). Other Updates crud tests with Tarantool 3.0 (#293). Updates SQL tests with Tarantool 3.0 (#295).
Release 1.11.0 Overview The release adds pagination support and wrappers for the crud module. Breaking changes There are no breaking changes in the release. New features Support pagination (#246). A Makefile target to test with race detector (#218). Support CRUD API (#108). An ability to replace a base network connection to a Tarantool instance (#265). Missed iterator constant (#285). Bugfixes Several non-critical data race issues (#218). Build on Apple M1 with OpenSSL (#260). ConnectionPool does not properly handle disconnection with Opts.Reconnect set (#272). Watcher events loss with a small per-request timeout (#284). Connect() panics on concurrent schema update (#278). Wrong Ttr setup by Queue.Cfg() (#278). Flaky queue/Example_connectionPool (#278). Flaky queue/Example_simpleQueueCustomMsgPack (#277). Other queue module version bumped to 1.3.0 (#278).
PreviousNext