Beim Versuch, neue Knoten in einer bereits vorhandenen Datenbank zu erstellen, erhalte ich die folgende Ausnahme:Fehler bei der Abfrage Sperre (org.neo4j.kernal.StoreLockException)
org.neo4j.kernal.StoreLockException
.
Der Code Snippit unten ist die tatsächliche Zeile, die die Ausnahme ergibt. Darunter habe ich noch ein paar Details und die komplette Stack-Spur angehängt.
Wenn ich einen neuen Ordner erstellen und diesen als DB_PATH
verwenden, funktioniert mein Code beim ersten Durchlauf einwandfrei. Beim zweiten Durchlauf wird es mit derselben Ausnahme fehlschlagen. Es sieht so aus, als verhindere etwas die Sperre.
Ich habe versucht, Berechtigungen zum Lesen/Schreiben für jede Datei in der DB_PATH
zu setzen. Kein Glück. Gibt es eine Einstellung in einer der Konfigurationsdateien, die in Bezug auf Sperren deaktiviert werden muss?
-Code Werfen Exception
graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
Mehr Detail (Linie 6)
private static GraphDatabaseService graphDB = null;
public static final String DB_PATH = "/Users/NtroduceMe/Downloads/neo4j-community-2.0.0-M03/data/ntroduceme";
private static Index<Node> userNodeIndex;
private static Index<Node> rememberMeNodeIndex;
static {
graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
registerShutdownHook(graphDB);
userNodeIndex = graphDB.index().forNodes("profile_id");
rememberMeNodeIndex = graphDB.index().forNodes("profile_id");
}
Stack Trace
Jun 19, 2013 12:12:50 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [ProfileController] in context with path [] threw exception [Servlet execution threw an exception] with root cause
org.neo4j.kernel.StoreLockException: Could not create lock file
at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:85)
at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:40)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:498)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:296)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:100)
at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:92)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:197)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:69)
at com.NtroduceMe.Utilities.GraphDBManager.<clinit>(GraphDBManager.java:22)
at com.NtroduceMe.UserProfile.Profiles.createProfile(Profiles.java:141)
at com.NtroduceMe.UserProfile.ProfileController.doPost(ProfileController.java:61)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Helper Klasse I verwenden, um die Datenbankinstanz
public class GraphDBManager {
public static final String DB_PATH = "/Users/NtroduceMe/Downloads/neo4j-community-2.0.0-M03/data/ntroduceme";
private static final GraphDatabaseService graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
private static Index<Node> userNodeIndex;
private static Index<Node> rememberMeNodeIndex;
static {
registerShutdownHook(graphDB);
userNodeIndex = graphDB.index().forNodes("profile_id");
rememberMeNodeIndex = graphDB.index().forNodes("profile_id");
}
public static GraphDatabaseService getGraphDB(){
return graphDB;
}
public static Index<Node> getUserNodeIndex(){
return userNodeIndex;
}
public static Index<Node> getRemberMeNodeIndex(){
return rememberMeNodeIndex;
}
private static void registerShutdownHook(final GraphDatabaseService graphDb)
{
// Registers a shutdown hook for the Neo4j instance so that it
// shuts down nicely when the VM exits (even if you "Ctrl-C" the
// running application).
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
graphDb.shutdown();
}
});
}
}
Hallo Bruder, hast du das Problem gelöst? Ich stehe jetzt vor dem gleichen Problem. – gozizibj
Vor einer Weile wechselte ich zur Bolt API und hatte dieses Problem nicht. Ich glaube, ich habe neo mit sudo mit der neuesten Version installiert und nicht ein einziges Installationsproblem. –
Außerdem verwende ich nicht mehr eingebettet. –