[
https://issues.apache.org/jira/browse/CXF-8902?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andriy Redko closed CXF-8902.
-----------------------------
Resolution: Duplicate
> Resource Leak at HttpClientHTTPConduit leads to OutOfMemoryError
> ----------------------------------------------------------------
>
> Key: CXF-8902
> URL: https://issues.apache.org/jira/browse/CXF-8902
> Project: CXF
> Issue Type: Bug
> Components: Services
> Affects Versions: 4.0.2
> Environment: Windows 10
> openjdk version "17.0.5" 2022-10-18
> OpenJDK Runtime Environment JBR-17.0.5+1-653.14-jcef (build 17.0.5+1-b653.14)
> OpenJDK 64-Bit Server VM JBR-17.0.5+1-653.14-jcef (build 17.0.5+1-b653.14,
> mixed mode)
> Debian
> openjdk version "17.0.2" 2022-01-18
> OpenJDK Runtime Environment (build 17.0.2+8-86)
> OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
> Reporter: Christian Habermehl
> Priority: Major
>
> Hello,
> I use the [BingAds SDK|https://github.com/BingAds/BingAds-Java-SDK]. This SDK
> uses CXF to communicate with the Bing servers. After they upgraded CXF from
> 3.4.2 to 4.0.2 I run into OutOfMemoryErrors that actually are
> OutOfThreadsErrors:
> {{java.lang.OutOfMemoryError: unable to create native thread: possibly out of
> memory or process/resource limits reached}}
> The reason for the error is, that HttpClientHTTPConduit sets up a
> HttpClientImpl for each service call:
> {code:java}
> at
> jdk.internal.net.http.HttpClientImpl$SelectorManager.<init>(HttpClientImpl.java:715)
> at jdk.internal.net.http.HttpClientImpl.<init>(HttpClientImpl.java:325)
> at jdk.internal.net.http.HttpClientImpl.create(HttpClientImpl.java:270)
> at
> jdk.internal.net.http.HttpClientBuilderImpl.build(HttpClientBuilderImpl.java:135)
> at
> org.apache.cxf.transport.http.HttpClientHTTPConduit.setupConnection(HttpClientHTTPConduit.java:231)
> at
> org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:529)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:47)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:528)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:439)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:354)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:312)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
> at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
> at jdk.proxy2.$Proxy100.getAccount(Unknown Source:-1)
> {code}
> Each time a HttpClientImpl is build, a HttpClientImpl$SelectorManager thread
> is created. in my case this led to more than 6000 threads and in the end to
> the OutOfMemoryError.
> Could you please either return URLConnectionHTTPConduit by default in
> HTTPTransportFactory#getConduit or try to re-use the HttpClient or shut the
> client down when it's not used anymore?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)