Skip to content

Tags: tarantool/go-tarantool

Tags

v2.3.1

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).

v2.3.0

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).

v2.2.1

Release v2.2.1

The release fixes a schema lost after a reconnect.

Fixed

- `unable to use an index name because schema is not loaded` error
  after a reconnect (#424).

v2.2.0

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).

v2.1.0

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).

v2.0.0

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

v1.12.2

Release 1.12.2

Overview

    The patch release imports fixes from the master branch.

Breaking changes

    There are no breaking changes in the release.

Bugfixes

    Tests with crud 1.4.0 (#336).

    Tests with case sensitive SQL (#341).

    Potentially packet length overflow when reading (#361).

v1.12.1

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).

v1.12.0

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).

v1.11.0

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).