brpc服务端下电一个节点,brpc客户端并没有重新选择链接,持续上报EPOLLOUT错误,连接超时。
Describe the bug
出现问题的场景:brpc服务端下电一个节点,brpc客户端并没有重新选择链接,持续上报EPOLLOUT错误,连接超时。
待brpc服务端重新上电后,客户端连接恢复。
To Reproduce 目前只遇到过一次
Expected behavior 期望brpc重新发起socket连接,并且连接成功,而不是一直等待原节点。
Versions OS:ubuntu Compiler:g++ brpc:1.9 protobuf:
Additional context/screenshots
socket只有会健康检查成功后才能继续使用,否则该socket不会被使用的,即会选择其他节点发起RPC。
第一张图是健康检查时连接超时的日志,并不是发起RPC的。
但事实上,对应节点都下电了,一直上报下电节点健康检查失败(超时),没有选择其他节点发起rpc
Controller::ErrorText有信息显示这个情况吗?
健康检查是在独立的bthread做的,健康检查检查失败日志不代表使用该节点发起RPC。
Channel::Init的时候用的是单节点还是服务名?
用的单节点,但是会循环尝试各个节点,进行初始化。
单节点Channel,RPC只有一个节点选择。