Updated link: https://github.com/neo4j/neo4j/issues/37 Appears to be unresolved at the moment.
On Wednesday, September 18, 2013 1:39:38 AM UTC-4, Debajyoti Roy wrote: > > Hi Peter, > > We are noticing this on community 1.9.3 ...not sure if there is a more > elegant way to address this issue. > I could not get further information about the resolution as the link is > broken: https://github.com/neo4j/community/issues/879 > > Thanks, > Roy > > On Wednesday, September 26, 2012 1:43:13 PM UTC-4, Peter Neubauer wrote: >> >> Hi Christopher, >> >> I've discussed this with our team, and unfortunately this is a >> side-effect of the way Neo4j optimises for read performance - it >> supports "read-committed" within a single cypher statement, which can >> result in phantom reads. >> >> In this specific case, the cypher engine has identified nodes to be >> traversed as part of the query, but then those nodes are not available >> when it attempts to traverse the graph during execution. So you see >> this exception. >> >> We don't particularly like this either, and believe the exception is >> obtuse. So we will be looking at how to improve this, both in terms of >> the exception message itself and also to try and support "repeatable >> reads" at minimum within a single cypher statement. I don't have a >> timeframe on this, but I'm hoping we'll see that in a future release >> soon. >> >> For now, there is no concern in ignoring those exceptions and >> re-trying the query. >> >> I have opened https://github.com/neo4j/community/issues/879 to track >> this. >> >> Thanks for reporting! >> >> Cheers, >> >> /peter neubauer >> >> Neo4j 1.8.RC1 "Vindeln Vy" - >> http://blog.neo4j.org/2012/09/neo4j-18rc1-really-careful-ftw.html >> >> G: neubauer.peter >> S: peter.neubauer >> P: +46 704 106975 >> L: http://www.linkedin.com/in/neubauer >> T: @peterneubauer >> >> Wanna learn something new? Come to @graphconnect. >> >> >> On Fri, Sep 21, 2012 at 7:22 AM, chris <[email protected]> wrote: >> > I have a reading and a deleting cypher query that run in different >> processes >> > at the same time which leads to a NotFoundException. The exception >> happens >> > in the reading query. >> > >> > - the read query is like this: >> > START partentNode=1 MATCH parentNode-[r1:HAS]->childNode WHERE r1.id = >> {x} >> > return childNode >> > >> > - while my deleting query is like this >> > START partentNode=1 MATCH parentNode-[r1:HAS]->childNode WHERE r1.id = >> {y} >> > delete r1 >> > >> > My guess is that the reading query gathers nodes that fit the MATCH >> clause. >> > Now the deleting query deletes r1's which happen to be in the just >> gathered >> > set of nodes of the reading query. >> > When the reading query now starts to evaluate nodes to the WHERE clause >> the >> > exception occurs because the node to evaluate is not existing anymore. >> > >> > Neo4j even seems to detect this (cool :D) but, instead of ignoring the >> error >> > and continuing the evaluation on the rest of the set, it is stopping >> and >> > therefore does not return a result. >> > >> > Is there a way to tell neo4j to go on instead of stopping and throwing >> an >> > exception (catching the exception only does not lead to a result)? >> > >> > >> > Trace: >> > >> > [ERROR] [09/21/2012 15:14:00.194] [...] The property 'instanceId' does >> not >> > exist on Relationship[408] >> > org.neo4j.cypher.EntityNotFoundException: The property 'instanceId' >> does not >> > exist on Relationship[408] >> > at >> > >> org.neo4j.cypher.internal.commands.Property.compute(Expression.scala:221) >> > at >> > >> org.neo4j.cypher.internal.commands.Expression$$anonfun$apply$1.apply(Expression.scala:30) >> >> >> > at scala.collection.MapLike$class.getOrElse(MapLike.scala:122) >> > at >> > >> scala.collection.JavaConversions$JMapWrapper.getOrElse(JavaConversions.scala:792) >> >> >> > at >> > >> org.neo4j.cypher.internal.commands.Expression.apply(Expression.scala:30) >> > at >> > >> org.neo4j.cypher.internal.commands.Equals.isMatch(ComparablePredicate.scala:51) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.SimplePatternMatcherBuilder$$anonfun$getMatches$1$$anonfun$apply$3.apply(SimplePatternMatcherBuilder.scala:93) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.SimplePatternMatcherBuilder$$anonfun$getMatches$1$$anonfun$apply$3.apply(SimplePatternMatcherBuilder.scala:93) >> >> >> > at >> > >> scala.collection.LinearSeqOptimized$class.forall(LinearSeqOptimized.scala:69) >> >> >> > at scala.collection.immutable.List.forall(List.scala:76) >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.SimplePatternMatcherBuilder$$anonfun$getMatches$1.apply(SimplePatternMatcherBuilder.scala:93) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.SimplePatternMatcherBuilder$$anonfun$getMatches$1.apply(SimplePatternMatcherBuilder.scala:85) >> >> >> > at >> > >> scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) >> >> >> > at >> > >> scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) >> >> >> > at scala.collection.Iterator$class.foreach(Iterator.scala:772) >> > at >> > >> scala.collection.JavaConversions$JIteratorWrapper.foreach(JavaConversions.scala:573) >> >> >> > at >> > scala.collection.IterableLike$class.foreach(IterableLike.scala:73) >> > at >> > >> scala.collection.JavaConversions$JIterableWrapper.foreach(JavaConversions.scala:587) >> >> >> > at >> > scala.collection.TraversableLike$class.map(TraversableLike.scala:233) >> > at >> > >> scala.collection.JavaConversions$JIterableWrapper.map(JavaConversions.scala:587) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.SimplePatternMatcherBuilder.getMatches(SimplePatternMatcherBuilder.scala:85) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.SimplePatternMatcherBuilder.getMatches(SimplePatternMatcherBuilder.scala:30) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.matching.MatchingContext.getMatches(MatchingContext.scala:53) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.MatchPipe$$anonfun$createResults$1.apply(MatchPipe.scala:32) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.MatchPipe$$anonfun$createResults$1.apply(MatchPipe.scala:31) >> >> >> > at >> > >> scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:239) >> >> >> > at >> > >> scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:239) >> >> >> > at >> > >> scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) >> >> >> > at scala.collection.immutable.List.foreach(List.scala:76) >> > at >> > >> scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:239) >> > at scala.collection.immutable.List.flatMap(List.scala:76) >> > at >> > >> org.neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31) >> > at >> > >> org.neo4j.cypher.internal.pipes.FilterPipe.createResults(FilterPipe.scala:28) >> >> >> > at >> > >> org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39) >> >> >> > at >> > >> org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl$$anonfun$4$$anonfun$apply$2.apply(ExecutionPlanImpl.scala:95) >> >> >> > at >> > >> org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl$$anonfun$4$$anonfun$apply$2.apply(ExecutionPlanImpl.scala:95) >> >> >> > at >> > >> org.neo4j.cypher.PipeExecutionResult.immutableResult(PipeExecutionResult.scala:37) >> >> >> > at >> > >> org.neo4j.cypher.PipeExecutionResult.iterator(PipeExecutionResult.scala:153) >> >> > at >> > >> org.neo4j.cypher.PipeExecutionResult.hasNext(PipeExecutionResult.scala:155) >> > at >> scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:400) >> > at >> > >> scala.collection.JavaConversions$IteratorWrapper.hasNext(JavaConversions.scala:562) >> >> >> > at >> > >> org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42) >> >> >> > at >> > >> org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:322) >> >> >> > at >> > >> org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:341) >> >> >> > at >> > >> org.springframework.data.neo4j.repository.query.GraphRepositoryQuery.dispatchQuery(GraphRepositoryQuery.java:92) >> >> >> > at >> > >> org.springframework.data.neo4j.repository.query.GraphRepositoryQuery.execute(GraphRepositoryQuery.java:70) >> >> >> > at >> > >> org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:313) >> >> >> > at >> > >> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >> >> >> > at >> > >> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) >> >> >> > at >> > >> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >> >> >> > at >> > >> org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155) >> >> >> > at >> > >> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >> >> >> > at >> > >> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) >> >> >> > at $Proxy51.findFlowNodeInstancesAtCurrentLevelByState(Unknown >> > Source) >> > >> > ... >> > >> > Caused by: org.neo4j.graphdb.NotFoundException: Relationship[408] not >> found. >> > This can be because someone else deleted this entity while we were >> trying to >> > read properties from it, or because of concurrent modification of other >> > properties on this entity. The problem should be temporary. >> > at >> > >> org.neo4j.kernel.impl.core.Primitive.ensureFullProperties(Primitive.java:589) >> >> >> > at >> > >> org.neo4j.kernel.impl.core.Primitive.ensureFullProperties(Primitive.java:567) >> >> >> > at >> > org.neo4j.kernel.impl.core.Primitive.getProperty(Primitive.java:153) >> > at >> > >> org.neo4j.kernel.impl.core.RelationshipImpl.getProperty(RelationshipImpl.java:32) >> >> >> > at >> > >> org.neo4j.kernel.impl.core.RelationshipProxy.getProperty(RelationshipProxy.java:114) >> >> >> > at >> > >> org.neo4j.cypher.internal.commands.Property.compute(Expression.scala:219) >> > ... 70 more >> > Caused by: org.neo4j.kernel.impl.nioneo.store.InvalidRecordException: >> > PropertyRecord[682] not in use >> > at >> > >> org.neo4j.kernel.impl.nioneo.store.PropertyStore.getRecord(PropertyStore.java:441) >> >> >> > at >> > >> org.neo4j.kernel.impl.nioneo.store.PropertyStore.getLightRecord(PropertyStore.java:300) >> >> >> > at >> > >> org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.getPropertyRecordChain(ReadTransaction.java:185) >> >> >> > at >> > >> org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.loadProperties(ReadTransaction.java:215) >> >> >> > at >> > >> org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.relLoadProperties(ReadTransaction.java:233) >> >> >> > at >> > >> org.neo4j.kernel.impl.persistence.PersistenceManager.loadRelProperties(PersistenceManager.java:119) >> >> >> > at >> > >> org.neo4j.kernel.impl.core.NodeManager.loadProperties(NodeManager.java:688) >> > at >> > >> org.neo4j.kernel.impl.core.RelationshipImpl.loadProperties(RelationshipImpl.java:92) >> >> >> > at >> > >> org.neo4j.kernel.impl.core.Primitive.ensureFullProperties(Primitive.java:584) >> >> >> > ... 75 more >> > >> > -- >> > >> > >> > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
