Releases: cloudwego/kitex
v0.3.3
Feature:
[#470,#534] feat(frugal): add frugal thrift en/decoder
[#456,#517] feat: fill in listening address and protocol info for serviceInfo, and expose GetServiceInfo interface on server
[#508] feat(grpc): add gRPC unknown service handler, implement GrpcConn and add ReadFrame and WriteFrame methods for proxy server
Optimize:
[#503,#547] optimize: add default metaHandler when metaHandler is empty
[#491,#547] optimize: output error log when error or panic happens in OnActive
[#512] optimize(generic call): export parseContent function
[#543] optimize(thrift): disable nocopy for method name
Bugfix:
[#546,#548] fix(mux): mux client panic when force close
[#505] fix(limiter): fix counting logic of acquire in connection limiter to let connection effective correctly
[#492] fix(grpc): register loop read
as OnRequest to fix read&close panic
[#497] fix(grpc): make serverTransHandler.OnActive
work
[#488] fix: avoid nil panic if server not ready for shutdown
Refactor:
[#510] refactor: error handler refactor of the client/server side, try to unify the error handling of different protocols
[#516] refactor(limiter): rename ConcurrencyLimiter to ConnectionLimiter
Test:
[#506,#528] test: add ut for bthrift binary
[#493] test: fix 'address already in use' problem in testcase
Ci:
[#549] ci: run skywalking-eyes only on x64 runners
Dependency Change:
github.com/cloudwego/netpoll: v0.2.4 -> v0.2.5
gopkg.in/yaml.v3: v3.0.0-20210107192922-496545a6307b -> v3.0.1
new imported: github.com/cloudwego/frugal v0.1.1
Thanks a lot to those community contributors who submit some pull requests for this version:
@Lvnszn
v0.3.2
Feature:
[#473] feat(grpc): support short connection for gRPC unary
[#431] feat(limiter): extend outside limiter implementation and fix problems of rate limiter of multiplexed server
Optimize:
[#465] optimize(ttheader): set remote address for client-side after decoding TTHeader
[#466] optimize(mux): wrap ErrReadTimeout with ErrRPCTimeout in mux scenario
[#425] optimize(limiter): promise tokens of the first second don’t exceed limit significantly
Bugfix:
[#485] fix(grpc): fix the incorrect integer conversion
[#474] fix(trans): fix detection handler panic when conn inactive early
[#445] fix(retry): race problems of callTimes in retry and some fields of rpcStats.
[#471] fix(retry): callCosts race in backup request
Test:
[#404] test: add unit test for pkg/retry
[#439, #472] test: add unit test for pkg/remote/remotecli
[#462, #457] test: add unit test for pkg/remote/trans/nphttp2/grpc
[#420] test: add ut for pkg/remote/trans/nphttp2
Refactor:
[#464] refactor(ttheader): change protocol id of Kitex Protobuf in TTHeader and promise the change is compatible with the old version
Chore:
[#453, #475] chore: upgrade netpoll and bytedance/gopkg
[#458] chore: fix ci reviewdog and pr ut didn’t run
[#454] chore: use self-hosted ci to optimize speed
[#449] chore: fix github issue template
Style:
[#486] style(trans): add comment for detection trans handler
Docs:
[#482] docs: update FAQ of readme
Dependency Change:
github.com/cloudwego/netpoll: v0.2.2 -> v0.2.4
Thanks a lot to those community contributors who submit some pull requests for this version:
@Jacob953 @LoveScotty @debug-LiXiwen @JZK-Keven
v0.3.1
v0.3.0
Feature
[#366, #426] feat(client): support warming-up for kitex client
[#395] feat(mux): support gracefully shutdown in connection multiplexing
[#399] feat(protobuf): add fastpb protocol API and support it in the pkg/remote/codec module
Optimize
[#338] perf(gRPC): refactor gRPC codec interface to reduce useless copy
[#402] optimize(connpool): export getCommonReporter in pkg/remote/connpool
[#389] optimize(rpcinfo): fill TransportProtocol, PackageName fields into RPCInfo of the server side after decoding
Bugfix
[#413] fix(mux): Set PayloadCodec for sendMsg in NetpollMux trans handler to fix generic request codec error.[issue #411]
[#406] fix(grpc): Fix the sending and receiving logic about http2 framer, such as preventing the peer unable to receive the framer in time
[#398] fix(utils): fix the bug that Dump() func in ring.go can't dump the accurate data in ring shards
[#428]fix(trans): close connection when flush data fails to avoid memory leak
Tool
[#340] tool(protobuf): redesign and implement new protobuf gen code called fastpb which doesn't use reflection and only supports proto3
Chore
[#396] chore: replace cespare/xxhash with xxhash3 from bytedance/gopkg
[#400] chore: upgrade go version of workflow to 1.18
[#407] chore: add a separate file to declare the use of gRPC source code
Test
[#401] test: add ut for kitex/server package
[#393] test: add ut for pkg/remote/bound package
[#403] test: add netpollmux unit test
[#401] test: add klog unit test
[#392] test(utils): add UT for utils and fix inaccurate err throw in json.go
[#373, #432, #434] test(grpc): add gRPC transport unit tests, promoting the coverage to 76%
[#424] test(transmeta): supplementary of unit tests for http2 and ttheader implementations of MetaHandler/StreamingMetaHandler in pkg/transmeta.
Dependency Change:
github.com/cloudwego/netpoll: v0.2.0 -> v0.2.2
github.com/bytedance/gopkg: 20210910103821-e4efae9c17c3 -> 20220413063733-65bf48ffb3a7
Thanks a lot to those community contributors who submit some pull requests for this version:
@bodhisatan , @baiyutang , @Midugo , @debug-LiXiwen , @dongzeXD , @ag9920
v0.2.1
Bugfix
[#383] fix(generic): detect circular dependency in thrift IDL when using generic call.
[#359] fix(tool): fix streaming import missing in protobuf combine service.
[#363] fix(client): fix a bug that sequence ID of oneway requests are not encoded and lower the loss rate of oneway requests.
[#367] fix(generic/tool): combine services may have duplicate loading of the same service.
Optimize
[#362] optimize(diagnosis): lbcache is global, it doesn't need register ProbeFunc for diagnosis
[#374] optimize(rpcinfo): RPCInfo.To().Tag() use instance tag instead of remoteinfo tag firstly
[#355] optimize(connpool): adjust minMaxIdleTimeout to 2s
[#354] optimize(hook): adding locks to onServerStart and onShutdown, acquire the corresponding lock when doing some read and write operations like RegisterStartHook and range in server.Run().
[#331] optimize(discovery): add error definition ErrInstanceNotFound which is used in the service discovery module
Refactor
[#352] refactor(event): delete additional atomic operations and replace them with a normal operation.
[#343] refactor(loadbalancer): merge BuildWeightedVirtualNodes function into buildVirtualNodes function, make it easier to maintain.
Docs
[#364] docs: update readme with new blog
Chore
[#376] chore: upgrade choleraehyq/pid for Go 1.18
v0.2.0
Feature
[#337] feat: support options to set the internal params of gRPC (#325)
[#345] feat(kerror): add new func WithCauseAndExtraMsg for basicError
[#278] feat(rpcinfo): add FreezeRPCInfo to support asynchronous context usage
[#295] feat: default codec supports size limit
Improvement
[#334] optimize: improve retry success rate when do failure retry
Bugfix
[#323] fix(remotecli): fix bug that released connections may be reused
[#322] fix(generic): generic call supports extended services
[#328] fix(generic): fix generic call oneway flag
Chore
[#356] chore: upgrade netpoll to v0.2.0
[#329] chore: add third party license
Docs & Style
[#344] style: use ReplaceAll instead of Replace
[#317] style: remove psm in bootstrap_tpl.go
[#346] docs(rpcinfo): add example for FreezeRPCInfo
v0.1.4
Improvement
[ #312 ] optimize(log): don't print timeout log in rpctimeout middleware
[ #319 ] optimize(log): adjust default log level to info
[ #309 ] optimize(gRPC): lock the sendAt avoid grpc bdp data race
Bugfix
[ #315 ] fix(client-connection): fix a connection leaking bug that happens when clients fail at Send
[ #310 ] fix(timeout): fix TimeoutAdjust won't work when set in middleware builder
Tool
[ #318 ] fix(tool): fix protobuf handler arguments name.
kitex tool will generate a stream type named "{{.ServiceName}}_{{.Name}}Server" for each streaming server, but in handler.go kitex use "{{.ServiceName}}_{{.RawName}}Server" as stream name.
Docs & Style
[ #303 ] doc: add icon in readme
[ #300 ] style: remove unnecessary type conversions
v0.1.3
Feature
[ #298 ] feat(generic): transmit the Base
from client to server for getting the caller info in JSON generic
Improvement
[ #299 ] perf(grpc): recycle grpc codec buffer by close linkbuffer to reduce GC
Bugfix
[ #276 ] fix(grpc): fix metric missing method tag in streaming
[ #293 ] fix(generic): fix the incompatible modification about base64 binary in the JSON and HTTP generic
[ #296 ] fix(grpc): fix the bug of grpc flow control, which brings the problem of continuous timeout
CI
[ #284 ] ci: add scenario tests
Chore
[ #283 ] chore: update some external links in README
[ #294 ] chore: update the roadmap
Hotfix v0.1.2
Hotfix
[ #287 ] [ #289 ] [ #285 ] Fix some gRPC request bugs which are involved by v0.1.0.
[ #281 ] Fix mistake gRPC method path when no package definition in IDL
Chore
[ #275 ] Use GitHub's PULL_REQUEST_TEMPLATE
feature to force the developer to create a clear description before creating the pull request
Dependency Change
[ #282 ] Upgrade netpoll-http2 to v0.0.6, fix the problem about large request package (>4K) in streaming
v0.1.1
This version has a problem with gRPC request, it is suggested to use the higher version.
Feature
[ #206 ] feat(generic): support combined services
[ #215 ] feat(generic): export SetSeqID and add GetSeqID for binary generic call of server side
[ #254 ] feat(generic): support close generic client to avoid memory leak
[ #222 ] chore(log): use key=value style in log messages
[ #230 ] chore(log):use klog as global log in some logs
[ #243 ] feat(log): use the global default logger across kitex
[ #250 ] feat(log): print detail loginfo by ctx
[ #264 ] feat(log): pass service info to go func which is used to output for troubleshooting
[ #231 ] feat(option): add NewThriftCodecDisableFastMode to disable FastWrite/Read
[ #258 ] feat(option): add server option - WithReusePort
[ #239 ] feat(option): default rpc timeout = 0
[ #234 ] feat(proxy): Proxy add ContextHandler interface to support passing initialization context to mwBuilder
[ #234 ] feat(proxy): Register Dump in lbcache to diagnosis
[ #240 ] feat(proxy): pass RPCConfig to proxy.Config
Improvement:
[ #187 ] perf: reduce heap allocation
[ #256 ] perf: optimize mux performance
[ #267 ] perf: recycle grpc codec buffer by close linkbuffer
[ #232 ] feat: distinguish ErrRPCFinish in cost info of backup request
[ #261 ] feat: move mux.ShardQueue to netpoll, rename sharedMap to shardMap
Bugfix:
[ #229 ] fix: enable server error handle middleware
[ #252 ] fix: adjust Balancer initialization in lbcache
[ #246 ] fix: init TraceCtl when it is nil (only affect unit test)
[ #233 ] fix: set default rpctimeout and disable timeout logic if rpctimeout == 0
[ #253 ] fix: defaultlogger wrong calldepth
[ #237 ] fix: rename BackwardProxy to ReverseProxy
[ #255 ] fix: avoid nil panic in grpc keepalive
[ #257 ] fix: fix hidden dangers about grpc
[ #234 ] fix: fix mistake dump info when instances change
Tool
[ #216 ] feat: add container length encoding guard in fast api
[ #260 ] fix: fix exception missing in void method
Docs:
[ #236 ]docs: fix link in readme_zh
[ #245 ]docs: remove docs; mantain cloudwego.io only
Netpoll API Change:
[ #241 ] adapt netpoll.Writer.Append API
Dependency Change:
- update netpoll to v0.1.2