[ 
https://issues.apache.org/jira/browse/CXF-9166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

maggie updated CXF-9166:
------------------------
    Component/s: JAX-RS

> RejectedExecutionException thrown by CXF WebClient due to terminated 
> ThreadPoolExecutor in HTTPConduit
> ------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-9166
>                 URL: https://issues.apache.org/jira/browse/CXF-9166
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 4.1.2
>            Reporter: maggie
>            Priority: Major
>
> We encountered a {{RejectedExecutionException}} when invoking a RESTful web 
> service using CXF WebClient. The error appears to originate from 
> {{HTTPConduit}} when attempting to send an asynchronous request via Java's 
> {{{}HttpClient{}}}. The underlying {{ThreadPoolExecutor}} is in a terminated 
> state, causing the task to be rejected.
> This issue occurs intermittently under load and appears to be related to 
> CXF's use of {{CompletableFuture.completeAsync()}} and the lifecycle of the 
> internal executor.
>  
> The stack trace:
> ] PhaseInterceptorChain - Interceptor for \{https:// 
> xxx.abc.com:443}WebClient has thrown exception, unwinding now 
> java.util.concurrent.RejectedExecutionException: RejectedExecutionException 
> invoking https://xxx.abc.com:443/test: Task 
> java.util.concurrent.CompletableFuture$AsyncSupply@bbffb919 rejected from 
> java.util.concurrent.ThreadPoolExecutor@fb02c6e9[Terminated, pool size = 0, 
> active threads = 0, queued tasks = 0, completed tasks = 12387] at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>  Method) ~[?:?] at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
>  Source) ~[?:?] at 
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>  Source) ~[?:?] at 
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source) 
> ~[?:?] at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) 
> ~[?:?] at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1452)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1438)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HttpClientHTTPConduit$HttpClientWrappedOutputStream.close(HttpClientHTTPConduit.java:839)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.io.AbstractWrappedOutputStream.close(AbstractWrappedOutputStream.java:77)
>  ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.ext.logging.LoggingOutputStream.postClose(LoggingOutputStream.java:53)
>  ~[cxf-rt-features-logging-4.1.2.jar:4.1.2] at 
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:243) 
> ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
> ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:717) 
> ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HttpClientHTTPConduit.close(HttpClientHTTPConduit.java:264)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
>  ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>  ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:760)
>  ~[cxf-rt-rs-client-4.1.2.jar:4.1.2] at 
> org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1088)
>  ~[cxf-rt-rs-client-4.1.2.jar:4.1.2] at 
> org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:934) 
> ~[cxf-rt-rs-client-4.1.2.jar:4.1.2] at 
> org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:903) 
> ~[cxf-rt-rs-client-4.1.2.jar:4.1.2] at 
> org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:366) 
> ~[cxf-rt-rs-client-4.1.2.jar:4.1.2] at 
> org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeHttpClient(CxfRsProducer.java:339)
>  ~[camel-cxf-rest-4.10.6.jar:4.10.6] at 
> org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:103)
>  ~[camel-cxf-rest-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.SynchronousDelegateProducer.process(SynchronousDelegateProducer.java:48)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.processor.SendProcessor.sendUsingProducer(SendProcessor.java:252)
>  ~[camel-core-processor-4.10.6.jar:4.10.6] at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:157) 
> ~[camel-core-processor-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.processor.TryProcessor$TryState.run(TryProcessor.java:115) 
> ~[camel-core-processor-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.processor.Pipeline.process(Pipeline.java:163) 
> ~[camel-core-processor-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:102)
>  ~[camel-direct-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.SharedCamelInternalProcessor.processNonTransacted(SharedCamelInternalProcessor.java:156)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:133)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.cache.DefaultProducerCache.asyncDispatchExchange(DefaultProducerCache.java:320)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.cache.DefaultProducerCache.lambda$doAsyncSendExchange$0(DefaultProducerCache.java:217)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.cache.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:281)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.cache.DefaultProducerCache.doAsyncSendExchange(DefaultProducerCache.java:226)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.support.cache.DefaultProducerCache.asyncSendExchange(DefaultProducerCache.java:207)
>  ~[camel-support-4.10.6.jar:4.10.6] at 
> org.apache.camel.impl.engine.DefaultProducerTemplate.lambda$asyncSendExchange$3(DefaultProducerTemplate.java:745)
>  ~[camel-base-engine-4.10.6.jar:4.10.6] at 
> java.base/java.util.concurrent.FutureTask.run(Unknown Source) [?:?] at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
> [?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
> Source) [?:?] at java.base/java.lang.Thread.run(Unknown Source) [?:?] Caused 
> by: java.util.concurrent.RejectedExecutionException: Task 
> java.util.concurrent.CompletableFuture$AsyncSupply@bbffb919 rejected from 
> java.util.concurrent.ThreadPoolExecutor@fb02c6e9[Terminated, pool size = 0, 
> active threads = 0, queued tasks = 0, completed tasks = 12387] at 
> java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(Unknown
>  Source) ~[?:?] at 
> java.base/java.util.concurrent.ThreadPoolExecutor.reject(Unknown Source) 
> ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor.execute(Unknown 
> Source) ~[?:?] at 
> java.base/java.util.concurrent.CompletableFuture.completeAsync(Unknown 
> Source) ~[?:?] at 
> java.net.http/jdk.internal.net.http.MultiExchange.responseAsync(Unknown 
> Source) ~[java.net.http:?] at 
> java.net.http/jdk.internal.net.http.HttpClientImpl.sendAsync(Unknown Source) 
> ~[java.net.http:?] at 
> java.net.http/jdk.internal.net.http.HttpClientImpl.sendAsync(Unknown Source) 
> ~[java.net.http:?] at 
> java.net.http/jdk.internal.net.http.HttpClientImpl.sendAsync(Unknown Source) 
> ~[java.net.http:?] at 
> java.net.http/jdk.internal.net.http.HttpClientFacade.sendAsync(Unknown 
> Source) ~[java.net.http:?] at 
> org.apache.cxf.transport.http.HttpClientHTTPConduit$HttpClientWrappedOutputStream.setProtocolHeaders(HttpClientHTTPConduit.java:1040)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1373)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1353)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] at 
> org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:47)
>  ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
>  ~[cxf-core-4.1.2.jar:4.1.2] at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1405)
>  ~[cxf-rt-transports-http-4.1.2.jar:4.1.2] ... 44 more
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to