Okay, both are good hints!

thanks for the feedback!

Met Vriendelijke Groet / With Kind Regards
Bart van Leeuwen


twitter: @semanticfire
tel. +31(0)6-53182997
Netage B.V.
http://netage.nl
Esdoornstraat 3
3461ER Linschoten
The Netherlands




From:   Andy Seaborne <[email protected]>
To:     [email protected]
Date:   13-02-2019 13:40
Subject:        Re: QueryExecution.exec stops working in Java Web 
Application





On 13/02/2019 11:34, Martynas Jusevičius wrote:
> Are you closing the QueryExecution objects?

That is certainly something to look for.  The fact it is ~6 connections 
suggest that as well.

There's help for this - QueryExecution is a Java AutoCloseable so you 
can write:

try(QueryExecution exec = QueryExecutionFactory.sparqlService...) {
     ResultSet objects = exec.execSelect();
     ...
}

and the QueryExecution.close is always done.

or use RDFConnection which has idioms to query and process the results 
where the methods do te execution lifecycle:

RDFConnection.queryResultSet
RDFConnection.querySelect

     Andy


> 
> I've experienced similar stuff with Apache HTTP Client that would reach 
the
> limit of connections per route and then would just hang without any 
error
> messages.
> 
> On Wed, Feb 13, 2019 at 10:04 AM Bart van Leeuwen <
> [email protected]> wrote:
> 
>> So in the mean time I've been trying to understand the issue a bit 
better.
>>
>>  From 3.1.0 to 3.2.0 the most notable difference is the HTTPClient 
package
>> which introduces the PoolingHttpClientConnectionManager
>> ( this is visibile in the stacktrace )
>>
>> Since we run in Tomee ( Tomcat with EJB ) this is the cause of our
>> problems:
>>
>> 
https://stackoverflow.com/questions/27298746/using-poolinghttpclientconnectionmanager-in-ejb-container

>>
>> After adding the following lines to our constructor:
>> HttpClient httpclient = HttpClients.custom().build();
>> HttpOp.setDefaultHttpClient(httpclient);
>>
>> our problems are solved!
>>
>> Is there some background information on this (or should there be some
>> documentation aditions)
>>
>> Met Vriendelijke Groet / With Kind Regards
>> Bart van Leeuwen
>>
>>
>> twitter: @semanticfire
>> tel. +31(0)6-53182997
>> Netage B.V.
>> http://netage.nl
>> Esdoornstraat 3
>> 3461ER Linschoten
>> The Netherlands
>>
>>
>>
>>
>> From:        Bart van Leeuwen <[email protected]>
>> To:        [email protected]
>> Date:        12-02-2019 22:49
>> Subject:        QueryExecution.exec stops working in Java Web 
Application
>> ------------------------------
>>
>>
>>
>> Hi,
>>
>> We have a web application which uses the following code to connect to a
>> external endpoint
>>
>> QueryExecution exec  =
>> QueryExecutionFactory.sparqlService(Config.getConfig("endpoint"), 
kroQuery);
>> ResultSet objects = exec.execSelect();
>>
>> This runs fine with Jena up to 3.1.0
>>
>> However with later versions we run into the issue that after 6 requests
>> they don't return, upon killing the application ( or server ) this is
>> visible on the console:
>>
>> ====
>>
>> WARNING - The web application [ROOT] is still processing a request that
>> has yet to finish. This is very likely to create a memory leak. You can
>> control the time allowed for requests to finish by using the 
unloadDelay
>> attribute of the standard Context implementation. Stack trace of 
request
>> processing thread:
>> sun.misc.Unsafe.park(Native Method)
>> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>>
>> 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
>> org.apache.http.pool.PoolEntryFuture.await(PoolEntryFuture.java:138)
>>
>> 
org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:306)
>> 
org.apache.http.pool.AbstractConnPool.access$000(AbstractConnPool.java:64)
>>
>> 
org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:192)
>>
>> 
org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:185)
>> org.apache.http.pool.PoolEntryFuture.get(PoolEntryFuture.java:107)
>>
>> 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:276)
>>
>> 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:263)
>>
>> 
org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190)
>>
>> 
org.apache.http.impl.client.cache.CachingExec.callBackend(CachingExec.java:592)
>>
>> 
org.apache.http.impl.client.cache.CachingExec.handleCacheMiss(CachingExec.java:356)
>> 
org.apache.http.impl.client.cache.CachingExec.execute(CachingExec.java:275)
>> 
org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
>> org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
>> 
org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
>>
>> 
org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
>>
>> 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
>>
>> 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
>> org.apache.jena.riot.web.HttpOp.exec(HttpOp.java:1054)
>> org.apache.jena.riot.web.HttpOp.execHttpGet(HttpOp.java:281)
>> org.apache.jena.riot.web.HttpOp.execHttpGet(HttpOp.java:340)
>> 
org.apache.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:323)
>> org.apache.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:282)
>>
>> 
org.apache.jena.sparql.engine.http.QueryEngineHTTP.execResultSetInner(QueryEngineHTTP.java:342)
>>
>> 
org.apache.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:334)
>> webservice.KroService.getBlockAsJson(KroService.java:90)
>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>
>> 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>
>> 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> java.lang.reflect.Method.invoke(Method.java:498)
>>
>> 
org.apache.openejb.server.cxf.rs.PojoInvoker.performInvocation(PojoInvoker.java:43)
>>
>> 
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
>> org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:189)
>> org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)
>>
>> 
org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:68)
>>
>> 
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
>>
>> 
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
>>
>> 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
>>
>> 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>
>> 
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)
>>
>> 
org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:251)
>>
>> 
org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:94)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
>>
>> 
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
>>
>> 
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
>>
>> 
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
>>
>> 
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
>>
>> 
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
>>
>> 
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
>>
>> 
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
>> 
org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:419)
>> org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:169)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
>>
>> 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
>>
>> 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
>>
>> 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
>> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
>>
>> 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>
>> 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
>>
>> 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
>>
>> 
org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
>>
>> 
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
>>
>> 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
>> 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
>> 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784)
>>
>> 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
>>
>> 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)
>>
>> 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410)
>>
>> 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>>
>> 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>
>> 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>
>> 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>> java.lang.Thread.run(Thread.java:748)
>>
>> ====
>>
>> Any hint would be greatly appreciated.
>>
>> Met Vriendelijke Groet / With Kind Regards
>> Bart van Leeuwen
>>
>>
>> twitter: @semanticfire
>> tel. +31(0)6-53182997
>> Netage B.V.
>> *http://netage.nl* <http://netage.nl/>
>> Esdoornstraat 3
>> 3461ER Linschoten
>> The Netherlands
>>
>>
>>
> 


Reply via email to