You have to create a lock to make that an exclusive operation.

Best with cypher's MERGE and a unique constraint which take care of
creating that index lock for you:

create constraint on t:Top assert t.id is unique;

MERGE (t:Top {id:123}) RETURN t;


On Wed, Jun 15, 2016 at 12:27 AM, David Starkweather <stark...@gmail.com>
wrote:

> Hell all,
>
> Thanks for all your hard work in delivering such a great product.
>
> I have an application built on top of neo4j using the java api for v3.0.1.
> It requires finding a "top" node first at the beginning of every one of my
> graph operations.  This top node serves as the start of my graph db.  I
> noticed an earlier edition of neo4j used a
> reference node from which to retrieve the graph.  Since that apparently is
> no longer a feature in newer releases,
> I chose to label this top node with a "TOP" label, and then simply
> retrieve this node using findNode method.  Now, this method works
> great so long as the testing is done in a single thread.  However, when
> used in multiple threads, it occasionally gets a
> MultipleFoundException thrown when invoking this findNode method.  I feel
> quite certain that my code only creates one top
> node at a time, and whenever it creates a new top node, it deletes the old
> top node and always does so within a single transaction block.
> However, if findNodes() is used instead, I find that two nodes can be
> counted by iterating through the ResourceIterator (with hasNext/getNext).
> (Although I'm not sure if they are both viable active nodes.)
>
> Is this the best technique for maintaining such a single top node?  Or is
> there a more preferred way?
>
> Does the ResourceIterator that is returned ever contain outdated entries?
> (I notice the javadocs for this class is missing.)
>
> I would appreciate any ideas you may have on this.
>
> Thanks again.
> David Starkweather
>
> --
> 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 neo4j+unsubscr...@googlegroups.com.
> 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 neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to