[Neo4j] Record not in use problem and solution
Axel Morgner
axel at morgner.de
Thu Nov 17 00:09:26 CET 2011
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
More information about the User
mailing list