Explanation of error "Failed to obtain connection towards WRITE server. Known routing table is: Ttl…"
In Neo4j 4.0, if you are logged into the READ_REPLICA
of a Causal Cluster, and execute the following command to login into cypher-shell
:
$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd
You will encounter this error:
Failed to obtain connection towards WRITE server. Known routing table is: Ttl 1589334991968, currentTime 1589334691977, routers AddressSet=[localhost:7637], writers AddressSet=[], readers AddressSet=[localhost:7637], database '<default database>'
Before the 4.0 version, the above was a completely valid/correct command to log into the cypher-shell .
|
The reason is that the default value for the address (-a
) parameter in the command is neo4j://localhost:7687
.
The syntax is documented in the cypher-shell command-line help as:
$ $NEO4J_HOME/bin/cypher-shell -help
-a ADDRESS, --address ADDRESS
address and port to connect to (default: neo4j://localhost:7687)
The implication of the default value neo4j://localhost:7687
is that the cypher-shell
is interpreting the login command as:
$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd -a neo4j://localhost:7687
The above command is invalid/wrong. The neo4j URI scheme is the 4.0 equivalent of bolt+routing , and should only be used for connecting to one of the CORE servers in a Causal Cluster, not to any READ REPLICA .
|
To get around this error and logging into the cypher-shell
of a READ_REPLICA
, use the following command instead:
$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd -a bolt://localhost:7687
While connecting to a READ REPLICA
from a different Causal Cluster
member, use the command as:
$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd -a bolt://<read-replica-server-ip>:7687
A key takeaway from this article is that if you’re using neo4j or bolt+routing URI scheme, you should be connecting to the CORE nodes in the Causal Cluster , not a READ_REPLICA .
|
Is this page helpful?