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:  


Neo4j’s commit process explained

This article will try to guide you through Neo4j’s commit and replication processes both for single instances and causal clusters.   Single Instance When you call tx.commit(), the transaction will go through the Storage Engine which will transform that transaction… Read more →

Explore:  


Neo4j current transaction commit process order

Transactions in Neo4j use a read-committed isolation level, which means they will see data as soon as it has been committed and will not see data in other transactions that have not yet been committed. This type of isolation is… Read more →

Explore:  


Explantion of debug.log message of Commits found after last checkpoint

When running backup for example bin/neo4j-admin backup –backup-dir=/home/neo4j/backups/01172020/ –name=graph.db you may observe in the output of said command detail similar to 2020-01-17 12:54:06.767+0000 INFO [o.n.b.i.BackupOutputMonitor] Finish receiving store file /home/neo4j/backups/backups/01172020/graph.db/temp-copy/schema/index/lucene_native-2.0/5/native-1.0/profiles/index-5.708254.cacheprof 2020-01-17 12:54:06.767+0000 INFO [o.n.b.i.BackupOutputMonitor] Start receiving store file /home/neo4j/backups/backups/01172020/graph.db/temp-copy/schema/index/lucene_native-2.0/5/string-1.0/profiles/index-5.708254.cacheprof 2020-01-17… Read more →

Explore:  


Shared vs Exclusive Transaction locks

This document describes the meaning of a shared lock as seen by transactions and the difference between a shared and exclusive lock. A “shared lock” means multiple transactions can be holding the same lock at the same time, where “same… 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:  


Large Delete Transaction Best Practices in Neo4j

In order to achieve the best performance, and avoid negative effects on the rest of the system, consider these best practices when processing large deletes. Start by identifying which situation you are in: Deleting the entire graph database, so you… Read more →

Explore:  


Neo4j behaviour when running out of disk space (3.4+)

Following the improvements on the recovery process after an instance runs out of disk space introduced in v3.4.0, this article aims to offer a view on the behaviour of Neo4j when this happens. Prior to 3.4, running out of disk… Read more →

Explore: