记录一个使用HttpClient过程中的一个bug

最近用HttpClient进行链接请求,开了多线程之后发现经常有线程hang住,查看线程dump

java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:170)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139)
    at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155)
    at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284)
    at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
    at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
    at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165)
    at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167)
    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:220)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:139)

一直就停留在java.net.SocketInputStream.socketRead0 这个Native方法,单步调试了之后发现timeout参数也传入了,后来在网上搜索发现这个是jdk一个bug

https://stackoverflow.com/questions/25968769/got-stuck-at-java-net-socketinputstream-socketread0native-method

https://bugs.openjdk.java.net/browse/JDK-8075484

我用的是8u111貌似不在修复列表,下了8u144

时间: 2024-10-08 02:33:49

记录一个使用HttpClient过程中的一个bug的相关文章

struts2的validate在使用过程中的一个问题

在项目中有一个新增客户信息的的功能: 1.在进入添加页面:add.jsp页面之前,要调用一个add_init.do来获取省份信息列表以供在add.jsp进行选择. 2.add页面填写完成以后,提交给addCustomer.do来进行数据库的操作, 在提交之前,要进行一次表单验证,用了STRUTS2的validation. <!-- 客户添加初始化 --> <action name="customer_init" class="cn.rf.hz.parkass

Jenkins. 安装过程中出现一个错误: No such plugin: cloudbees-folder

安装过程中出现一个错误: No such plugin: cloudbees-folder 安装插件,有时候会报类似的错误:An error occurred during installation: No such plugin: cloudbees-folder 上面的错误显示是,安装插件cloudbees-folder失败,是因为下载的Jenkins.war里没有cloudbees-folder插件 需要在网上下载:http://ftp.icm.edu.pl/packages/jenkin

ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据

ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_data zmq_msg_init_data(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据 Synopsis typedef void (zmq_free_fn) (void *data, void *hint); int zmq_msg_init_data (zmq_msg_t *m

[JavaScript]记录完成轮播过程中的几个点

记录几个坑 之前的轮播: 完整代码:GitHub 效果预览:GitHub 最近完成的轮播: 完整代码:GitHub 效果预览:GitHub 在完成轮播中解决两个问题: 1.setInterval()会和按钮绑定的事件发生冲突. 表现为:setInterval()设置了每3S轮播一次,在没有任何动作干扰的情况下,轮播正常:但是当需要点击按钮跳转到其他图片时,从点击按钮到图片跳转成功的这段时间,假设是1S,也会计算到setInterval()设定的时间中:即从A1到A2需要3S,在A1到A2的过程中

AndroidStudio使用过程中遇到的bug

1. Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.

记一个在训练模型过程中自己给自己挖的坑

根据一个图像拼接和融合的需求,训练一个模型,输入为一组图像,输出为一张图像,输入数据和ground truth的像素值都归一化到[-1, 1] 我当时使用了UNet结构,卷积和反卷积都单独封装了一个函数,方便调用,在函数内部,卷积都会默认接一relu激活层 训练结果出来后,发现内容基本都能和ground truth对应上,但是颜色很怪异,特别接近灰色,如下 然后寻找原因许久未果,陷入纠结.第二天开始思考修改网络,猛然发现,我希望最后一层的输出为[-1, 1],但最后一层卷积默认接了relu激活层

oracle last_value使用过程中的一个细节

测试结果集:select role_id,update_date from user_info where role_id='6505007898843021313' 使用last_value求出当前role_id的最大的update_date.select role_id,last_value(update_date)over(partition by role_id order by update_date) from user_info where role_id='65050078988

fpga加法进位链实现过程中的一个特点

altera fpga 用quartus综合后会出现加法进位链一正一反的情况,所谓一正一反指的是假设某一级输入为a,b,进位值为c,则该级进位链逻辑应该为cout=ab+ac+bc,但实际为 cout=b'c'+a'c'+a'b'之后一级的进位链为cout=ab+ac'+bc'.那么假设前后两级都有进位,那么第一级的进位输出cout就是0,第二级的进位输出就是1,将进位链扩展并且所有进位链都有进位,那么就会出现进位链输出为0,1,0,1,0,1,0,1,这样无限循环下去,如果所有进位链都无进位,

记一个VS连接过程中找不到cpp的解决方法

在新增几个qt页面时,发现原来没动的几个cpp 连接报错了,错误均是qt的相关文件找不到 应该是moc文件没有生产或者没有被包含进工程.我想着既然我没动,应该不会是moc的原因,就在其他方向解决了很久也没解决 然后在vs文件管理器搜相关moc文件,缺失没有,这就很奇怪了. 我的方法是,用记事本格式打开工程的.vcxproj文件,跟之前的一对比.发现缺失有几个cpp的命令行被改掉了.这个如果用vs的可视化界面,很难直观的看到哪个变动了 于是把这几个cpp文件删除再添加,就可以了 原文地址:http