Releases: apache/brpc
Releases Β· apache/brpc
Apache bRPC 1.10.0
Feature:
- Support connect on socket create (#2574) by @chenBright
- Support more meta for ServerNode (#2603) by @chenBright
- Support proxy and generic call of baidu protocol (#2629) by @chenBright
- Support thread local object iteration (#2632) by @chenBright
- Support half open state in circuit breaker (#2634) @jiangyt-git
Bugfix:
- Fix IOBuf profiler rate (#2601) by @chenBright
- Fix incorrect core file found in run_tests.sh (#2614) by @chenBright
- Fix FlatMap assign operator bug (#2622) by @chenBright
- Fix GetProgramName not contains absolute path from cmdline (#2644) by @ehds
- Fix invalid headers of multiple cookie and set-cookie (#2577) by @chenBright
- Fix max concurrency of thrift protocol and nshead protocol (#2613) by @chenBright
- fixbug: there is a ',' before 'quantile=' when labels is empty (#2659) @renzhong
- fix h2 rpc_dump mem leak bug (#2661) by @GreateCode
- socket: fix potential double close (#2663) by @BusyJay
- Fix uninitialized local side of Socket (#2672) by @chenBright
- Fix bug: switch between stream_rpc and baidu_std (#2678) by @howarle
- Fix multi FlatMap scale and size (#2669) by @chenBright
Enhancement:
- add check for tag range (#2607) by @yanglimingcn
- bthread set concurrency by tag (#2628) by @yanglimingcn
- Support SCOPE_EXIT macro (#2643) by @chenBright
- Opt performance of async log (#2602) by @chenBright
- Restrict BRPC_VALIDATE_GFLAG to global scope and namespace scope only
(#2625) by @chenBright - Fix comparison warning in http2_rpc_protocol.cpp (#2626) by @imdouyu
- Add virtual destructors to MongoServiceAdaptor and SpanFilter (#2651) by @yozhao
- EventDispatcher supports various IO types (#2560) by @chenBright
- Support FastPthreadMutex contention profiler && expose FastPthreadMutex to user (#2589) by @chenBright
- Reject http request without host (#2600) by @chenBright
- Support remove old rpcz directory before open (#2610) by @yanglimingcn
- Add latency scale factor (#2655) by @superhail
- Add debug log for Socket health check (#2673) by @chenBright
- Use butil::ThreadLocal to store keytable (#2645) by @MJY-HUST
Others:
- Fix ci (#2611) by @chenBright
- Update protobuf version in doc (#2618) by @chenBright
bRPC 1.9.0
Feature:
- Support gc for ListOfABAFreeId (#2479) by @stdpain
- Support timed connect for both bthread and pthread (#2524) by @chenBright
- Support bthread_once and bthread singleton (#2520) by @chenBright
- Support span for new bthread (#2519) by @yanglimingcn
- Support Protobuf 22 (#2546) by @wasphin
- Support compatible with cmake < 3.7 by @wasphin
- Support bthread primitive cross different worker pools (#2551) by @yanglimingcn
- Support on_failed callback for streaming rpc (#2565) by @chenBright
Bugfix:
- Fix gflags bthread_concurrency_by_tag validate failed (#2543) by @yanbinyang
- Fix test/iobuf mismatch deallocation by @BusyJay
- Fix MPSCQueue memory not released with DefaultAllocator (#2553)Β by @legionxiong
- Fix using butex in return keytable (#2558) by @MJY-HUST
- Fix cancel callback may be called twice (#2557) by @chenBright
- Fix random value of CachedReader at first time (#2556) by @chenBright
- Fix ELEMENTS_PER_BLOCK may be incorrect (#2562) by @shanhe72101
- Fix compile with protobuf 22-25. (#2576) by @ketor
- Fix rpc_channel_connection_count by @yyweii
Enhancement:
- Support ignore eovercrowded for streaming control frame by @chenBright
- Support bthread id for log (#2570) by @chenBright
- Support IOBuf Profiler (#2497) by @chenBright
- Support shutdown write and notify for success write (#2547)Β by @chenBright
- Add UT of ScopeGuard (#2569) by @chenBright
- Get gcc version by script to support cross-compile (#2567)Β by @wasphin
- Use sync log for crash fatal log by @chenBright
- Install gdb for linux ci (#2587) by @chenBright
- Do not link abseil interface targets (#2592) by @wasphin
Other:
- Update documents and comments by @omahs, @Divyansh200102, @YinZheng-Sun
bRPC 1.8.0
Feature:
- Support multi bthread worker group with tag (#2358) (#2476) by @yanglimingcn
- Support user callback after sending response before request/response object destruction (#2328) by @yockie
- Support url safe base64 (#2337) by @chenBright
- Support loongarch64 (#2364) by @zhaixiaojuan
- Support compile with boringssl (#2399) by @ehds
- Support user fields of baidu protocol (#2406) by @chenBright
- Support client ALPN (#2251) by @Menci
- Support c++20 coroutine (#2121) by @wwbmmm
- Support grpc health check (#2493) by @jiangyt-git
- Support A Multiple Producer, Single Consumer Queue (#2492) by @chenBright
- Support async logging (#2413) by @chenBright
- Support memory builtin service (#2505) by @chenBright
Bugfix:
- Fix compile on ubuntu18.04 (#2422) by @Simonhancrew
- Fix huge rdma_recv_block_type no effect issue (#2326) by @legionxiong
- Fix h2 protocol abnormal case when SETTINGS_HEADER_TABLE_SIZE set to zero (#2373) by @982945902
- Fix mbvar convert prometheus metrics format issue (#2235) by @rock-git
- Fix bthread_usleep return code when schedule timer failed (#2435) (#2511) by @chenBright
- Fix stream write in background not work (#2440) by @chenBright
- Fix http verbose memory leak (#2429) by @chenBright
- Fix window update threshold (#2418) by @jiangyt-git
- Fix brpc/details/http_message.h compilation in CentOS8 (#2474) by @binarycopycode
- Fix json2pb compile error of examples (#2482) by @chenBright
- Fix scoped_refptr leave ptr_ uninit when move construct by nullptr (#2491) by @lengmoXXL
- Fix LoadBalancerWithNaming memory leak when ssl init failed (#2503) by @ehds
Enhancement:
- Reserve at least one idle socket (#2390) by @chenBright
- rpm: upgrade compiler required by DoublyBufferedData by @wasphin
- Disallow copy and assign of Channel (#2439) by @chenBright
- LALB try left server nodes (#2428) by @FancyJan
- Add wrr lb fallback strategy (#2441) by @jiangyt-git
- Support max width of flame graph image (#2452) by @chenBright
- Remove Content-Length header of GET request (#2458) by @chenBright
- Support 100-continue of server and remove expect header of request (#2499) by @chenBright
- Optimize Content-Length in response to HEAD request (#2469) by @chenBright
- Fix Content-Length and Transfer-Encoding problem (#2518) by @chenBright
- Optimize ssl read log (#2451) by @chenBright
- Optimize ParallelChannel AddChannel Interface (#2467) by @sinomiko
- Support uint32 reloadable flags (#2483) by @chenBright
- tests: use global CMAKE_CPP_FLAGS (#2494) by @OdyX
- Optimize contention: support tcmalloc GetStackTrace and reduce hash calculations (#2488) by @chenBright
- Fix gdb bthread stack when using libc++ (#2516) by @ehds
- Add lldb bthread stack debug script (#2514) by @ehds
- Optimize HttpResponseSender move constructor (#2504) by @chenBright
- Change UserDataDeleter type from function ptr to std::function (#2431) by @coyorkdow
- Move fuzz test in main repo add more fuzz test (#2420) by @0x34d
Other:
- Update documents and comments by @khalid586, @Sea-n, @darionyaphet, @DevanshKyada27, @Wongony, @chenBright, @Divyansh200102, @wwbmmm, @OdyX, @darionyaphet
bRPC 1.7.0
What's Changed
Feature:
- Support pthread mode for ExecutionQueue by @chenBright in #2333
- Add wireshark dissector for baidu_std protocol by @wasphin in #2408
- selective_channel supports response_attachment by @yockie in #2329
- Add option for StreamWrite and Async RPC to write to socket in background bthread. by @MrGuin in #2280
- Server support ALPN with OpenSSL by @leaf-potato in #2102
Bugfix:
- Fix unit test running error under arch64 by @leaf-potato in #2324
- Fix normal h2 with gzip data by @leaf-potato in #2335
- Fix macOS bazel build by @anakinxc in #2341
- Fix redis-response-swap-mem-leak by @qqwangxiaow in #2340
- Fix duplicate content type by @chenBright in #2319
- Fix ut MultiDimensionTest:mlatencyrecorder coredump by @ivanallen in #2362
- Fix redis server example handler memory leak by @ehds in #2370
- Fix thrift version gt 0.13.0 by @ZjuYTW in #2257
- Fix HTTP HEAD method by @chenBright in #2366
- Fix hc ref by @chenBright in #2367
- Fix stream while max_buf_size < 0 by @chenbay in #2360
- Fix HTTP no content of 1xx and 204 by @chenBright in #2393
- Fix DirReaderPosix close same fd twice by @ehds in #2415
- Fix RetryPolicy blocks health check by @wwbmmm in #2419
- Fix /dev/null may be deleted by @zhaixiaojuan in #2346
Enhancement:
- make bvar_max_dump_multi_dimension_metric_number modifiable by @lhsoft in #2322
- remove unnecessary libthriftnb by @day253 in #2325
- ε° GOOGLE_CHECK_NE ζΏζ’ζ CHECK_NE by @gulu-goolu in #2349
- use AppendHeader for http2 by @lhsoft in #2387
- Fast show socket map in vars by @chenBright in #2376
- changed long to size_t in AnnotateBenignRaceSized function by @Divyansh200102 in #2403
- Thread local without limit by _SC_THREAD_KEYS_MAX by @chenBright in #2296
- Add mbvar clear_stats method by @serverglen in #2407
- add HTTP server-sent-events(SSE) example in brpc http server by @thorneliu in #2375
Others:
- Improve/add documents by @leaf-potato @chenBright
Thanks to all contributors for the 1.7.0 version!
Full Changelog: 1.6.1...1.7.0
brpc 1.6.1
What's Changed
Full Changelog can be found at: 1.6.0...1.6.1
brpc 1.6.0
What's Changed
Feature:
- Support user interceptor of server by @chenBright in #2137
- Support TCP heartbeat of client by @chenBright in #2098
- Support function name in logging by @chenBright in #2247
- Support server-end progressive reader for http protocol by @TangSiyang2001 in #2210
- Support new DoublyBufferedData for suspended bthread by @chenBright in #2225
- Support force SSL for all connections of Acceptor by @chenBright in #2231
- Support fixed and jittered retry backoff policy by @chenBright in #2273
- Support release assert by @chenBright in #2306
Bugfix:
- Fix rdma::GlobalRelease before event dispatcher is stopped by @Tuvie in #2220
- Fix compiler optimize thread local variable access by @ehds in #2156
- Fix butex wait_pthread handle EINTR by @jenrryyou in #2086
- Fix bvar::MultiDimension::delete_stats() may cause core dump by @ketor in #2237
- Fix compilation errors reported by GCC-13 by @adonis0147 in #2241
- Fix RDMA device logging by @372046933 in #2249
- Fix stack buffer overflow issue when calling copy_to_cstr by @jenrryyou in #2253
- Fix resource leak when there are multiple HCAs by @372046933 in #2252
- Fix unstable keepalive ut by @wwbmmm in #2261
- Fix coredump stack uncomplete when usercode throw exceptions by @smbzhang in #2256
- Fix compilation errors reported by Clang-14 by @thorneliu in #2243
- Fix missing BAIDU_GET_VOLATILE_THREAD_LOCAL in task group by @JimChengLin in #2262
- Fix compiler optimize thread local variable access on x86_64 by @adonis0147 in #2248
- Fix compile warning by @cdjingit in #2274
- Fix core when ssl is enabled without thread safety guarantees by @warriorpaw in #2180
- Fix macos ci failed with protobuf version by @wwbmmm in #2287
- Fix ignore SIGPIPE signal concurrent issue with other library by @lrita in #2301
- Fix flatmap element space should align with usertype by @ehds in #2288
Enhancement:
- Support "print all bthread frames" command for gdb bthread stack tool by @AIxWall in #2217
- Reduce code for operator[] of FlatMap by @wy1433 in #2202
- Set http default method to "/" by @chenBright in #2168
- Use Hedron's Compile Commands Extractor for Bazel by @372046933 in #2250
- Initialize offset of round robin load balancer with a random number by @xiaoma2015 in #2289
- Support hint size of formatted string for string_printf by @chenBright in #2270
- Support move constructor for scoped_refptr by @byronhe in #2284
- Support rvalue task in execution_queue_execute by @chenBright in #2308
- Support graceful exit gflag for SIGHUP by @old-bear in #2272
Others
- Improve/add documents by @Huixxi, @chenBright, @infdahai, @372046933, @cdjingit, @ra7moreοΌ@Thunderbrook @Xiaoyao708
Full Changelog can be found at: 1.5.0...1.6.0
Thanks to all contributors for the 1.6.0 version!
brpc 1.5.0
What's Changed
Feature:
- Support IPv6 for DNS resolve by @jsl422 in #2139
- Support naming timer sampling and worker threads by @ehds in #2136
- Support different TimeoutConcurrencyConf for different method by
@yanglimingcn in #2112 - Add bvar is_hidden by @serverglen in #2205
- Add server concurrency in status builtin service by @chenBright in #2097
- Add avg latency for prometheus metrics by @Huixxi in #2024
Bugfix:
- Fix the issue of const unused in the example of RDMA by @goldenbean in #2187
- Fix domain naming service host name buffer length by @ehds in #2179
- Fix memory leak of socket by @chenBright #2169
- Fix not end wait when ns fails to start by @chenBright #2162
- Fix ci failed with wrong path of libprotoc by @guodongxiaren in #2132
- Fix the periodic naming service quit problem by @chenBright in #2123
Enhancement:
- Remove wordexp by @wwbmmm in #2218
- Update github workflows to skip builds for markdown-file-only
changes by @kiminno in #2175 - Reject initializing FlatMap when nbucket is 0 by @jamesge
- Optimize some codes that violates the C++ One Definition Rule
[-Wodr] by @lrita in #2161 - Add _Alloc template parameters for FlatMap and FlatSet by @old-bear in #2149
- Add type BasicStringPiece::const_pointer by @lrita in #2141
- Operator overloading of PtrContainer by @chenBright in #2107
- Make sure we can receive at least one request @yanglimingcn in #2106
- Reduce cpu overhead when using rdma by @Tuvie in #2100
Others
- Prefer to use env to find bash by @wasphin
Improve/add documents by @haihuju, @tanzhongyi003, @wwbmmm, @wasphin,
@maheshrjl, @chenBright, @NIGHTFIGHTING, @Huixxi, @zuyu, @kiminno,
@wy1433, @20083017, @Thunderbrook
Full Changelog can be found at: 1.4.0...1.5.0
Thanks to all contributors for the 1.5.0 version!
brpc 1.4.0
What's Changed
Feature
- Support RDMA by @Tuvie in #1836, #1967, #2005 and #2036
- Support to dump MVariable in Prometheus format by @ldak4747 in #1964
- Support to limit max bytes in stream consume queue with the same host socket by @chenbay in #1958
- Add timeout concurrency limiter by @yanglimingcn in #2027
- Add a flag to manage http body on error by @jamesge
- Add gflag to disable the sampler thread by @leaf-potato in #1990
- Add delete_stats and has_stats interface to MVariable by @serverglen in #2041
- Optimize parallel channel request map method by @cdjingit in #2057
Bugfix
- Fix the linkage errors caused by duplicate symbols by @adonis0147 in #1936
- Fix "sched_to itself" error when building by Clang on Linux aarch64 by @adonis0147 in #1950
- Fix arena cleared early when parsing redis message by @dorothy00dd2 in #1959
- Fix HTTP invalid host issue for channel not inited by http(s) by @thorneliu in #1973
- Fix MacOS warning: bool literal returned from 'main' [-Wmain] by @zyearnΒ in #2020
- Fix issue of ssl error code by @yyweii in #2019
- Fix: domain name length by @wayslog in #1965
- Fix demangle core by @wwbmmm in #2037
Enhancement
- Add rdma_performance bazel support by @372046933 in #1984
- Add bazel third_party support by @fansehep in #1996
- Fall back to libibverbs.so.1 by @372046933 in #1985
- Refresh write timestamp when returning a Socket to its pool; change default value of -idle_timeout_second to 30. by @jamesge
- Early return for IOBuf::append_user_data when size == 0 by @372046933 in #2009
- Make BUTIL_RAPIDJSON_NAMESPACE_BEGIN::GenericDocument's handler method public to enable outside custom parser/writer by @old-bear in #2026
- Only allow to convert root array to single repeated pb by @chenBright in #2035
- FlatMap's value supports unique_ptr by @jamesge
Others
- Fix warning message error by @leaf-potato in #1989
- Migrate to GitHub workflow by @guodongxiaren and @zyearn in #1899, #2008, #2015, #2018, #2023 and #2030
- Reduce UT log output by @wwbmmm
- Support to pack rpm for RHEL 9 distributions by @wasphin in #1955
- Avoid std::string copy @ml-haha in #1969
- Include directly dependent header by @372046933 in #1993
- Update warning message on iobuf.cpp by @wwbmmm
- Remove unnecessary semicolon by @guodongxiaren in #2004
- Add a description to the profile graph by @hongliuliao in #2007
- Delete deprecated logoff_ms gflag in example folder by @leaf-potato in #2064
- Fix rpc maybe error: "libbrpc.so: undefined symbol: pthread_mutex_lock" by @co0l1ce in #2049 and roll-backed in #2076
- Keep bthread TaskGroup abi compatible with NDEBUG macro by @wwbmmm in #2047
- Improve/add documents by @fansehep, @cuishuang, @tanzhongyi003, @lorinlee, @Huixxi, @steven-66, @serverglen, @wwbmmm, @wasphin, @Tuvie, @0xflotus, @thinh2, @leaf-potato, @TousakaRin, @cdjingit, @chenBright, @freemandealer and @yanglimingcn
Full Changelog can be found at: 1.3.0...1.4.0
Thanks to all contributors for the 1.4.0 version!
brpc 1.3.0
What's Changed
- Support gcc on linux arm64 by @jamesge
- Support gcc version >= 11.2.0 by @wwbmmm in #1783
- Support the latest version of bazel(default v4.2.2) by @hcoona in #1657
- Support multi-dimension bvar, a powerful extension of bvar by @serverglen in #1608
- Restruct event_dispatcher source file by @guodongxiaren in #1888
- Add http retry with error code policy by @chenBright in #1927
- Add Nacos naming service by @yyweii in #1922
- Add customized server bvar prefix by @jenrryyou in #1854
- Add escape log content before printing by @jamesge
- Fix issues in FlatMap by @jamesge
- Fix override issue in pb by @jamesge, @wwbmmm
- Fix ALIGNAS/ALIGNOF/BAIDU_CACHELINE_ALIGMENT by @jamesge
- Fix some warnings for clang and revert changes on ALIGNAS/ALIGNOF by @jamesge
- Fix rpc_replay continue when failed to init channel by @ehds in #1938
- Fix multi-dimension bvar compile error by @dabao085 in #1937
- Fix bvar_dump_tabs default value problem by @yyweii in #1920
- Fix butex_wait failed with timeout by @Huixxi in #1917
- Fix rpc_replay can't send request equably by @bumingchun in #1910
- Fix compile warning due to DumpOptions object by @ml-haha in #1905
- Fix test_bvar fail on m1 mac by @wwbmmm in #1901
- Fix the slow test in brpc_socket_unittest.cpp by @zyearn in #1898
- Fix the first bthread keytable on worker pthread will be deleted twice by @chenBright in #1884
- Fix currently broken MacOS build by @zyearn in #1871
- Fix ProcessHttpRequest supports for http2 by @dandyhuang in #1868
- Fix get_value core caused by the sampler thread start too early by @Huixxi in #1863
- Fix UDS ut failed on MacOS by @wwbmmm in #1843
- Fix coredump cause by bad growth_non_responsive http request by @acelyc111 in #1278
- Fix not to abort when checking the errorno with unicode string by @tobegit3hub in #1142
- Improve/add documents by @wwbmmm, @JackBoosY, @morningman, @serverglen, @chenBright, @guodongxiaren, @xdh0817, @KaneVV1, @tanzhongyi003, @lzfhust, @Huixxi
- Fix typos by @opheliaKyouko, @day253, @chenBright, @fansehep
Thanks to all contributors for the 1.3.0 version!
Full Changelog: 1.2.0...1.3.0
brpc 1.2.0
What's Changed
- Support apple silicon by @jamesge
- Add an option to allow serialize/deserialize to/from a json array by @wasphin in #1604
- Add redis empty request check by @lzfhust in #1745
- Add butex_wake_all support nosignal flag by @yanglimingcn in #1751
- Add wr/wrr policy degradation by @Huixxi in #1571
- Add with_snappy in cmake by @renzhong in #1799
- Add check append return code by @wwbmmm in #1762
- Add CXXFLAGS in compiling protoc-gen-mcpack by @jamesge
- Fix the header guard of brpc/periodic_task.h by @TousakaRin in #1820
- Fix build warning, ByteSize() is deprecated, use ByteSizeLong() instead by @yangzhg in #1723
- Fix c struct compile error by @wolfdan666 in #1736
- Fix auto https check by @renzhong in #1754
- Fix json2pb::JsonToProtoMessage() supports parsing multiple jsons by @jamesge
- Fix compile error due to std limits header absent by @GOGOYAO in #1764
- Fix a deadlock happened in ClearAbandonedStreamsImpl path by @zyearn in #1781
- Fix send WindowUpdate when ClearAbandonedStreams is called by @zyearn in #1786
- Fix _dl_sym undefined reference by @wwbmmm in #1784
- Fix thrift protocol exception by @lzfhust in #1790
- Fix Brpc build tools error when only build static by @stdpain in #1797
- Fix discovery naming service core by @serverglen in #1802
- Fix rpc_press can't send request equably by @bumingchun #1763
- Fix hostname2ip fails when aux_buf is not long enough by @chenBright in #1818
- Improve documents by @wwbmmm, @tanzhongyi003, @guodongxiaren, @372046933, @wasphin, @hawkxiang, @TousakaRin, @Huixxi, @serverglen
- Fix typos by @jamesge, @cyberkillor
Thanks to all contributors for the 1.2.0 version!
Full Changelog: 1.1.0...1.2.0