Neo4j Server Enterprise Edition : Neo.DatabaseError.General.UnknownError

After migrating from Neo4j 4.1.6 community to 4.1.6 Neo4j enterprise edition, we're getting this error from our log when starting neo4j from systemd service.

ERROR Client triggered an unexpected error [Neo.DatabaseError.General.UnknownError]: null, reference 6fc70117-9b0f-40c0-8dbe-9fe903136506.

But everything works fine when we manually start neo4j with the following command:

neo4j start

Can you help me on that please ?

Check your debug.log and post the contents of about the time when this error occurred, and look for extra information on what happened.

If you see nothing, make sure to enable query logging in Neo4j, and then do the same thing again, checking query.log so that you can correlate whatever the error is to the client query that came through.

Also, what's the client? This error suggests something is connecting to Neo4j. Is that the case? If so, what?

1 Like

Clearly this is a bug. Java software should anticipate when a Null can be thrown and check for it there or even earlier on.

To debug this, programmers are going to need the complete error message (hopefully in the logs), with stack crawl, which often will point to the piece of code that is having problems (which might not be where the bug is.)

You might try upgrading to the latest version of Neo4J 4.2.2

1 Like

Here is the complete log for that error!

This happen when trying to access the database via neo4j browser.

2021-02-05 17:21:00.003+0000 ERROR [o.n.b.r.s.i.ErrorReporter] Client triggered an unexpected error [Neo.DatabaseError.General.UnknownError]: null, reference 45dfe658-b734-4658-919f-a076fed6baca.
java.lang.UnsupportedOperationException
	at org.neo4j.kernel.impl.api.index.AbstractSwallowingIndexProxy.newReader(AbstractSwallowingIndexProxy.java:89)
	at org.neo4j.kernel.impl.api.index.FlippableIndexProxy.newReader(FlippableIndexProxy.java:271)
	at org.neo4j.kernel.impl.api.index.AbstractDelegatingIndexProxy.newReader(AbstractDelegatingIndexProxy.java:98)
	at org.neo4j.kernel.impl.api.IndexReaderCache.newUnCachedReader(IndexReaderCache.java:59)
	at org.neo4j.kernel.impl.api.IndexReaderCache.getOrCreate(IndexReaderCache.java:50)
	at org.neo4j.kernel.impl.newapi.AllStoreHolder.indexReadSession(AllStoreHolder.java:389)
	at org.neo4j.kernel.impl.coreapi.TransactionImpl.nodesByLabelAndProperty(TransactionImpl.java:703)
	at org.neo4j.kernel.impl.coreapi.TransactionImpl.findNodes(TransactionImpl.java:345)
	at org.neo4j.kernel.impl.coreapi.TransactionImpl.findNode(TransactionImpl.java:315)
	at com.neo4j.server.security.enterprise.systemgraph.versions.SupportedEnterpriseVersion.currentGetPrivilegeForRole(SupportedEnterpriseVersion.java:212)
	at com.neo4j.server.security.enterprise.systemgraph.versions.SupportedEnterpriseVersion.currentGetPrivilegeForRoles(SupportedEnterpriseVersion.java:200)
	at com.neo4j.server.security.enterprise.systemgraph.versions.EnterpriseVersion_4_41.getPrivilegeForRoles(EnterpriseVersion_4_41.java:80)
	at com.neo4j.server.security.enterprise.systemgraph.EnterpriseSecurityGraphComponent.getPrivilegeForRoles(EnterpriseSecurityGraphComponent.java:151)
	at com.neo4j.server.security.enterprise.systemgraph.SystemGraphRealm.getPrivilegesForRoles(SystemGraphRealm.java:317)
	at com.neo4j.server.security.enterprise.auth.MultiRealmAuthManager.getPermissions(MultiRealmAuthManager.java:319)
	at com.neo4j.server.security.enterprise.auth.StandardEnterpriseLoginContext.mode(StandardEnterpriseLoginContext.java:57)
	at com.neo4j.server.security.enterprise.auth.StandardEnterpriseLoginContext.authorize(StandardEnterpriseLoginContext.java:98)
	at com.neo4j.server.security.enterprise.auth.StandardEnterpriseLoginContext.authorize(StandardEnterpriseLoginContext.java:28)
	at org.neo4j.fabric.transaction.TransactionManager.begin(TransactionManager.java:62)
	at org.neo4j.fabric.bolt.BoltFabricDatabaseService.beginTransaction(BoltFabricDatabaseService.java:101)
	at org.neo4j.bolt.runtime.statemachine.impl.AbstractTransactionStateMachineSPI.beginTransaction(AbstractTransactionStateMachineSPI.java:77)
	at org.neo4j.bolt.runtime.statemachine.impl.TransactionStateMachine$State$1.beginTransaction(TransactionStateMachine.java:241)
	at org.neo4j.bolt.runtime.statemachine.impl.TransactionStateMachine$State$1.execute(TransactionStateMachine.java:206)
	at org.neo4j.bolt.runtime.statemachine.impl.TransactionStateMachine$State$1.run(TransactionStateMachine.java:198)
	at org.neo4j.bolt.runtime.statemachine.impl.TransactionStateMachine.run(TransactionStateMachine.java:84)
	at org.neo4j.bolt.v3.runtime.ReadyState.processRunMessage(ReadyState.java:88)
	at org.neo4j.bolt.v3.runtime.ReadyState.processUnsafe(ReadyState.java:59)
	at org.neo4j.bolt.v4.runtime.ReadyState.processUnsafe(ReadyState.java:47)
	at org.neo4j.bolt.v3.runtime.FailSafeBoltStateMachineState.process(FailSafeBoltStateMachineState.java:48)
	at org.neo4j.bolt.runtime.statemachine.impl.AbstractBoltStateMachine.nextState(AbstractBoltStateMachine.java:143)
	at org.neo4j.bolt.runtime.statemachine.impl.AbstractBoltStateMachine.process(AbstractBoltStateMachine.java:91)
	at org.neo4j.bolt.messaging.BoltRequestMessageReader.lambda$doRead$1(BoltRequestMessageReader.java:90)
	at org.neo4j.bolt.runtime.DefaultBoltConnection.lambda$enqueue$0(DefaultBoltConnection.java:148)
	at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatchInternal(DefaultBoltConnection.java:237)
	at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatch(DefaultBoltConnection.java:172)
	at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatch(DefaultBoltConnection.java:162)
	at org.neo4j.bolt.runtime.scheduling.ExecutorBoltScheduler.executeBatch(ExecutorBoltScheduler.java:246)
	at org.neo4j.bolt.runtime.scheduling.ExecutorBoltScheduler.lambda$scheduleBatchOrHandleError$3(ExecutorBoltScheduler.java:229)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:834)

