Conversation
A pure Go packstream implementation in an internal package. As part of work to make driver independent of gobolt+seabolt this patch implements the binary serialization format used to communicate with neo4j bolt server. Note that this package isn't yet used by any previously existing production driver code.
Implements connection handshake and running a Cypher query with auto-commit. The query returns a result with a very limited support for data types. Only simple data types like string, int64 etc plus show casing more complex data type in the form of a node. The 1.7 API will be preserved. Interface definitions will be in neo4j/api package and exported from neo4j. This is to make it possible to use the interfaces from the internal packages without any circular dependencies (the neo4j package will use the internal packages).
Ensuring that existing API will work with new low level connection API. Preserve existing implementation in separate folder (neo4jx) to be able to move needed things into neo4j further on when they are needed.
Implement bolt transaction protocol and rewire the existing session, driver and transaction API:s to use the Go native implementation.
Simple connection pool that can handle max pool size and acquisition timeouts. Could be blocking for a bit too long if it takes long time to connect, it will block other threads from connecting to other servers in this implementation. Better implementation next... Does not handle connection timeouts.
Cleans up structure of hydration a bit. Also clearifies parts of the protocol like the summary.
Brought in existing integration tests to validate more. Some of these are failing, needs investigation on when nil pointers are expected allowed.
Before Run on bolt3 connection, make sure that not in streaming state, if it is consume all records+summary before continuing.
Connected transactions received through session to the session as well as results directly received on session as the ones recieved on transaction object.
More and simpler tests on bolt3 protocol level.
added 25 commits
April 24, 2020 12:36
Needs a lot more testing, both on unit and integration level.
A diversity of bug fixes, backwards compatibility fixes to make existing suite of integration tests pass without too much change (details in error checking has changed since they used unexported impl details).
This was
linked to
issues
May 7, 2020
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pure Go implementation of bolt/connection pool/routing without relying on gobolt+seabolt (no more cgo).
Intention is to be fully backwards compatible with 1.7 release.