Kitex v0.4.3 版本发布

重要变更介绍

功能

  1. 扩展 client/server 生成模板 :新增 client/server 模板扩展功能,可以通过配置定制,适用于统一定制 suite 场景,详见扩展 Service 代码生成模板
  2. 业务异常 :新增业务自定义异常支持,可区分于 RPC 异常返回 error,使用详见业务异常,背景详见Proposal
  3. 请求 Profiler :新增功能可用于为不同的 RPC 请求提供成本分析统计的能力。
  4. Context Middleware : 新增 Context Middleware,用于请求粒度添加 Middleware。

优化

  1. Frugal 性能优化 :支持在创建 Client/Server 阶段进行 Frugal “预编译”,减少动态编译对延迟的影响。
  2. 连接池优化 :重构连接池,完善空闲连接清理能力。

详细变更

Feature

  • [#691] feat(client): 为 Client 添加上下文中间件,用于请求粒度添加中间件。
  • [#649] feat(connpool): 长连接池的新实现,支持最小空闲连接数及空闲连接清理。
  • [#672] feat(grpc): 为 kitex grpc 添加了元信息传递相关 api,包括 header,tailer,以及 peer 远端地址的获取接口。
  • [#613] feat(exception): 支持用户自定义异常用以区分 RPC 异常。
  • [#670] feat(exception): 支持 DetailError 格式化。
  • [#678] feat(tool): 为 kitex cmd 添加 git 和 record 参数。
  • [#662] feat(tool): 支持在创建 client 或者 server 的时候进行 frugal “预编译” (pretouch)。
  • [#657] feat(tool): 支持模板拓展。
  • [#527] feat(profiler): 为不同的 RPC 请求提供成本分析统计的能力。

Optimize

  • [#690] optimize(meta): 移除 #503 添加 default metahandler 的错误逻辑。
  • [#638] optimize(generic): httppb 泛化支持 map/list 元素类型为 struct。
  • [#641] optimize(tool): 给 oneway 方法增加警告注释。

Fix

  • [#611] fix(client): 在频繁重复创建 Client 场景下,修复由于 finalizer 未触发执行导致的资源泄漏。
  • [#698] fix(connpool): 根据 Get 返回的连接数减少值来调整 globalIdle。
  • [#636] fix(connpool): 修复当连接池在 ForwardProxy 实现中被重置后,连接池的 CloseCallback、统计上报失效的问题。
  • [#647] fix(grpc): 修复 grpc 连接级别窗口初始化时没有通知对端的问题,并同步了 grpc pr #5459。
  • [#639] fix(generic): 泛化调用支持 list 类型,map 读泛化增加 forJSON 选项。
  • [#655] fix(generic): 数值型常量作为泛化默认值时无法被正确解析。
  • [#654] fix(frugal): 修复较低版本 go 编译失败的问题。
  • [#682] fix(profiler): 修复 profiler 停止 pprof profile 采集的问题。
  • [#637] fix(tool): 修复 handler.go 模板里的 imports。
  • [#630] fix(tool): 对于没有声明 “service” 的 pb 文件,去掉生成文件末尾冗余的 kitex 声明。
  • [#627] fix(tool): 修复当一个 import 拥有不同的别名时 import 会丢失的问题。

Refactor

  • [#651] refactor(server): 重构 server trans handler 的 read/write 接口,返回新的 context。

Docs

  • [#656] docs: 删除 CONTRIBUTING 文档中的错误信息。
  • [#683] docs(kerrors): 修改了 kerrors WithCauseAndExtraMsg 方法注释。
  • [#625] chore: 修正 pull request 模板的语法问题。
  • [#623] chore: 修改 pull request 模板。

Test & CI

  • [#646] test: 修复 InitRPCInfoFunc 未设置 rpcinfo 导致的单测失败。
  • [#680] test: 修复重试单测的 race 问题。
  • [#661] test: 增强 wpool 测试稳定性。
  • [#643] test: 为 detection server handler 添加测试。
  • [#632] test: 用 gomock 自动生成类替换手动编写的 mock 类。
  • [#697] chore(ci): 固定 skywalking-eyes 版本号。
  • [#652] chore(ci): 删除重复的测试,以减少单测所花费的时间。
  • [#588] chore(ci): 支持 codecov。