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

liqiang.liu updated HTTPCLIENT-2256:
------------------------------------
    Description: 
builded the  CloseableHttpClient  via  the code 
{code:java}
private static final CloseableHttpClient HttpClient = bulidClient();
private static CloseableHttpClient bulidClient() {
HttpClientBuilder httpClientBuilder = 
HttpClients.custom().setMaxConnTotal(1000).setMaxConnPerRoute(1000);
httpClientBuilder.setDefaultRequestConfig(RequestConfig.custom().setConnectionRequestTimeout(2000).setConnectTimeout(3000).setSocketTimeout(4000).build());
httpClientBuilder.setDefaultSocketConfig(SocketConfig.custom().setSoLinger(0).setSoKeepAlive(false).setTcpNoDelay(true).setSoTimeout(4000).build());
httpClientBuilder.setDefaultConnectionConfig(ConnectionConfig.custom().setBufferSize(8192).build());
httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(2, false));
return httpClientBuilder.setConnectionManagerShared(true).build();
} {code}
The HttpClient becomes unavailable when a  java.lang.StackOverflowError  
occurs. Even if the jvm recovers.  I found out why:

class MainClientExec in the source code closes the connection pool when an 
StackOverflowError occurs, causing the client to fail to recover. 

 

!image-2023-01-11-20-25-17-784.png!

 

I expect it to keep working when something goes wrong

  was:
builded the  CloseableHttpClient  via  the code 

 

~private static final CloseableHttpClient HttpClient = bulidClient();~

~private static CloseableHttpClient bulidClient() {~
 ~HttpClientBuilder httpClientBuilder = 
HttpClients.custom().setMaxConnTotal(1000).setMaxConnPerRoute(1000);~
 
~httpClientBuilder.setDefaultRequestConfig(RequestConfig.custom().setConnectionRequestTimeout(2000).setConnectTimeout(3000).setSocketTimeout(4000).build());~
 
~httpClientBuilder.setDefaultSocketConfig(SocketConfig.custom().setSoLinger(0).setSoKeepAlive(false).setTcpNoDelay(true).setSoTimeout(4000).build());~
 
~httpClientBuilder.setDefaultConnectionConfig(ConnectionConfig.custom().setBufferSize(8192).build());~
 ~httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(2, 
false));~
 ~return httpClientBuilder.setConnectionManagerShared(true).build();~
~}~

 

The HttpClient becomes unavailable when a  java.lang.StackOverflowError  
occurs. Even if the jvm recovers.  I found out why:

class MainClientExec in the source code closes the connection pool when an 
StackOverflowError occurs, causing the client to fail to recover. 

 

!image-2023-01-11-20-25-17-784.png!

 

I expect it to keep working when something goes wrong


> The CloseableHttpClient is shut down due to an java.lang.StackOverflowError 
> exception
> -------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-2256
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2256
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (classic)
>    Affects Versions: 4.5.13
>            Reporter: liqiang.liu
>            Priority: Major
>         Attachments: image-2023-01-11-20-25-17-784.png
>
>
> builded the  CloseableHttpClient  via  the code 
> {code:java}
> private static final CloseableHttpClient HttpClient = bulidClient();
> private static CloseableHttpClient bulidClient() {
> HttpClientBuilder httpClientBuilder = 
> HttpClients.custom().setMaxConnTotal(1000).setMaxConnPerRoute(1000);
> httpClientBuilder.setDefaultRequestConfig(RequestConfig.custom().setConnectionRequestTimeout(2000).setConnectTimeout(3000).setSocketTimeout(4000).build());
> httpClientBuilder.setDefaultSocketConfig(SocketConfig.custom().setSoLinger(0).setSoKeepAlive(false).setTcpNoDelay(true).setSoTimeout(4000).build());
> httpClientBuilder.setDefaultConnectionConfig(ConnectionConfig.custom().setBufferSize(8192).build());
> httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(2, 
> false));
> return httpClientBuilder.setConnectionManagerShared(true).build();
> } {code}
> The HttpClient becomes unavailable when a  java.lang.StackOverflowError  
> occurs. Even if the jvm recovers.  I found out why:
> class MainClientExec in the source code closes the connection pool when an 
> StackOverflowError occurs, causing the client to fail to recover. 
>  
> !image-2023-01-11-20-25-17-784.png!
>  
> I expect it to keep working when something goes wrong



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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to