Skip to content
Ali Ince edited this page May 9, 2019 · 17 revisions

v1.7.4

  • Make transaction functions to retry at least 2 times on transient failures #55,
  • Enable neo4j scheme that will replace bolt+routing within upcoming major driver version #58.

v1.7.3

  • Improve allocations of timer objects in new gobolt workers #47,
  • Update gobolt based on minor naming changes in seabolt,
  • Update README based on latest seabolt improvements on windows,
  • Pass access mode as part of the statement metadata for Bolt V3 connections.

v1.7.2

  • Buffer pending results on session close #42,
  • Resolve inconsistencies and improve example codes included in documentation #44,
  • Introduce worker pool in gobolt so that large number of concurrent goroutines executing neo4j queries (making seabolt calls) do not cause go runtime to crash #45.

Worker pool based connections are now used by default. To restore previous behaviour, you can set BOLTWORKERS environment variable to 0.

v1.7.1

  • Prevent panic in type conversion logic on nil pointer values #1,
  • Improve error reporting on type conversion failures #2,

v1.7.0

  • Added Gopkg.toml and Gopkg.lock files for dep support.
  • Added seabolt_static build tag to gobolt, so that when you build your project with this tag - the output will be statically linked to seabolt and its dependencies. This feature is not available on Windows, so you'll face an error if you try to.

v1.7.0-rc03

  • Use t_first and t_last metadata fields which are available in Bolt V3.
  • Introduced neo4j.Single and neo4j.Collect functions to retrieve neo4j.Record or []neo4j.Record from a Session.Run and Transaction.Run. To see how it can be used, have a look at this sample code.
  • Removed previously introduced SocketReceiveTimeout and SocketSendTimeout configuration options.

v1.7.0-rc02

This release includes improvements about error reporting #28 and #29.

v1.7.0-rc01

This release includes some internal refactoring about errors and introduces a couple of public functions to be used for classifying driver returned errors (#28).

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)