Neo4jStorageFactory cause error in production

After I updated dmx-platform to 5.1 I got the error below.

An error occurred while starting "DMX Core":
java.lang.RuntimeException: Opening the database failed, databaseFactory="systems.dmx.storage.neo4j.Neo4jStorageFactory", databasePath="/Users/xxx/dmx-platform/dmx-db"
	at systems.dmx.core.osgi.CoreActivator.openDB(CoreActivator.java:134)
	at systems.dmx.core.osgi.CoreActivator.start(CoreActivator.java:65)
    Caused by: java.lang.RuntimeException: Creating the Neo4j instance and indexes failed
	at systems.dmx.storage.neo4j.Neo4jStorage.<init>(Neo4jStorage.java:108)
	at systems.dmx.storage.neo4j.Neo4jStorageFactory.newDMXStorage(Neo4jStorageFactory.java:18)
	at systems.dmx.core.osgi.CoreActivator.openDB(CoreActivator.java:130)
	... 9 more
Caused by: java.lang.IllegalStateException: Unable to lock store [/Users/xxx/dmx-platform/dmx-db/neostore.relationshiptypestore.db.names], this is usually caused by another Neo4j kernel already running in this JVM for this particular store
	at org.neo4j.kernel.impl.nioneo.store.CommonAbstractStore.checkStorage(CommonAbstractStore.java:191)
	at org.neo4j.kernel.impl.nioneo.store.CommonAbstractStore.<init>(CommonAbstractStore.java:119)
	at org.neo4j.kernel.impl.nioneo.store.AbstractDynamicStore.<init>(AbstractDynamicStore.java:71)
	at org.neo4j.kernel.impl.nioneo.store.DynamicStringStore.<init>(DynamicStringStore.java:47)
	at org.neo4j.kernel.impl.nioneo.store.StoreFactory.newDynamicStringStore(StoreFactory.java:111)
	at org.neo4j.kernel.impl.nioneo.store.StoreFactory.newRelationshipTypeStore(StoreFactory.java:117)
	at org.neo4j.kernel.impl.nioneo.store.StoreFactory.attemptNewNeoStore(StoreFactory.java:93)
	at org.neo4j.kernel.impl.nioneo.store.StoreFactory.newNeoStore(StoreFactory.java:82)
	at org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource.<init>(NeoStoreXaDataSource.java:232)
	at org.neo4j.kernel.InternalAbstractGraphDatabase.create(InternalAbstractGraphDatabase.java:423)
	at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:226)
	at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:79)
	at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:70)
	at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:205)
	at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:56)
	at systems.dmx.storage.neo4j.Neo4jStorage.<init>(Neo4jStorage.java:93)
	... 11 more

In production the process doesn’t end, just stops at this line

INFO: Initiating Jersey application, version 'Jersey: 1.14 09/09/2012 05:39 PM'

If I run npm run dev in a new window the process finish and opens localhost although is not editable

I looked for the error and found out that using lsof can determine the processes that locked the db

lsof dmx-db/neostore.propertystore.db.index

COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
java    2025    xxx   txt    REG    1,2    10485 72015843 dmx-db/neostore.propertystore.db.index
java    2025    xxx   106u   REG    1,2    10485 72015843 dmx-db/neostore.propertystore.db.index

But from that point I don’t know what else needs to be done, I killed the process in the activity monitor, but then after use mvn pax:run again got the same error.

This happens if bundle dmx-storage-neo4j-5.x.jar is deployed twice, possibly 5.0.1 and 5.1. Check out your bundle-deploy folder.

  1. Stop DMX
  2. Remove the double bundles
  3. Restart

Generally: take care to never deploy 2 versions of the same bundle at the same time.

Yes, that was the problem I had the 5.1 and the SNAPSHOT version. I removed it and dmx is working now.
Thanks a lot!

pd. Is it worth to include this consideration somewhere in the documentation?