[ 
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)

Reply via email to