cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to access 3.5.28 cluster with javascript 4.4.5 driver

Potential bug report

Code using JS driver 4.4.5 is unable to access a Neo4j Enterprise cluster using version 3.5.28.

**Neo4j Version:** 3.5.28 Enterprise
**Neo4j Mode**: Cluster (3 nodes)
**Driver version**: JS driver 4.4.5
**Operating System:** AWS instance operated by 3rd party, so unknown

Steps to reproduce

1. instantiate a driver using the `neo4j+s` scheme
2. create a session and a transaction
3. attempt to run a simple query within that transaction


Expected behavior

The query shall run successfully

Actual behaviour

1. Code instantiates a driver successfully using the `neo4j+s` url scheme
2. Code appears to create a session successfully
3. attempting to run a transaction results in a timeout with subsequent transaction retries

Error returned is:

2022-07-05T02:53:00.803Z c77c6023-7f49-4f9f-8424-03dd20276ebc WARN Failed to performed request. Neo4jError: Could not perform discovery. No routing servers available. Known routing table: RoutingTable[database=default database, expirationTime=0, currentTime=1656989578989, routers=[], readers=[], writers=[]]
:
at captureStacktrace (/opt/nodejs/node_modules/neo4j-driver-core/lib/result.js:239:17)
at new Result (/opt/nodejs/node_modules/neo4j-driver-core/lib/result.js:59:23)
at newCompletedResult (/opt/nodejs/node_modules/neo4j-driver-core/lib/transaction.js:433:12)
at Object.run (/opt/nodejs/node_modules/neo4j-driver-core/lib/transaction.js:287:20)
at Transaction.run (/opt/nodejs/node_modules/neo4j-driver-core/lib/transaction.js:137:34)
at testDBQuery (/var/task/webpack:/insto-db-conn-test/src/models/test.js:7:1)
at /var/task/webpack:/insto-db-conn-test/src/models/test.js:23:1
at TransactionExecutor._safeExecuteTransactionWork (/opt/nodejs/node_modules/neo4j-driver-core/lib/internal/transaction-executor.js:92:26)
at TransactionExecutor._executeTransactionInsidePromise (/opt/nodejs/node_modules/neo4j-driver-core/lib/internal/transaction-executor.js:83:34)
at Timeout._onTimeout (/opt/nodejs/node_modules/neo4j-driver-core/lib/internal/transaction-executor.js:63:23) {
constructor: [Function: Neo4jError],
code: 'ServiceUnavailable'
}


It appears that the driver isn't retrieving the routing table properly? I'm wondering whether the Bolt handshaking isn't detecting that it should be using Bolt protocol v3?

For context, we are attempting to update our code to use the latest driver as a precursor to updating our DB cluster to Neo4j 4.4

Hoping someone might have encountered this before and found a solution?

1 REPLY 1

It's not a bug, it's designed that way. Each driver can only connect to a subset of previous neo4j versions.

That should be listed in the driver docs 

https://neo4j.com/docs/javascript-manual/current/get-started/#js-driver-get-started-installation

I think you need to go back to an 1.7 driver for neo4j 3.5.x

Nodes 2022
Nodes
NODES 2022, Neo4j Online Education Summit

On November 16 and 17 for 24 hours across all timezones, you’ll learn about best practices for beginners and experts alike.