NPE using Cypher query & WITH construct...

50 views
Skip to first unread message

kiteflo

unread,
Nov 15, 2012, 7:15:53 AM11/15/12
to ne...@googlegroups.com
Hi guys,

we're just in progress of refactoring our whole application in order to use the great piped query feature, currently we are facing a NullPointer Exception when firung down the following Cypher query:

START  spat=node:GEO_INDEX('withinDistance:[49.87497,8.826425,10.0]') MATCH spat-[r1:MANUAL_SPATIAL_CONNECT]->loc-[r2:GEOFIES]->offer WITH offer START keyword=node:SKW_NAMEKEY_SEARCH('Kartbahn') MATCH offer<-[rkw:OCCURS_IN_OFFER]-keyword WITH offer,count(rkw) as count_rkw MATCH offer<-[rr?:REVIEW]-review WHERE (offer.nodeState = 'ACTIVE') RETURN offer, avg(review.rating) as average_review, count(review) as no_of_reviews, count_rkw ORDER BY count_rkw DESC

See the exception below, from my point of view the query looks ok but maybe we're doing something wrong?

Any help is highly appreciated...

Cheers, Florian

Exception rised:

SCHWERWIEGEND: Servlet.service() for servlet [dispatcher] in context with path [/helios] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException

at org.apache.lucene.util.SimpleStringInterner.intern(SimpleStringInterner.java:54)

at org.apache.lucene.util.StringHelper.intern(StringHelper.java:39)

at org.apache.lucene.index.Term.<init>(Term.java:38)

at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:643)

at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1421)

at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1309)

at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1237)

at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1226)

at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)

at org.neo4j.index.impl.lucene.IndexType.query(IndexType.java:300)

at org.neo4j.index.impl.lucene.LuceneIndex.query(LuceneIndex.java:227)

at org.neo4j.index.impl.lucene.LuceneIndex.query(LuceneIndex.java:238)

at org.neo4j.cypher.internal.executionplan.builders.IndexQueryBuilder$$anonfun$createStartPipe$3.apply(IndexQueryBuilder.scala:83)

at org.neo4j.cypher.internal.executionplan.builders.IndexQueryBuilder$$anonfun$createStartPipe$3.apply(IndexQueryBuilder.scala:81)

at org.neo4j.cypher.internal.pipes.StartPipe$$anonfun$1.apply(StartPipe.scala:38)

at org.neo4j.cypher.internal.pipes.StartPipe$$anonfun$1.apply(StartPipe.scala:37)

at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)

at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)

at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)

at scala.collection.immutable.List.foreach(List.scala:45)

at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)

at scala.collection.immutable.List.flatMap(List.scala:45)

at org.neo4j.cypher.internal.pipes.StartPipe.createResults(StartPipe.scala:37)

at org.neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31)

at org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala:49)

at org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37)

at org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39)

at org.neo4j.cypher.internal.pipes.FilterPipe.createResults(FilterPipe.scala:28)

at org.neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31)

at org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala:49)

at org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37)

at org.neo4j.cypher.internal.pipes.SortPipe.createResults(SortPipe.scala:33)

at org.neo4j.cypher.internal.pipes.SortPipe.createResults(SortPipe.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:334)

at scala.collection.JavaConversions$IteratorWrapper.hasNext(JavaConversions.scala:562)

at org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)

at com.helios.service.plain.OfferService.queryOffers(OfferService.java:1076)

at com.helios.service.plain.OfferService.queryOffers(OfferService.java:1287)

at com.helios.web.controller.RecommendationController.newRecommendation(RecommendationController.java:188)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)

at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)

at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)

at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:680)


Michael Hunger

unread,
Nov 15, 2012, 7:38:04 AM11/15/12
to ne...@googlegroups.com
this search misses a field:

node:SKW_NAMEKEY_SEARCH('Kartbahn')

like 'type:Kartbahn'

and please make sure to use parameters everywhere !

Michael

--
 
 

kiteflo

unread,
Nov 15, 2012, 9:30:14 AM11/15/12
to ne...@googlegroups.com
Hi Michael,

thanx for the quick reply...but still cant get it working, you mean sth. like this?

...WITH offer START keyword=node:SKW_NAMEKEY_SEARCH(like 'type:Kartbahn')...

We are using Lucene Indexes quite long and usually the way we used them worked perfectly - did there change anything as an extra filed need to be specified? Would be great to have the "like" part integrated into our query as I'm not sure where to append - srry;

Thanx for your help, Florian;

P.S.: yes, we are migrating everything to parameters right now ;-)

Michael Hunger

unread,
Nov 15, 2012, 9:36:54 AM11/15/12
to ne...@googlegroups.com
???

this is already a like search query, you can use wildcards like * 

START keyword=node:SKW_NAMEKEY_SEARCH('type:Kartbahn')...

Michael

--
 
 

kiteflo

unread,
Nov 15, 2012, 9:52:36 AM11/15/12
to ne...@googlegroups.com
damn...sorry, got what you mean...that's the problem using query generation - written once your Cypher querries will decrease...but now we're up to fluent Cypher again ;-)

Thank you, Florian;


Am Donnerstag, 15. November 2012 13:15:53 UTC+1 schrieb kiteflo:
Reply all
Reply to author
Forward
0 new messages