[Neo4j] Record not in use problem and solution

Peter Neubauer peter.neubauer at neotechnology.com
Thu Nov 17 07:03:57 CET 2011


Axel,
Can you isolate this into a test, and maybe send the messages.log off list
for us to look at?
On Nov 17, 2011 12:09 AM, "Axel Morgner" <axel at morgner.de> wrote:

> Sorry to say, but I can reproduce the behaviour with 1.5, too.
>
> Without deleting the node from the index manually, I get still this
> org.neo4j.kernel.impl.nioneo.store.InvalidRecordException:
>
> 17.11.2011 00:01:48 org.structr.core.node.TransactionCommand execute
> WARNUNG: Transaction failure
> org.neo4j.kernel.impl.nioneo.store.InvalidRecordException: Record[46]
> not in use
>     at
> org.neo4j.kernel.impl.nioneo.store.NodeStore.getRecord(NodeStore.java:215)
>     at
> org.neo4j.kernel.impl.nioneo.store.NodeStore.getRecord(NodeStore.java:96)
>     at
>
> org.neo4j.kernel.impl.nioneo.xa.WriteTransaction.nodeDelete(WriteTransaction.java:683)
>     at
>
> org.neo4j.kernel.impl.persistence.PersistenceManager.nodeDelete(PersistenceManager.java:136)
>     at
> org.neo4j.kernel.impl.core.NodeManager.deleteNode(NodeManager.java:847)
>     at org.neo4j.kernel.impl.core.NodeImpl.delete(NodeImpl.java:266)
>     at org.neo4j.kernel.impl.core.NodeProxy.delete(NodeProxy.java:57)
>     at org.structr.core.entity.AbstractNode.delete(AbstractNode.java:1358)
>     at
>
> org.structr.rest.constraint.ResourceConstraint$2.execute(ResourceConstraint.java:153)
>     at
>
> org.structr.core.node.TransactionCommand.execute(TransactionCommand.java:61)
>     at
>
> org.structr.rest.constraint.ResourceConstraint.doDelete(ResourceConstraint.java:129)
>     at
> org.structr.rest.servlet.JsonRestServlet.doDelete(JsonRestServlet.java:188)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>     at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>     at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>     at
>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
>     at
>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
>     at
>
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
>     at
>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>     at
>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>     at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
>     at
>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
>     at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
>     at
>
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
>     at
>
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
>     at
>
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
>     at
>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>     at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>     at java.lang.Thread.run(Thread.java:679)
>
> Interestingly, all node properties (besides id) are empty.
>
> Greetings
>
> Axel
>
> > Sorry, I meant we had this with 1.4.2, but nevertheless I will
> > double-check 1.5 now ..
> >
> >
> > Am 16.11.2011 22:28, schrieb Peter Neubauer:
> >> Axel,
> >> please do, as we have found and squashed a number of potential
> >> problems in QA for 1.5 after 1.4.1
> >>
> >> 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              - NOSQL for the Enterprise.
> >> http://startupbootcamp.org/    - Öresund - Innovation happens HERE.
> >>
> >>
> >>
> >> On Wed, Nov 16, 2011 at 10:27 PM, Axel Morgner<axel at morgner.de>
> wrote:
> >>> Using neo4j 1.4.1 we had some exceptions like
> >>>
> >>> 15.11.2011 18:16:11 org.structr.core.entity.AbstractNode setProperty
> >>> WARNUNG: Exception in setProperty
> >>> org.neo4j.kernel.impl.nioneo.store.InvalidRecordException: Record[22]
> >>> not in use
> >>> at
> >>>
> org.neo4j.kernel.impl.nioneo.store.NodeStore.getRecord(NodeStore.java:178)
> >>> at
> org.neo4j.kernel.impl.nioneo.store.NodeStore.getRecord(NodeStore.java:95)
> >>> at
> >>>
> org.neo4j.kernel.impl.nioneo.xa.WriteTransaction.nodeLoadProperties(WriteTransaction.java:1043)
> >>> at
> >>>
> org.neo4j.kernel.impl.persistence.PersistenceManager.loadNodeProperties(PersistenceManager.java:114)
> >>> at
> >>>
> org.neo4j.kernel.impl.core.NodeManager.loadProperties(NodeManager.java:675)
> >>> at
> org.neo4j.kernel.impl.core.NodeImpl.loadProperties(NodeImpl.java:115)
> >>> at
> >>>
> org.neo4j.kernel.impl.core.Primitive.ensureFullProperties(Primitive.java:648)
> >>> at org.neo4j.kernel.impl.core.Primitive.hasProperty(Primitive.java:283)
> >>> at org.neo4j.kernel.impl.core.NodeProxy.hasProperty(NodeProxy.java:150)
> >>>
> >>> The exception was thrown when our new REST API was under heavy load. In
> >>> our testcase, we deleted nodes in a while-true-loop while creating
> nodes
> >>> in another. After some concurrent requests, the nodes were not cleanly
> >>> auto-removed from the (manual) index. So some nodes were still returned
> >>> by an index search, but the above exception was thrown.
> >>>
> >>> Before fixing, our code for removing looked like this (AbstractNode and
> >>> StructrRelationship are just wrapper classes for Neo's Node and
> >>> Relationship).
> >>>
> >>>                   [...]
> >>>                               // 1: delete relationships
> >>>                               if(obj instanceof AbstractNode) {
> >>>                                   List<StructrRelationship>   rels =
> >
> >>> ((AbstractNode)obj).getRelationships();
> >>>                                   for(StructrRelationship rel : rels) {
> >>>                                       success&= rel.delete();
> >>>                                   }
> >>>                               }
> >>>
> >>>                               // 2: delete object
> >>>                               success&= obj.delete();
> >>>                   [...]
> >>>
> >>> Removing the node from the index before deleting it resolved the
> exception.
> >>>
> >>>                   [...]
> >>>
> >>>                               // 1: remove node from index
> >>>                               Services.command(securityContext,
> >>> RemoveNodeFromIndex.class).execute(obj);
> >>>
> >>>                               // 2: delete relationships
> >>>                               if(obj instanceof AbstractNode) {
> >>>                                   List<StructrRelationship>   rels =
> >>> ((AbstractNode)obj).getRelationships();
> >>>                                   for(StructrRelationship rel : rels) {
> >>>                                       success&= rel.delete();
> >>>                                   }
> >>>                               }
> >>>
> >>>                               // 3: delete object
> >>>                               success&= obj.delete();
> >>>                   [...]
> >>> Maybe this helps someone.
> >>>
> >>> Tonight, I will do a test with neo4j 1.5 and report back.
> >>>
> >>>
> >>> Greetings
> >>>
> >>> Axel
> >>>
> >>> _______________________________________________
> >>> Neo4j mailing list
> >>> User at lists.neo4j.org
> >>> https://lists.neo4j.org/mailman/listinfo/user
> >>>
> >> _______________________________________________
> >> Neo4j mailing list
> >> User at lists.neo4j.org
> >> https://lists.neo4j.org/mailman/listinfo/user
> >
>
>
> --
> Axel Morgner
> Morgner UG
> Hanauer Landstr. 291a
> 60314 Frankfurt
> Germany
>
> Phone +49 151 40522060
> Skype axel.morgner
> E-mail axel at morgner.de
> Web http://www.morgner.de
> Twitter @amorgner
>
> _______________________________________________
> Neo4j mailing list
> User at lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>


More information about the User mailing list