hasbolt icon indicating copy to clipboard operation
hasbolt copied to clipboard

Bolt protocol 4+ support (with poll)

Open zmactep opened this issue 3 years ago • 11 comments

Hi!

So, since the version 0.1.5.0 (see #28), we have initial support of Bolt Protocol v.3. It contains:

  • New initial message during the client-server handshake.
  • New format of "run query" message.

You may choose { ... version = 3 ... } in BoltCfg, and everything should work even with the latest version of neo4j (4.2.6). But we still do not support the extra dictionary in "run query" and new transactions style (the old one from protocol v.2 seems to work). And of course, neo4j will drop the version 3 protocol soon, while version 4 has backward capability break again.

I see that I have to redesign a library a lot to support the newest features. So I have a question for all the users: should I still support the versions 1/2 of protocol or keep only the latest version? Or maybe I should make another library (like, hasbolt2 for the newest versions)? Or perhaps you are not interested in novel features and just need the basic statements supporting the latest versions of neo4j?

/polls "I need support of protocol versions 1/2" "I need the non-basic features of latest protocol versions" "I am ok to use the separate library for new/old protocol versions"

zmactep avatar May 23 '21 13:05 zmactep

hi @zmactep! thanks for this, it's appreciated :+1: I plan to upgrade to Neo4j v4 as soon as possible, and have only been using v3.5, so I guess I wouldn't need Bolt v1. with regards to a new package or not, I'd vote for you doing what's easier for you, I can handle whichever. another option would be to keep hasbolt versions <2 for bolt v1-2, and versions >2 for bolt v3-4.

And of course, neo4j will drop the version 3 protocol soon, while version 4 has backward capability break again.

this is very annoying…

odanoburu avatar May 24 '21 12:05 odanoburu

Hey @zmactep please write a separate library to support Neo4j 4+.

Microtribute avatar Aug 05 '21 16:08 Microtribute

I'm not sure that bolt v1-v2 really should be supported.

gardspirito avatar Jun 30 '22 18:06 gardspirito

Hello,

Thank you for your work. Is there any news on when the new protocol version will be supported and if it will be split on a new lib?

About the poll, I don't need bolt v1 and v2 support. If you would like to keep it, I'd suggest to keep it for library v1 and work on the new protocol on v2.

Also, supposing the new implementation would be fine for the older bolt versions too, I guess if it really comes to it, support could be reintroduced on v2 too.

I think splitting it on a different library could be confusing for users.

iazel avatar Jul 10 '22 23:07 iazel

Would a PR be accepted that updated this to work with Neo4j 5+?

ProofOfKeags avatar Jan 25 '23 21:01 ProofOfKeags

@ProofOfKeags Did you have any progress on rewriting it for 5+?

joshniemela avatar Apr 22 '23 23:04 joshniemela

Still on my list, haven't set aside time for it but my main side project uses it and while I'm not actively working on this piece of it I am still actively working on that side project.

ProofOfKeags avatar Apr 22 '23 23:04 ProofOfKeags

Understandable, feel free to @ me if you need someone to help rewriting it since I'll most likely need it in my own project so I can avoid JavaScript.

joshniemela avatar Apr 22 '23 23:04 joshniemela

I spend two weeks continuously making a new version, changed so much it might as well be a new driver altogether. For example one thing i did was implement the PackStream protocol as a separate library based on haskell message pack implementation. Thing is after 2 weeks i got fed up with it and returned to neo4j 3.5. The state right now is that the functions are more or less in place, but it has never run a successful query (handshake looked ok though). If anyone has appetite to dig in leave your email or discord handle and we can discuss. I estimate 2 more weeks of continuous work is needed to debug and add the tests. With likely more bugfix releases after. I won't upload a public repo in the state it is in right now. Maybe one day i will come back to it myself, but i'm in the same situation that it's for a side project that i like to upgrade to the latest neo4j version.

philippedev101 avatar Jun 21 '23 20:06 philippedev101

Where can I contribute to this effort?

ProofOfKeags avatar Oct 06 '23 01:10 ProofOfKeags

@ProofOfKeags i send you an invite, sorry for the late reply. Please write your discord handle

philippedev101 avatar Dec 17 '23 21:12 philippedev101

I am no longer planning to work on this at this time. Just closing the loop here.

ProofOfKeags avatar Apr 02 '24 23:04 ProofOfKeags