> My understanding is this:

And it is wrong. Consider the following snippet:

        GraphDatabaseService graphDb = new EmbeddedGraphDatabase("var/base");

        Transaction tx = graphDb.beginTx();

        Node firstNode = graphDb.createNode();
        Node secondNode = graphDb.createNode();
        System.out.println(firstNode.getId());
        System.out.println(secondNode.getId());
        secondNode.delete();
        Node thirdNode = graphDb.createNode();
        System.out.println(thirdNode.getId());
        tx.success();
        tx.finish();

        tx = graphDb.beginTx();
        Node fourthNode = graphDb.createNode();
        System.out.println(fourthNode.getId());
        tx.success();
        tx.finish();
        graphDb.shutdown();

If the id pool was reused after a successful commit() (success() in
the above code) as I described then, on a new db, this should print
1
2
3
2

but instead it prints
1
2
3
4

The id 2 is reused upon restart of the db.
That will teach me to speak without checking first. What I did wrong
is left as an exercise for tomorrow.

cheers,
CG
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to