v1.5.0 release note
所有MR以及issue见milestone1.5.0,修改内容包括:
兼容性
- 该版本对于使用Rpc协议的用户向前兼容
- 对自定义协议的用户,因为有一些代码重构,不向前兼容。
v1.5.0的pom依赖
<!-- 日志门面使用slf4j,日志实现可以选择log4j、log4j2、logback,可参考:https://github.com/alipay/sofa-bolt/wiki/log_implementation_jar -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.25.Final</version>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>bolt</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>com.alipay.sofa.common</groupId>
<artifactId>sofa-common-tools</artifactId>
<version>1.0.12</version>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>hessian</artifactId>
<version>3.3.0</version>
</dependency>
主要改动
feature
- [feature] 之前默认一直是UnpooledByteBufAllocator,本次启用PooledByteBufAllocator
- [feature] netty的WriteBufferWatermark,之前只能通过系统参数设置高低水位,本次修改成用户级的api方式设置参数,不同实例(RpcClient或者RpcServer)这个水位的参数设置,互不影响。
- [feature] 为了提供用户级的api方式设置参数,重构了参数设置的类。PropertiesManager类改成了ConfigManager。同时抽象了一个ConfigurableInstance供client与server继承。
- [feature] 在支持epoll的环境,开启支持epoll
- [feature] 支持对多个请求类型生效的用户处理器
tuning
- [tuning] 优化服务端给客户端返回的序列化异常的响应,之前没有带上causeBy导致客户端不能知道明确的异常,本次加上了这块的信息:包括服务端序列化响应异常与服务端反序列化请求异常。
- [tuning] 一些错误日志创建方式的优化,主要是用String.format来做格式化。
- [tuning] 服务端启动如果因为端口占用启动失败,之前不会抛异常,只是会提示启动失败。本次把异常抛出来,明确可以知道是端口占用导致启动失败。
- [tuning] 启动失败的时候,会触发初始化。之前没有把初始化的资源释放掉,本次修复了这个问题。启动失败后,会确保初始化的资源也释放掉。
- [tuning] RemotingServer抽象成接口,比当前的抽象类要好(逻辑更加清晰)
- [tuning] 重构ConnectionFactory,适配用户自定义协议。将registerUserProcessor方法从ConnectionFactory中移除,使ConnectionFactory的逻辑更加清晰,修复一些代码风格的问题
bugfix
- [bugfix] 修改全局开关(GlobalSwitch)的生效优先级,这里算是缺陷,比如之前系统级开关会优先于用户级开关生效。导致某一个客户端实例开启了重连等特性,其他实例也默认开启了。本次修改改成了用户参数优先生效。
- [bugfix] 服务端的排队超时快速失败开关,不生效。本次修复了此问题。
- [bugfix] 修复一些不影响用户的小缺陷,以及PMD检查出来的问题
- [bugfix] 修复DefaultConnectionManager日志对象获取错误的问题。
- [bugfix] 修复JDK1.6的CI编译问题
upgrade
- [upgrade] 因为安全原因,升级hessian到3.3.2
refactor
- Configs类与ProtocolSwitch类的包路径改动。跟配置相关的类都统一放在了com.alipay.remoting.config包下面。