pavel2003 commented on issue #2847: URL: https://github.com/apache/brpc/issues/2847#issuecomment-2547426710
分析了流程,应该是我们使用的有点问题 为了流控,我们在stream的on_recevie函数中做了事件等待,由于故意手动的sleep导致on_recevie的队列满了后,会等待着 此时重启server后,client端会收到socket断链的时间,reset所有stream 但是reset stream是通过调用Stream::BeforeRecycle ---> execution_queue_stop 由于Stream::Consume需要被调用才能处理stop事件,清理底层的socket,由于之前的Consume还阻塞在流控对应的事件中,而对应的事件由于故意的sleep导致无法触发,就陷入死锁了 这种有没有好的办法呢? 1)需要做流控 2)一个stream的处理逻辑中可能会卡死(处理时间非常长的情况) 3)此时重启机器 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For additional commands, e-mail: dev-h...@brpc.apache.org