brpc
brpc copied to clipboard
brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means...
如果设置了nosignal模式,某个taskgroup类的实例这时处于waittask状态。 这是突然有外部调用了push_rq给taskgroup类中本地队列_rq添加了一个任务,请问这时是什么机制会将taskgroup类从waittask状态唤醒,还是说会一直阻塞在waittask状态?
### What problem does this PR solve? Issue Number: Problem Summary: rdma block pool runtime ExtendBlockPool has some error: 1. a region may has many buckets, extend a region not...
### What problem does this PR solve? Part: #2904 Problem Summary: - BUILD.bazel 只编译了极少数 brpc 单元测试; - 直接 glob(["brpc_*_unittest.cpp"]) 会把多个含 int main() 的源文件链接进同一可执行文件,引发 duplicate symbol: main,导致其余测试无法构建。 - CMake 已覆盖全部 UT。为了让两套构建结果一致,需要在...
**Describe the bug** 服务端开启鉴权后,如果客户端通过grpc协议鉴权失败,返回体是HTTP1.0格式的,客户端无法解析,导致客户端一直夯死,无法解析出正确的错误码。 **To Reproduce** brpc服务端加入 options.auth=&auth后,直接通过postman的grpc接口访问即可复现  **Expected behavior** 期望客户端在服务端返回鉴权失败时能正常解析鉴权失败的错误码,而不是一直处于夯死状态直到超时 **Versions** 1.12.0 **Additional context/screenshots**
性能问题
**brpc-1.13.0 protoc 3.21.12** ### 使用echo_server进行测试 `./echo_server -minloglevel=4` 使用rpc_press进行压测 **1. 单连接模式测试:** ` ./rpc_press -proto="./echo.proto" -method=example.EchoService.Echo -server=192.168.100.4:8000 -input=.'{"message":"hello"} {"message":"world"}' -qps=0 -timeout_ms=3000 -thread_num=512`  **`QPS 45W+`** **2. 连接池模式测试:** `./rpc_press -proto="./echo.proto" -method=example.EchoService.Echo -server=192.168.100.4:8000 -input=.'{"message":"hello"}...
注意到,目前使用的BUILD.bazel文件中有这样一条宏定义 https://github.com/apache/brpc/blob/master/BUILD.bazel#L25 ``` -D__const__=__unused__ ``` 相关背景可以在issue:https://github.com/apache/brpc/issues/1693 与文档:https://github.com/apache/brpc/blob/master/docs/cn/thread_local.md#gcc4%E4%B8%8B%E7%9A%84errno%E9%97%AE%E9%A2%98 中找到介绍。 总结来说就是 > 务必在直接或间接使用bthread的项目的gcc编译选项中添加-D__const__=__unused__,即把__const__定义为一个无副作用的属性,避免gcc4做相关优化。 对于cmake来说,这个可能不好由brpc仓库进行实现。但对bazel来说,我们有办法由brpc仓库进行这个操作。 具体来说,bazel的cc_library提供一个参数defines, 用于给依赖(或者间接依赖)该目标的目标,添加宏定义。具体的,官方文档为: https://bazel.build/reference/be/c-cpp#cc_library 因此,brpc这边是否考虑,给bthread这个cc_library,直接添加这个宏定义呢
如下代码,使用json2pb将pb转为json,当遇到oneof时输出json与protobuf不一致 ```c++ #include #include #include "test.pb.h" /* * test.proto * syntax = "proto3"; message Test{ oneof OneOf{ string a = 1; string b = 2; string c = 3; }...
**Is your feature request related to a problem?** 官方文档目前只有cmake和config_brpc.sh的步骤 **Describe the solution you'd like** 建议增加bazel的编译介绍,或者描述通用的编译步骤方便开发者理解。 **Describe alternatives you've considered** 开发者真正的理解之后可以自行编写适合自己的编译流程。 **Additional context/screenshots**
**Describe the bug** 编译rdma提示fatal error: infiniband/verbs.h: No such file or directory **To Reproduce** **Expected behavior** 这种rdma底层的依赖,建议源码clone下来编译还是yum install 安装? **Versions** OS: Compiler: brpc: protobuf: **Additional context/screenshots**
[https://brpc.apache.org/zh/docs/benchmark/](url) 1. 在benchmark中提到的性能基准测试是基于哪个版本测试得到的啊? 2. 这个性能测试是同步模式还是异步模式测得的啊?