OK, so that log says that the database got a query, attempted to run it, and that the query failed because it's trying to do something that the database doesn't support.

Can you include the actual query? (You can capture it even if you don't know the client code, by enabling query logging on the server side)

Possibilities that are coming to mind:

  • You're using Community and the query is doing something that's Enterprise Only
  • You're using an older client and it's issuing a query that's doing something out of date for your version

This happen after migrating from neo4j Community to Enterprise edition.

I'm not running any query on the database, connection to the browser or via javascript drive is not working

All i can see in query.log after enabling query logging is:

2021-02-05 22:49:03.609+0000 INFO  2239 ms: 64 B - embedded-session		graph.db -  - call db.clearQueryCaches() - {} - runtime=pipelined - {}

But what seems weird to me is that everything works just fine if i manually start neo4j.

Thank you for your suggestion clem, but upgrading to 4.2.2 version of Neo4j doesn't solve the problem in my case.
'

If this can help! Our Neo4j installation is based on Docker container!
https://registry.hub.docker.com/_/neo4j/
In Jelastic platform.

After exploring many solutons about this problem i finally find out that Jelastic does not us init system to manage process on Neo4j Docker Container.

I fixed the issue by setting the NEO4J_ACCEPT_LICENSE_AGREEMENT environement variable to yes.

Thanks for your feedbacks.