[jira] [Updated] (HTTPCORE-521) PoolingHttpClientConnectionManager issue

2018-04-08 Thread Hoover He (JIRA)

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

Hoover He updated HTTPCORE-521:
---
Affects Version/s: 4.4.9
  Component/s: HttpCore NIO
   HttpCore

> PoolingHttpClientConnectionManager issue
> 
>
> Key: HTTPCORE-521
> URL: https://issues.apache.org/jira/browse/HTTPCORE-521
> Project: HttpComponents HttpCore
>  Issue Type: Bug
>  Components: HttpCore, HttpCore NIO
>Affects Versions: 4.4.9
>Reporter: Hoover He
>Priority: Major
>
> one issue in production env: our company is using zuul as gateway without 
> Spring Cloud other components. The versions are following: zuul-core 1.3.0, 
> httpcore 4.4.9, httpclient 4.5.5, centos 6.5.
> Before we used httpclient 4.5.2 and httpcore 4.4.6, and we found the bug 
> fixed by apache :https://issues.apache.org/jira/browse/HTTPCORE-446, so we 
> updated into httpcore 4.4.9, httpclient 4.5.5. But the following same issue 
> still happened.
> In our project, we kept all of the source codes of SimpleHostRoutingFilter, 
> used Http11NioProtocol, the codes are following:
> class GkTomcatConnectorCustomizer implements TomcatConnectorCustomizer {
> public void customize(Connector connector) {
> Http11NioProtocol protocol = (Http11NioProtocol) 
> connector.getProtocolHandler();
> protocol.setProcessorCache(4000);
> protocol.setMaxConnections(4000);
> protocol.setMaxThreads(5000);
> protocol.setMinSpareThreads(100);
> protocol.setConnectionTimeout(60*1000);
> }
> }
> The thread dump is following.
> "http-nio-8080-exec-4001" #19245 daemon prio=5 os_prio=0 
> tid=0x7f4e1d01d800 nid=0x7ec2 waiting on condition [0x7f4ccda58000]
> java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x000641546340> (a 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
> at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
> at 
> org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:380)
> at org.apache.http.pool.AbstractConnPool.access$200(AbstractConnPool.java:69)
> at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:246)
> - locked <0x0007a2deeea8> (a org.apache.http.pool.AbstractConnPool$2)
> at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:193)
> at 
> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:303)
> at 
> org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:279)
> at 
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:191)
> at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
> at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
> at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
> at 
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
> at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118)
> at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
> at 
> com.mobanker.gateway.filter.route.SimpleHostRoutingFilterCustom.forwardRequest(SimpleHostRoutingFilterCustom.java:495)
> at 
> com.mobanker.gateway.filter.route.SimpleHostRoutingFilterCustom.forward(SimpleHostRoutingFilterCustom.java:383)
> at 
> com.mobanker.gateway.filter.route.SimpleHostRoutingFilterCustom.run(SimpleHostRoutingFilterCustom.java:219)
> at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:112)
> at 
> com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193)
> at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157)
> at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:118)
> at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:96)
> at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:116)
> at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:81)
> at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
> at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
> at 
> org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
> at 
> 

[jira] [Created] (HTTPCORE-521) PoolingHttpClientConnectionManager issue

2018-04-08 Thread Hoover He (JIRA)
Hoover He created HTTPCORE-521:
--

 Summary: PoolingHttpClientConnectionManager issue
 Key: HTTPCORE-521
 URL: https://issues.apache.org/jira/browse/HTTPCORE-521
 Project: HttpComponents HttpCore
  Issue Type: Bug
Reporter: Hoover He


one issue in production env: our company is using zuul as gateway without 
Spring Cloud other components. The versions are following: zuul-core 1.3.0, 
httpcore 4.4.9, httpclient 4.5.5, centos 6.5.

Before we used httpclient 4.5.2 and httpcore 4.4.6, and we found the bug fixed 
by apache :https://issues.apache.org/jira/browse/HTTPCORE-446, so we updated 
into httpcore 4.4.9, httpclient 4.5.5. But the following same issue still 
happened.

In our project, we kept all of the source codes of SimpleHostRoutingFilter, 
used Http11NioProtocol, the codes are following:
class GkTomcatConnectorCustomizer implements TomcatConnectorCustomizer {
public void customize(Connector connector) {
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
protocol.setProcessorCache(4000);
protocol.setMaxConnections(4000);
protocol.setMaxThreads(5000);
protocol.setMinSpareThreads(100);
protocol.setConnectionTimeout(60*1000);
}
}

The thread dump is following.
"http-nio-8080-exec-4001" #19245 daemon prio=5 os_prio=0 tid=0x7f4e1d01d800 
nid=0x7ec2 waiting on condition [0x7f4ccda58000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000641546340> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at 
org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:380)
at org.apache.http.pool.AbstractConnPool.access$200(AbstractConnPool.java:69)
at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:246)
- locked <0x0007a2deeea8> (a org.apache.http.pool.AbstractConnPool$2)
at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:193)
at 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:303)
at 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:279)
at 
org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:191)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at 
org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118)
at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
at 
com.mobanker.gateway.filter.route.SimpleHostRoutingFilterCustom.forwardRequest(SimpleHostRoutingFilterCustom.java:495)
at 
com.mobanker.gateway.filter.route.SimpleHostRoutingFilterCustom.forward(SimpleHostRoutingFilterCustom.java:383)
at 
com.mobanker.gateway.filter.route.SimpleHostRoutingFilterCustom.run(SimpleHostRoutingFilterCustom.java:219)
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:112)
at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193)
at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157)
at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:118)
at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:96)
at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:116)
at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:81)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at 
org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at 
org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:108)
at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at