This works perfect for me:

GraphDatabaseService db = new
GraphDatabaseFactory().newEmbeddedDatabase("target/shutdown.db");
Node node;
try (Transaction tx = db.beginTx()) {
    node = db.createNode();
    System.out.println("node = " + node);
    tx.success();
}
db.shutdown();
db = new GraphDatabaseFactory().newEmbeddedDatabase("target/shutdown.db");
try (Transaction tx = db.beginTx()) {
    node = db.getNodeById(node.getId());
    System.out.println("node = " + node);
    tx.success();
}
db.shutdown();


On Sat, Nov 22, 2014 at 9:20 PM, Michael Hunger <
[email protected]> wrote:

> I meant you have to pause your processing in java if you want to access
> the db externally.
>
> On Sat, Nov 22, 2014 at 9:15 PM, Markus Gutmann <[email protected]>
> wrote:
>
>> I simply execute the connect-code I have posted above in order to connect
>> to the db.
>>
>> In this code I do reassign a new value to the variable _gdbService so I
>> am not quite sure whether _gdbService still points to the old db - I would
>> rather say no.
>>
>> What do you mean with "wait to continue" .. ? is there a certain time
>> threshold to wait?
>>
>> Even if I wait a few seconds (up to 1 minute) the result is the same ...
>>
>>
>>
>> On Saturday, November 22, 2014 9:09:04 PM UTC+1, Michael Hunger wrote:
>>>
>>> I think your _gdbService variable still refers to the old db-instance
>>> and was not set to the newly created instance.
>>>
>>> How do you wait to continue after you finished the external operation
>>> with the db?
>>>
>>> Could that be?
>>>
>>> Michael
>>>
>>> On Sat, Nov 22, 2014 at 8:59 PM, Markus Gutmann <[email protected]>
>>> wrote:
>>>
>>>> I do
>>>>
>>>> 1. connect
>>>> 2. disconnect
>>>> 3. connect
>>>>
>>>> as described in my original post.
>>>>
>>>> Then I execute the following method:
>>>>
>>>> try ( Transaction transaction = _gdbService.beginTx() ) {
>>>>
>>>>  Iterable<Relationship> relationships = node.getRelationships(Direction
>>>> .OUTGOING);
>>>> ...
>>>>
>>>>
>>>> and the first line throws an exception with the following trace:
>>>>
>>>>
>>>> org.neo4j.graphdb.DatabaseShutdownException: This database is shutdown.
>>>>  at org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.ch
>>>> eckIfShutdown(ThreadToStatementContextBridge.java:80)
>>>>  at org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.instance(
>>>> ThreadToStatementContextBridge.java:54)
>>>>  at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.
>>>> java:140)
>>>>  at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.
>>>> java:76)
>>>>  at thesisPrototype.cfgUtilizer.cfgdb.GraphDatabase.findAdjacent
>>>> ReachableNode(GraphDatabase.java:336)
>>>>  at thesisPrototype.reconnaissanceCore.CFGDBTracer.hook(CFGDBTracer.
>>>> java:92)
>>>>  at thesisPrototype.rmiBridge.TracerProxy.hook(TracerProxy.java:16)
>>>>  at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>>>>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>  at java.lang.reflect.Method.invoke(Unknown Source)
>>>>  at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
>>>>  at sun.rmi.transport.Transport$1.run(Unknown Source)
>>>>  at sun.rmi.transport.Transport$1.run(Unknown Source)
>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>  at sun.rmi.transport.Transport.serviceCall(Unknown Source)
>>>>  at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
>>>>  at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown
>>>> Source)
>>>>  at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown
>>>> Source)
>>>>  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
>>>>  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>>>>  at java.lang.Thread.run(Unknown Source)
>>>>
>>>> Please, .. I need to fix that issue as soon as possible and I would be
>>>> more than grateful for any help...
>>>>
>>>>
>>>> On Saturday, November 22, 2014 5:39:15 PM UTC+1, Markus Gutmann wrote:
>>>>>
>>>>> _gdbFactory = new GraphDatabaseFactory();
>>>>> _gdbService = _gdbFactory.newEmbeddedDatabase(_gdbPath);
>>>>> _gdbEngine = new ExecutionEngine(_gdbService);
>>>>> do some work
>>>>> disconnect from the gdbdo some workdisconnect from the gdb
>>>>>
>>>>> I am using a local Neo4j server instance and the Neo4j Java API to
>>>>> access a graph-database (gdb).
>>>>>
>>>>> I simply want to achieve the following workflow:
>>>>>
>>>>>    1. connect to the local gdb from a Java program
>>>>>
>>>>>    I do this using:
>>>>>
>>>>>    _gdbFactory = new GraphDatabaseFactory();
>>>>>    _gdbService = _gdbFactory.newEmbeddedDatabase(_gdbPath);
>>>>>    _gdbEngine = new ExecutionEngine(_gdbService);
>>>>>
>>>>>    2. then disconnect using.
>>>>>
>>>>>    _gdbService.shutdown();
>>>>>
>>>>>    3. connect with another process to the same gdb
>>>>>
>>>>>    e.g. with the locally installed Neo4j program.
>>>>>
>>>>>    4. disconnect from the gdb from this process
>>>>>
>>>>>    e.g. by simply clicking the "stop" button at the Neo4j program.
>>>>>
>>>>>    5. again connect to the gdb with the Java program using again the
>>>>>    same code as in 1.
>>>>>
>>>>> *Right now, point 5 is not working!*
>>>>>
>>>>> The use of
>>>>>
>>>>> GraphDatabaseService.shutdown().shutdown
>>>>>
>>>>> seems to finalize the gdb in some way that I cannot connect to it any
>>>>> more.
>>>>>
>>>>> After reconnecting I get an Exception which tells me: *"This database
>>>>> is shutdown!"*
>>>>>
>>>>> So, my question is:
>>>>>
>>>>> What is the common way to connect - disconnect - reconnect to a Neo4J
>>>>> gdb ? Is there an alternative to the shutdown-method from above?
>>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Neo4j" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Neo4j" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to