Oh, that. Well, doing an operation on a Node/Relationship grabs a lock on
that entity for that transaction. One operation which doesn't really do
anything is to remove a non-existent property. It's just to make sure that a
write lock is taken before entering a block of
read-then-write-based-on-the-read-value. Functionality-wise it's required
for those implementations to be thread-safe.

In other words: it's because there's no Transaction#acquireWriteLock(Node),
which I'd really like to see pretty soon in there.

2011/6/30 Niels Hoogeveen <pd_aficion...@hotmail.com>

>
> Hi Mattias,
> I just looked through the code in neo4j-util and will try to port relevant
> classes to graph-collections. I have one question, though. Several methods
> make a call to "GraphDatabaseUtil.acquireWriteLock", which performs one
> operation: the removal of the property "___dummy_property_for_locking___". I
> don't see any place where this property is set. Can you explain this usage?
> Niels
>
> > Date: Thu, 30 Jun 2011 20:50:42 +0200
> > From: matt...@neotechnology.com
> > To: user@lists.neo4j.org
> > Subject: Re: [Neo4j] graph-collections List class
> >
> > I have done a lot of these structures already, so before (re)doing a lot
> of
> > these structures take a look at:
> >
> https://svn.neo4j.org/components/utils/trunk/src/main/java/org/neo4j/util/(the
> > old subversion repository, but the utils are quite up2date). Please
> > take a look there and feel free to pull good implementations in to
> > graph-collections. There are f.ex. queues (with workers picking items
> from
> > them), linked lists, limited-sized lists and more.
> >
> > 2011/6/30 Niels Hoogeveen <pd_aficion...@hotmail.com>
> >
> > >
> > > For neo4j.graph-collections.list.List I suggest the following.
> > > The graph collections List class is an implementation of the
> java.util.List
> > > class, parameterized with Node, supporting all methods, except
> subList(int
> > > start, int end).
> > > Whenever nodes need to be stored as a list, the List class can be used,
> > > guaranteeing the List contract is maintained.
> > > package org.neo4j.collections.list;
> > >
> > > import org.neo4j.collections.list.List;
> > > import org.neo4j.graphdb.Node;
> > > import org.neo4j.kernel.EmbeddedGraphDatabase;
> > > import java.util.ArrayList;
> > > import org.neo4j.graphdb.Transaction;
> > >
> > > public class Demo {
> > >
> > >        public static void main(String[] args){
> > >
> > >
> > >
> > >                //create/load database
> > >                EmbeddedGraphDatabase graphDb = new
> EmbeddedGraphDatabase(
> > > "var/db" );
> > >
> > >                Transaction tx = graphDb.beginTx();
> > >
> > >                //create node representing the list
> > >                Node indexNode = graphDb.createNode();
> > >
> > >                //create list
> > >                List list = new List( indexNode, graphDb );
> > >
> > >                //create nodes to be added to the list
> > >                Node node1 = graphDb.createNode();
> > >                Node node2 = graphDb.createNode();
> > >                Node node3 = graphDb.createNode();
> > >                Node node4 = graphDb.createNode();
> > >
> > >                //add nodes to the list one by one
> > >                list.add(node1);
> > >                list.add(node2);
> > >                list.add(node3);
> > >                list.add(node4);
> > >
> > >                //remove entries by index
> > >                list.remove(3);
> > >                list.remove(2);
> > >
> > >                //remove entries by node
> > >                list.remove(node2);
> > >                list.remove(node1);
> > >
> > >                //add a collection of nodes to the list
> > >                ArrayList<Node> al1 = new ArrayList<Node>();
> > >                al1.add(node1);
> > >                al1.add(node2);
> > >                al1.add(node3);
> > >                al1.add(node4);
> > >
> > >                list.addAll(al1);
> > >
> > >                //use the list in a for loop
> > >                for(Node n: list){
> > >                  System.out.println(n);
> > >                }
> > >
> > >                //find first entry in the list containing a specific
> node
> > >                list.indexOf(node2);
> > >
> > >                //find last entry in the list containing a specific node
> > >                list.lastIndexOf(node2);
> > >
> > >                //retain a collection of nodes from the list
> > >                ArrayList<Node> al2 = new ArrayList<Node>();
> > >                al2.add(node1);
> > >                al2.add(node3);
> > >                al2.add(node4);
> > >
> > >                list.retainAll(al2);
> > >
> > >                //remove a collection of nodes from the list
> > >                ArrayList<Node> al3 = new ArrayList<Node>();
> > >                al2.add(node3);
> > >                al2.add(node4);
> > >
> > >                list.removeAll(al3);
> > >
> > >                //delete the list
> > >                list.delete();
> > >
> > >                tx.success();
> > >                tx.finish();
> > >        }
> > > }
> > >
> > >
> > > > From: peter.neuba...@neotechnology.com
> > > > Date: Thu, 30 Jun 2011 17:49:46 +0200
> > > > To: user@lists.neo4j.org
> > > > Subject: Re: [Neo4j] graph-collections List class
> > > >
> > > > Guys,
> > > > if you can write some illustrative test code for the different
> > > > collections, I could undertake to put some documentation skeleton
> into
> > > > place that can be merged into the main manual and look like
> > > > http://docs.neo4j.org/chunked/snapshot/. To start with, we could
> have
> > > > it separately though.
> > > >
> > > > WDYT?
> > > >
> > > > Cheers,
> > > >
> > > > /peter neubauer
> > > >
> > > > GTalk:      neubauer.peter
> > > > Skype       peter.neubauer
> > > > Phone       +46 704 106975
> > > > LinkedIn   http://www.linkedin.com/in/neubauer
> > > > Twitter      http://twitter.com/peterneubauer
> > > >
> > > > http://www.neo4j.org               - Your high performance graph
> > > database.
> > > > http://startupbootcamp.org/    - Ă–resund - Innovation happens HERE.
> > > > http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing
> party.
> > > >
> > > >
> > > >
> > > > On Thu, Jun 30, 2011 at 5:28 PM, Niels Hoogeveen
> > > > <pd_aficion...@hotmail.com> wrote:
> > > > >
> > > > > Today I added a List class to the graph-collections repo:
> > > > >
> > >
> https://github.com/peterneubauer/graph-collections/tree/master/src/main/java/org/neo4j/collections/list
> > > > > The List class implements the java.util.List<Node> interface.
> > > > > Niels
> > > > > _______________________________________________
> > > > > Neo4j mailing list
> > > > > User@lists.neo4j.org
> > > > > https://lists.neo4j.org/mailman/listinfo/user
> > > > >
> > > > _______________________________________________
> > > > Neo4j mailing list
> > > > User@lists.neo4j.org
> > > > https://lists.neo4j.org/mailman/listinfo/user
> > >
> > > _______________________________________________
> > > Neo4j mailing list
> > > User@lists.neo4j.org
> > > https://lists.neo4j.org/mailman/listinfo/user
> > >
> >
> >
> >
> > --
> > Mattias Persson, [matt...@neotechnology.com]
> > Hacker, Neo Technology
> > www.neotechnology.com
> > _______________________________________________
> > Neo4j mailing list
> > User@lists.neo4j.org
> > https://lists.neo4j.org/mailman/listinfo/user
>
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>



-- 
Mattias Persson, [matt...@neotechnology.com]
Hacker, Neo Technology
www.neotechnology.com
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to