Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

org.apache.httpcomponents 坐标版本太高引发大量异常 #3314

Closed
MrLiuFang opened this issue Jul 14, 2020 · 3 comments
Closed

org.apache.httpcomponents 坐标版本太高引发大量异常 #3314

MrLiuFang opened this issue Jul 14, 2020 · 3 comments
Assignees
Labels
area/Spring Boot Related to Spring Boot area/Spring Cloud Related to Spring Cloud kind/bug Category issues or prs related to bug.
Milestone

Comments

@MrLiuFang
Copy link

MrLiuFang commented Jul 14, 2020

Issue Description

项目maven引用

          <dependency>
               <groupId>com.alibaba.nacos</groupId>
               <artifactId>nacos-client</artifactId>
               <version>1.3.1</version>
           </dependency>
           <dependency>
               <groupId>com.alibaba.nacos</groupId>
               <artifactId>nacos-api</artifactId>
               <version>1.3.1</version>
           </dependency>
           <dependency>
               <groupId>com.alibaba.nacos</groupId>
               <artifactId>nacos-common</artifactId>
               <version>1.3.1</version>
           </dependency>

官方在nacos-common默认使用

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpasyncclient</artifactId>
                <version>4.1.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore-nio</artifactId>
                <version>4.4.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.3</version>
            </dependency>

如果将上述httpasyncclient , httpcore,httpcore-nio,httpclient等版本升级为高版本/最新版会导致大量http request异常

目前我因使用最新版的spring boot&cloud,还有其它最新的框架如:sentinel,seata 使其上述相关maven dependency版本升级为目前的 httpasyncclient:4.1.4, httpcore:4.4.13,httpcore-nio:4.4.13,httpclient:4.5.12

2020-07-14 10:01:48.566 ERROR 21434 --- [.naming.updater] com.alibaba.nacos.client.naming          : [NA] failed to request

java.lang.NullPointerException: null
	at org.apache.http.message.HeaderGroup.updateHeader(HeaderGroup.java:112) ~[httpcore-4.4.6.jar:4.4.6]
	at org.apache.http.message.AbstractHttpMessage.setHeader(AbstractHttpMessage.java:117) ~[httpcore-4.4.6.jar:4.4.6]
	at com.alibaba.nacos.common.http.BaseHttpMethod.initHeader(BaseHttpMethod.java:165) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.DefaultHttpClientRequest.build(DefaultHttpClientRequest.java:65) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.DefaultHttpClientRequest.execute(DefaultHttpClientRequest.java:53) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:330) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.exchangeForm(NacosRestTemplate.java:319) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:599) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:524) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:491) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:486) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.queryList(NamingProxy.java:400) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor.updateServiceNow(HostReactor.java:330) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor$UpdateTask.run(HostReactor.java:397) [nacos-client-1.3.1.jar:na]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_231]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_231]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_231]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_231]

2020-07-14 10:16:26.265 ERROR 24258 --- [.naming.updater] com.alibaba.nacos.client.naming          : [NA] failed to request

org.apache.http.impl.execchain.RequestAbortedException: Request execution failed
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:199) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.12.jar:4.5.12]
	at com.alibaba.nacos.common.http.client.DefaultHttpClientRequest.execute(DefaultHttpClientRequest.java:54) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:330) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.exchangeForm(NacosRestTemplate.java:319) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:599) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:524) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:491) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:486) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.queryList(NamingProxy.java:400) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor.updateServiceNow(HostReactor.java:330) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor$UpdateTask.run(HostReactor.java:397) [nacos-client-1.3.1.jar:na]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_231]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_231]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_231]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_231]
Caused by: java.util.concurrent.CancellationException: Operation aborted
	at org.apache.http.pool.AbstractConnPool.operationAborted(AbstractConnPool.java:182) ~[httpcore-4.4.13.jar:4.4.13]
	at org.apache.http.pool.AbstractConnPool.access$200(AbstractConnPool.java:70) ~[httpcore-4.4.13.jar:4.4.13]
	at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:251) ~[httpcore-4.4.13.jar:4.4.13]
	at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:198) ~[httpcore-4.4.13.jar:4.4.13]
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:306) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:282) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190) ~[httpclient-4.5.12.jar:4.5.12]
	... 24 common frames omitted

2020-07-14 10:16:29.271 ERROR 24258 --- [.naming.updater] com.alibaba.nacos.client.naming          : [NA] failed to request

java.io.InterruptedIOException: Connection has been shut down
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:342) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.12.jar:4.5.12]
	at com.alibaba.nacos.common.http.client.DefaultHttpClientRequest.execute(DefaultHttpClientRequest.java:54) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:330) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.common.http.client.NacosRestTemplate.exchangeForm(NacosRestTemplate.java:319) ~[nacos-common-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:599) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:524) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:491) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:486) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.net.NamingProxy.queryList(NamingProxy.java:400) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor.updateServiceNow(HostReactor.java:330) [nacos-client-1.3.1.jar:na]
	at com.alibaba.nacos.client.naming.core.HostReactor$UpdateTask.run(HostReactor.java:397) [nacos-client-1.3.1.jar:na]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_231]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_231]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_231]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_231]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_231]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_231]
Caused by: org.apache.http.impl.conn.ConnectionShutdownException: null
	at org.apache.http.impl.conn.CPoolProxy.getPoolEntry(CPoolProxy.java:242) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:367) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.12.jar:4.5.12]
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.12.jar:4.5.12]
	... 24 common frames omitted

Describe what you expected to happen

升级nacos.client对相关依赖包的升级,以避免上述问题

Tell us your environment

spring-boot-starter-parent ---- 2.3.1.RELEASE
spring-cloud-dependencies ---- Hoxton.SR6
spring-cloud-alibaba-dependencies ---- 2.2.1.RELEASE
seata ---- 1.2.0
nacos ---- 1.3.1
sentinel ---- 2.2.1.RELEASE

Thank you very much!

@KomachiSion
Copy link
Collaborator

Can you exclude these http dependency from nacos-common and retry?

@MrLiuFang
Copy link
Author

Can you exclude these http dependency from nacos-common and retry?

经过用spring-boot,spring-cloud多种版本的组合测试无法与nacos1.3.1正常工作(重复出现上述问题), nacos-common 中的org.apache.httpcomponents 相关包排除也一样会出现上述问题。目前我用nacos1.1.4版本整合正常。

@KomachiSion KomachiSion added area/Spring Boot Related to Spring Boot area/Spring Cloud Related to Spring Cloud kind/research kind/bug Category issues or prs related to bug. and removed status/need feedback labels Jul 17, 2020
@Maijh97
Copy link
Collaborator

Maijh97 commented Jul 22, 2020

This issue can be assigned to me. I will follow up. @KomachiSion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/Spring Boot Related to Spring Boot area/Spring Cloud Related to Spring Cloud kind/bug Category issues or prs related to bug.
Projects
None yet
Development

No branches or pull requests

4 participants