Skip to content
Ali Ince edited this page Oct 5, 2018 · 17 revisions

v1.7.0-beta03

This release introduces more configuration options around TLS, connection related timeouts (lifetime, acquisition and socket timeouts) and a couple of API and behaviour changes. It also improves concurrency and reliability of the routing driver.

  • Config structure now exposes the following new options.
    • TrustStrategy: Sets how the driver establishes trust with the Neo4j instance it is connected to (default: TrustAny(false), see TrustAny(), TrustSystem() and TrustOnly() for other options)
    • MaxConnectionLifetime: Maximum connection life time on pooled connections. Values less than or equal to 0 disables the lifetime check (default: 1 * time.Hour)
    • ConnectionAcquisitionTimeout: Maximum amount of time to either acquire an idle connection from the pool or create a new connection (when the pool is not full). Negative values result in an infinite wait time where 0 value results in no timeout which results in immediate failure when there are no available connections (default: 1 * time.Minute)
    • SocketConnectTimeout: Connect timeout that will be set on underlying sockets. Values less than or equal to 0 results in no timeout being applied (default: 5 * time.Second)
    • SocketReceiveTimeout: Receive timeout that will be set on underlying sockets. Values less than or equal to 0 results in no timeout being applied (default: 0)
    • SocketSendTimeout: Send timeout that will be set on underlying sockets. Values less than or equal to 0 results in no timeout being applied (default: 0)
    • SocketKeepalive: Whether to enable TCP keep alive on underlying sockets (default: true)
  • Config.MaxTransactionRetryDuration is now renamed as Config.MaxTransactionRetryTime to better align with the naming across other official drivers.
  • Config.AddressResolver is now changed to accept a function (func(address ServerAddress) []ServerAddress) instead of an interface for ease of use.
  • Result.Consume() and Result.Summary() now returns nil as ResultSummary on error.

v1.7.0-beta02

This release adds support for Bolt V3. The transaction configuration API introduced in v1.7.0-beta01 is now fully functional when ran against a neo4j 3.5 version (currently pre-release).

The following features are introduced in Bolt V3;

  • Both a transaction timeout and transaction metadata can be set with Session.BeginTransaction, Session.ReadTransaction and Session.WriteTransaction calls. These can be passed via variadic function arguments that mutates TransactionConfig struct - neo4j.WithTxTimeout and neo4j.WithTxMetadata are provided as part of driver API.
  • All of these transaction configuration options are now also applies to Session.Run calls (which are wrapped in auto-commit transactions on the server side)
  • Session.Run calls are now executed as part of the causal chain.

v1.7.0-beta01

This release doesn't add any features but introduces public API changes.

  • Statement parameters map (params parameter) that is sent with Session.Run or Transaction.Run is now of type map[string]interface{} and not a pointer.
  • All previous public struct types are converted into interfaces to support mocking for external testability. Also private functions on Driver interface are also removed for the same reason.
  • CustomAuth function now takes its parameters parameter as of type map[string]interface{} instead of a pointer.
  • Added API for transaction configuration which provides a means of setting transaction timeout and attaching transaction metadata to transactions on arbitrary explicit/auto-commit transactions. This is a placeholder functionality for now, underlying implementation will be introduced in upcoming releases.
  • Improved API documentation.

v1.7.0-alpha4

Removed master branch and made 1.7 the default which will hold the long run stable 1.7 driver release (the same applies to downstream - gobolt and seabolt)

  • Renamed seabolt wrapper from neo4j-go-connector to gobolt (accessible at https://github.com/neo4j-drivers/gobolt)
  • Changed the package structure of the driver as per packaging guidelines and moved top level code into neo4j folder which can now be imported from github.com/neo4j/neo4j-go-driver/neo4j
  • Made the logger provided to the driver through neo4j.Config to be used across the whole stack (now you can get more useful log entries from seabolt - especially when DEBUG log level is enabled)
  • Added support for bolt+routing scheme to work against causal cluster deployments, yay! (all you need to do is to point your URL to bolt+routing://<hostname>:<port> where <hostname>:<port> pair points to one of the core servers in the cluster)
  • Added support for specifying custom neo4j.ServerAddressResolver through neo4j.Config that can map <hostname>:<port> pair provided as part of the driver URL to multiple entries (i.e to provide all core server addresses) - so that all those mapped entries are tried in turn until routing table is fetched
  • Renamed spatial type constructor function neo4j.NewPoint to neo4j.NewPoint2D for consistency
  • Enabled SNI extension on TLS sessions

v1.7.0-alpha3

  • Added support for all temporal and spatial types that were introduced by Bolt version 2 (introduced as part of server release 3.4)
  • Added support for returning Path types as return values

v1.7.0-alpha2

  • Fixed an issue where node and relationship values returned from a query was not accessible through driver

v1.7.0-alpha1

  • The first release of the Neo4j Official Go Driver. It only includes support for Bolt V1 (which means you cannot use temporal / spatial types introduced with Neo4j database 3.4 version) and works only on direct mode (no clustering support)
Clone this wiki locally