Skip to content

Releases: cloudwego/kitex

v0.3.3

14 Jul 04:02
7993364
Compare
Choose a tag to compare

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

02 Jun 05:32
e8bafd3
Compare
Choose a tag to compare

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

06 May 06:56
021b894
Compare
Choose a tag to compare

Hotfix

[#441 ] hotfix(grpc): validate the grpc buffer size setting by option

v0.3.0

29 Apr 13:33
5c30cb1
Compare
Choose a tag to compare

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

24 Mar 09:18
49b85c4
Compare
Choose a tag to compare

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

24 Feb 06:21
98e6407
Compare
Choose a tag to compare

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

18 Jan 07:28
24c8793
Compare
Choose a tag to compare

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

30 Dec 10:29
e6aa1f6
Compare
Choose a tag to compare

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

22 Dec 09:35
3a7b138
Compare
Choose a tag to compare

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

13 Dec 04:53
6dae6ce
Compare
Choose a tag to compare

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