J'ai deux fils, le premier utilise un robot qui collecte des données et crée la base de données graphique Neo4j, le second exécute toutes les dix minutes des requêtes, comme le nombre de nœuds ajoutés jusqu'à présent afin d'analyser le graphique. Mon problème est que je ne peux pas exécuter le deuxième thread pendant que le premier est en cours d'exécution car je ne peux pas créer une nouvelle instance de la base de données. Il renvoie l'erreur suivante:Créer deux instances de la même base de données Neo4j
Exception in thread "Thread-6" java.lang.RuntimeException: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' was successfully initialized, but failed to start. Please see attached cause exception.
at com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:165)
at com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:135)
at main.AnalyzeGraph.run(AnalyzeGraph.java:28)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:281)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:106)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:81)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:63)
at com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph.<init>(Neo4jGraph.java:155)
... 3 more
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:497)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:104)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:259)
... 7 more
Caused by: org.neo4j.kernel.StoreLockException: Unable to obtain lock on store lock file: /home/sotbeis/Desktop/neo4jDB/store_lock. Please ensure no other process is using this database, and that the directory is writable (required even for read-only access)
at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:79)
at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:40)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:491)
... 9 more
Caused by: java.nio.channels.OverlappingFileLockException
at sun.nio.ch.SharedFileLockTable.checkList(FileLockTable.java:255)
at sun.nio.ch.SharedFileLockTable.add(FileLockTable.java:152)
at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1056)
at java.nio.channels.FileChannel.tryLock(FileChannel.java:1154)
at org.neo4j.kernel.impl.nioneo.store.FileLock.getOsSpecificFileLock(FileLock.java:83)
at org.neo4j.kernel.DefaultFileSystemAbstraction.tryLock(DefaultFileSystemAbstraction.java:83)
at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:70)
... 11 more
Y at-il un moyen de résoudre ce problème? Notez que je ne peux pas passer la première instance de la base de données graphique neo4j au second thread.
J'utilise blueprints-neo4j-graph 2.4.0.
EDIT: J'utilise la version intégrée
Est-il possible de faire comme décrit si j'utilise la version de service? – salvador
Dans ce cas, vous vous connectez via des points de terminaison REST (sauf si vous faites tout via des plugins/extensions, ce qui est peu probable), donc les mêmes problèmes ne devraient pas se produire. En d'autres termes, il est peu probable que vous utilisiez le même code pour vous connecter à l'instance du serveur (par exemple via un client Jersey ou une autre liaison telle que Neo4j JDBC, liaison REST Neo4j ou quelque chose comme Spring Data pour Neo4j. – BtySgtMajor