-
Notifications
You must be signed in to change notification settings - Fork 4k
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
brpc::Channel::CallMethod阻塞,不超时 #1507
Comments
3个堆栈的顶部,我已经使用内存检测工具排除了模块内存破坏的可能。 (gdb) bthread_frame 1 (gdb) bthread_frame 2 Thread 27 (Thread 0x7f0151e30700 (LWP 26847)): (gdb) bthread_list 共6个 |
@datatechboost hi请问这个问题后续有结论吗,我这边遇到了同样的问题 |
timer 回调里是不能执行CallMethod,这样会把timer thread阻塞,然后超时也就失效了。 |
Describe the bug (描述bug)
模块a 3个rpc调用阻塞,这3个rpc都是对模块b的调用,共涉及模块b的两个方法。
channel初始化时option为null, rpc调用时 brpc::Controller上set_timeout_ms了。
3个rpc调用中的2个是在协程中进行的,另1个是在timer线程(pthread)调用的。
补充:brpc::channel的init是加了锁的。
To Reproduce (复现方法)
让模块b死锁,模块a发起3个模块b的rpc。
Expected behavior (期望行为)
3个rpc超时返回。
Versions (各种版本)
OS:CentOS Linux release 7.8.2003 (Core)
Compiler: gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
brpc:0.9.0
protobuf:3.0.0
Additional context/screenshots (更多上下文/截图)
The text was updated successfully, but these errors were encountered: