[Neo4j] InvalidRecordException exception

rick.bullotta at burningskysoftware.com rick.bullotta at burningskysoftware.com
Fri Dec 17 17:53:05 CET 2010

   Hi, Johan.

   Is this related to the patch you provided me for a similar issue?  I
   had thought it made it into the milestone release(s).



   -------- Original Message --------
   Subject: Re: [Neo4j] InvalidRecordException exception
   From: Johan Svensson <[1]johan at neotechnology.com>
   Date: Wed, December 15, 2010 8:32 am
   To: Neo4j user discussions <[2]user at lists.neo4j.org>
   This will still happen in the 1.2.M05 release. I just wanted to make
   sure I linked the stacktrace's line numbers to the right part of the
   code since that exception being thrown at a different place in the
   delete method could mean there are other problems.
   On Wed, Dec 15, 2010 at 1:42 PM, George Ciubotaru
   <[3]george.ciubotaru at weedle.com> wrote:
   > Yes, the version I'm currently using is 1.1. Shall I understand that
   this kind of issue shouldn't occur in 1.2.M05?
   > For the moment I'll take the pessimistic approach by guarding against
   (as in the example you gave) to assure that this is the reason and then
   I'll just accept the exception.
   > Thank you for your quick and detailed response.
   > Best regards,
   > George
   > -----Original Message-----
   > From: [4]user-bounces at lists.neo4j.org
   [[5]mailto:user-bounces at lists.neo4j.org] On Behalf Of Johan Svensson
   > Sent: 15 December 2010 12:23
   > To: Neo4j user discussions
   > Subject: Re: [Neo4j] InvalidRecordException exception
   > Sorry, should also have asked what Neo4j version you use but guessing
   it is 1.1 or early milestone release?
   > If so I think the problem is caused by two or more concurrent
   transactions running delete on the same relationship. If two
   transactions get a reference to the same relationship and concurrently
   delete that relationship it is possible for a InvalidRecordException to
   be thrown instead of a NotFoundException since the write lock is
   grabbed after the relationship has been verified to exist.
   > Solution is either to accept the exception or to guard against it by
   first acquiring a read lock on the relationship before invoking
   relationship.delete(). Code example how to do this:
   >    GraphDatabaseService gdb; // the graph db
   >    Relationship relationship; // the relationship to delete
   >    LockManager lockManager = ((EmbeddedGraphDatabase)
   >    lockManager.getReadLock( relationship );
   >    try
   >    {
   >        relationship.delete();
   >    }
   >    finally
   >    {
   >        lockManager.releaseReadLock( relationship );
   >    }
   > Regards,
   > Johan
   Neo4j mailing list
   [6]User at lists.neo4j.org


   1. mailto:johan at neotechnology.com
   2. mailto:user at lists.neo4j.org
   3. mailto:george.ciubotaru at weedle.com
   4. mailto:user-bounces at lists.neo4j.org
   5. mailto:user-bounces at lists.neo4j.org
   6. mailto:User at lists.neo4j.org
   7. https://lists.neo4j.org/mailman/listinfo/user

More information about the User mailing list