semagrow / semagrow

A SPARQL query federator of heterogeneous data sources

Home Page:https://semagrow.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ConcurrentModificationException with query containing UNION statement

KMax opened this issue · comments

I faced the following exception, all the details are below:

semagrow_1  | 19:11:59.151 [http-nio-8080-exec-7] INFO  o.s.q.impl.SemagrowSailTupleQuery - SemaGrow query evaluate with handler PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
semagrow_1  | PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
semagrow_1  | PREFIX tr-org: <http://permid.org/ontology/organization/>
semagrow_1  | PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
semagrow_1  | PREFIX fibo-fnd-rel-rel: <https://spec.edmcouncil.org/fibo/ontology/FND/Relations/Relations/>
semagrow_1  | PREFIX fibo-fnd-org-fm: <https://spec.edmcouncil.org/fibo/ontology/FND/Organizations/>
semagrow_1  | 
semagrow_1  | SELECT * WHERE {
semagrow_1  | 	{
semagrow_1  |   		?orgUri a tr-org:Organization 
semagrow_1  | 	}
semagrow_1  | 	UNION
semagrow_1  | 	{
semagrow_1  | 		?orgUri a fibo-fnd-org-fm:FormalOrganization
semagrow_1  | 	}
semagrow_1  |     ?orgUri fibo-fnd-rel-rel:hasLegalName|vcard:organization-name ?orgName .
semagrow_1  | } 
semagrow_1  | LIMIT 10
semagrow_1  | 19:11:59.151 [http-nio-8080-exec-7] DEBUG o.s.sail.SemagrowSailConnection - Starting decomposition of QueryRoot
semagrow_1  |    Slice ( limit=10 )
semagrow_1  |       Projection
semagrow_1  |          ProjectionElemList
semagrow_1  |             ProjectionElem "orgUri"
semagrow_1  |             ProjectionElem "orgName"
semagrow_1  |          Join
semagrow_1  |             Union
semagrow_1  |                StatementPattern
semagrow_1  |                   Var (name=orgUri)
semagrow_1  |                   Var (name=_const_f5e5585a_uri, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type, anonymous)
semagrow_1  |                   Var (name=_const_cbd6516b_uri, value=http://permid.org/ontology/organization/Organization, anonymous)
semagrow_1  |                StatementPattern
semagrow_1  |                   Var (name=orgUri)
semagrow_1  |                   Var (name=_const_f5e5585a_uri, value=http://www.w3.org/1999/02/22-rdf-syntax-ns#type, anonymous)
semagrow_1  |                   Var (name=_const_d4c4b487_uri, value=https://spec.edmcouncil.org/fibo/ontology/FND/Organizations/FormalOrganization, anonymous)
semagrow_1  |             Union
semagrow_1  |                StatementPattern
semagrow_1  |                   Var (name=orgUri)
semagrow_1  |                   Var (name=_const_1fe31890_uri, value=https://spec.edmcouncil.org/fibo/ontology/FND/Relations/Relations/hasLegalName, anonymous)
semagrow_1  |                   Var (name=orgName)
semagrow_1  |                StatementPattern
semagrow_1  |                   Var (name=orgUri)
semagrow_1  |                   Var (name=_const_69ef1007_uri, value=http://www.w3.org/2006/vcard/ns#organization-name, anonymous)
semagrow_1  |                   Var (name=orgName)
semagrow_1  | 
semagrow_1  | 19:11:59.154 [http-nio-8080-exec-7] ERROR o.s.http.views.TupleQueryResultView - Unknown internal error
semagrow_1  | java.util.ConcurrentModificationException: null
semagrow_1  | 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380) ~[na:1.8.0_91]
semagrow_1  | 	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_91]
semagrow_1  | 	at org.semagrow.plan.queryblock.UnionMergeVisitor.meet(UnionMergeVisitor.java:12) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meet(AbstractQueryBlockVisitor.java:16) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlock.visit(AbstractQueryBlock.java:52) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.SelectBlock.visitChildren(SelectBlock.java:83) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meetNode(AbstractQueryBlockVisitor.java:45) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meet(AbstractQueryBlockVisitor.java:29) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meet(AbstractQueryBlockVisitor.java:12) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlock.visit(AbstractQueryBlock.java:52) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.SelectBlock.visitChildren(SelectBlock.java:83) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meetNode(AbstractQueryBlockVisitor.java:45) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meet(AbstractQueryBlockVisitor.java:29) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlockVisitor.meet(AbstractQueryBlockVisitor.java:12) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.queryblock.AbstractQueryBlock.visit(AbstractQueryBlock.java:52) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.SimpleQueryCompiler.blockify(SimpleQueryCompiler.java:72) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.plan.SimpleQueryCompiler.compile(SimpleQueryCompiler.java:47) ~[semagrow-core-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.sail.SemagrowSailConnection.decompose(SemagrowSailConnection.java:232) ~[semagrow-rdf4j-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.sail.SemagrowSailConnection.evaluateInternalReactive(SemagrowSailConnection.java:164) ~[semagrow-rdf4j-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.sail.SemagrowSailConnection.evaluateReactive(SemagrowSailConnection.java:147) ~[semagrow-rdf4j-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.query.impl.SemagrowSailTupleQuery.evaluate(SemagrowSailTupleQuery.java:78) ~[semagrow-rdf4j-2.1-SNAPSHOT.jar:na]
semagrow_1  | 	at org.semagrow.http.views.TupleQueryResultView.renderInternal(TupleQueryResultView.java:69) ~[classes/:na]
semagrow_1  | 	at org.eclipse.rdf4j.http.server.repository.QueryResultView.render(QueryResultView.java:64) [rdf4j-http-server-spring-2.1.1.jar:na]
semagrow_1  | 	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [servlet-api.jar:na]
semagrow_1  | 	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:na]
semagrow_1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.3]
semagrow_1  | 	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.0.RELEASE.jar:4.3.0.RELEASE]
semagrow_1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [catalina.jar:8.5.3]
semagrow_1  | 	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) [tomcat-coyote.jar:8.5.3]
semagrow_1  | 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.3]
semagrow_1  | 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) [tomcat-coyote.jar:8.5.3]
semagrow_1  | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) [tomcat-coyote.jar:8.5.3]
semagrow_1  | 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-coyote.jar:8.5.3]
semagrow_1  | 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
semagrow_1  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
semagrow_1  | 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.3]
semagrow_1  | 	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
semagrow_1  | 19:11:59.155 [http-nio-8080-exec-7] INFO  o.s.http.views.TupleQueryResultView - Request for query -1641661834 is finished
semagrow_1  | 19:11:59.155 [http-nio-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request

Hi @KMax, I think the PR #19 should fix the exception you are facing. I tested it with a similar query but in a different federation. Let me know if the bug is also fixed in your federation or you are still getting the same error message.