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...
### What problem does this PR solve? Issue Number: Problem Summary: 1. Multi模式下,插入数据发生hash冲突的时候,size没有加一。另一方面,插入数据不能自动扩容。 2. m1 = m2,m1扩容后m1._nbucket不等于m2._nbucket的时候,m1的_buckets上除了插入数据的位置,其他位置没有set_invalid,后续使用会出现内存问题。 3. 扩容时,_buckets和_thumbnail都是先释放再申请新的内存。如果申请失败了,FlatMap就完全不可用了。 ### What is changed and the side effects? Changed: 1. size++。另外,当FlatMap负载超过阈值,则遍历Bucket链表,当存在不同的key的时候,则扩容。否则,不扩容直接插入。因为key一样,扩容后这些数据还是在同一个链表上。...
### What problem does this PR solve? Issue Number: Problem Summary: tcp_connect被中断之后,返回结果是有问题的: 1. `bthread_timed_connect / bthread_connect`:`butex_wait`返回0,errno等于`EWOULDBLOCK`或者`EINTR`,最后tcp_connect返回一个未连接成功的socket fd。 2. `pthread_timed_connect `:返回-1,errno等于`EINTR`。 ### What is changed and the side effects? Changed: 当errno等于`EWOULDBLOCK`或者`EINTR`,`pthread_fd_wait...
**Is your feature request related to a problem? (你需要的功能是否与某个问题有关?)** It's a common practice to switch the backend server by changing DNS record. However, bRPC only resolve the name once when...
control 调用 signal_task 的时机是创建新任务的时候,通知阻塞的线程来任务了,但是如果实际上没有阻塞的线程,都在工作,是不是就浪费了这次通知呢,那么越繁忙的状态,调用浪费的就越多,进而影响性能呢。
**Describe the bug (描述bug)** 服务端的一次宕机后,客户端就一直因为检查检查失败导致rpc失败,报错 `[E112]Fail to select server from xxx`。在出问题的机器上可以看到连接处于CLOSE_WAIT状态。 **Versions (各种版本)** OS: ubuntu 20.04 Compiler: clang-8 brpc: 1.8.0 protobuf: 3.15.8 **Additional context/screenshots (更多上下文/截图)**
### What problem does this PR solve? Issue Number: #2635 Problem Summary: 当brpc server 下处理的应用执行时间较短(bthread生命周期短),且使用了bthread_local变量时,由于keytable 由bthread_keytable_pool_t中的一个全局链表维护,borrow_keytable、return_keytable时内部加互斥锁,导致锁成为瓶颈。  基于此,重新设计了bthread_keytable_pool_t: 新的bthread_keytable_pool_t结构体中,使用butil::ThreadLocal* list 保存TLS的KeyTable list。同时保留原有的free_keytables,不改变reserved_thread_local_data的语义,调用bthread_keytable_pool_reserve会在全局链表中预分配keytable.原有的互斥锁改为读写锁。 * borrow_keytable时优先从本地TLS链表中查找是否有可用的KeyTable,如果没有,且free_keytables不为NULL,再去从全局链表中加写锁获取keytable;如果都没有可用table,则返回NULL。 * return_keytable时只会将keytable插入TLS的KeyTable list中,由于是TLS变量,只有当bthread_keytable_pool_destroy才会产生竞争,所以只需要加写锁。 * bthread_keytable_pool_destroy时加写锁,首先delete butil::ThreadLocal*...
**Describe the bug (描述bug)** mbvar 的 prometheus 的上报格式如下: service_latency{valid="false"} 0 service_latency{valid="false",quantile="80"} 0 service_latency{valid="false",quantile="90"} 0 service_latency{valid="false",quantile="99"} 0 service_latency{valid="false",quantile="999"} 0 service_latency{valid="false",quantile="9999"} 0 service_max_latency{valid="false"} 0 service_qps{valid="false"} 0 service_count{valid="false"} 1 此时没办法通过:avg(service_latency{valid="false"}) 来获取平均耗时,因为 avg 会把所有...
目前公司想用brpc, starlight做c++, java的通信, 需要接入第三方分布式链路追踪组件 目前选型是美团的cat 想请教下 starlight, brpc该如何优雅的设置这三个变量 ps: 求一个最新的群二维码 请教一些关于brpc starlight的问题
**Describe the bug (描述bug)** 服务使用了brpc库,使用容器绑定cpu部署(numa感知)。服务启动后会报Program terminated with signal 11, Segmentation fault.。 **To Reproduce (复现方法)** 容器绑定cpu部署(numa感知),必现。 **Expected behavior (期望行为)** 容器绑定cpu部署(numa感知)服务正常运行。 **Versions (各种版本)** OS: 龙蜥os 7.9 Compiler: brpc: 1.2 protobuf: **Additional context/screenshots...
