Why did I get the “Kernel API returned non-existent relationship type: -1” exception?

In rare situations, the Neo4j Bolt driver throws an IllegalStateException. The top part of the stack appears as: java.lang.IllegalStateException: Kernel API returned non-existent relationship type: -1 at org.neo4j.kernel.impl.factory.GraphDatabaseFacade.getRelationshipTypeById(GraphDatabaseFacade.java:991) Under the covers, this is what happens. The getRelationshipTypeById(int type) method is… Read more →

Explore:  


java.lang.OutOfMemoryError: unable to create new native thread

When a client application establishes a session with a Neo4j server via the bolt or bolt+routing protocols, the server allocates a thread to serve as the server-side bolt worker to handle that connection. There is no server-side limitation on the… Read more →

Explore:  


How Neo4j Browser uses bolt+routing

There are two kinds of Bolt drivers specified by URI scheme: the bolt:// scheme is used to create a direct driver and the bolt+routing:// scheme is used to create a routing driver. Neo4j Browser will always: Use a direct driver… Read more →

Explore:  


Explanation of “Failed to update routing table with server” error

If you encounter a Failed to update routing table with server error in their $NEO4J_HOME/logs/debug.log similar to: ERROR 1 — [o4jDriverIO-5-2] LoadBalancer : Failed to update routing table. Current routing table: Ttl 1582554193442, currentTime 1582554193471, routers AddressSet=[], writers AddressSet=[], readers… Read more →

Explore:  


Using Python 1.7.x Driver with Neo4j 4.0

At the time of writing this article the Bolt Driver for Python has not been released for Neo4j 4.0. The v4 Python driver will not be available until the end of the first quarter of 2020. So, how do you… Read more →

Explore:  


Enabling Transaction Timeout Within Application

There is a dbms.transaction.timeout global setting on Neo4j that can be set in neo4j.conf file so if any query from any user exceeds the timeout threshold specified, that query is terminated. But how do you achieve this from within an… Read more →

Explore:  


Consideration about routing tables on multi-data center deployments

Using the official Neo4j drivers means that you can take advantage of the full cluster routing capabilities of the drivers. This means your requests will be routed automatically to the appropriate instance: If your request is a write: it will… Read more →

Explore:  


How to resolve Python Bolt Driver when executed gives an error “(“Failed to establish connection to {!r}”.format(address))”

Take the example of Python with the latest Bolt driver 1.2. Here is the sample code from neo4j.v1 import GraphDatabase uri = “bolt://localhost:7687” driver = GraphDatabase.driver(uri, auth=(“neo4j”, “Password”)) and when run it gives the following error: Traceback (most recent call… Read more →

Explore:  


Pass Temporal Objects as Parameters

With the support of datetime types in Neo4j, users might wonder how or if it works to transport those types along with other data types via the drivers. It is possible and supported to send temporal objects using one of… Read more →

Explore:  


Explanation of error on session connection using uniform drivers

As described by http://neo4j.com/docs/developer-manual/current/drivers/#_trust, when establishing an encrypted connection, it needs to be verified that the remote peer is who we expected to connect to. The default connection is to ‘Trust on first use’ and to do so indicates that… Read more →

Explore: