Open GreateCode opened 4 days ago
@chenBright @wwbmmm 大佬~
@jamesge
StreamWrite没有返回网络错误,一直返回EAGAIN的话,应该是client挂了,但是server并没有感知到tcp连接断开,发送的数据没有收到client的ack,随后写不进去内核缓冲区后,就一直返回EAGAIN。
有道理,这样的话,一定时期内都是EAGAIN,while里就可以判定连接断开,然后return结束,避免hang在这里。 但是server的连接资源怎么释放?如果sever配置了ServerOptions.idle_timeout_sec=100, 那么超过100s后,server会把该连接释放吗?
Describe the bug (描述bug) server给client端发送几十个G的数据,期间client挂。 StreamWait的due_time设置的是100ms(是错的,应该是时间点),但也不应该卡住吧。 client挂和StreamWait卡住先后顺序不确定。 栈信息如图,请大佬帮忙看看是什么原因。
To Reproduce (复现方法) 极难复现。
Expected behavior (期望行为)
Versions (各种版本) OS:ubuntu 20.04 Compiler:clang brpc: 1.8.0 protobuf:3.15
Additional context/screenshots (更多上下文/截图)