Skip to content
Permalink
Browse files
3.0.2 release note. (#897)
3.0.2 release note.
  • Loading branch information
horizonzy committed Aug 18, 2021
1 parent e4d7d9b commit 05004ca416d9faef38699c55b2782f53bbf04535
Show file tree
Hide file tree
Showing 2 changed files with 266 additions and 0 deletions.
@@ -0,0 +1,133 @@
---
title: "3.0.2 Release Note"
linkTitle: "3.0.2"
date: 2021-08-18
description: >
The release note of Apache Dubbo 3.0.2
---

## Features
- improve generic service with @DubboService annotation.
- metadata report config support xml to config protocol and port.
- compatible for curator5.
- p2p invoke support wildcard url match.
- add Dynamic Configuration Override Support For ServiceDiscovery.
- add provider configuration override disable option.
- support native image.
- support disable shutdown hook.
- add Kubernetes Mesh Rule support.
- support SSL at netty transport.


## BugFixs
- fix re-start override dynamic config.
- fix delete configurators does not take effect.
- fix triple protocol will throw exception when the service is exposed.
- fix ConfigCenterConfig.setAddress will override username problem.
- fix DefaultFuture.closeChannel will shutdown ExecutorService.
- fix TripleClientHandler#writeRequest throwing NPE problem.
- fix NPE when parse migration rule error happen.
- fix Activated Extensions order.
- fix URLAddress#parse method to judge the isPathAddress problem when the address is ipv6.
- fix custom parameter in configuration properties does not work.
- fix Config id Override when both using API and Spring.
- fix service discovery not work on bootstrap & fix address pollution.
- fix nacos registry can't received instance change notify.
- fix could not resolve placeholder '${dubbo.application}' in xml.
- fix service parameter fetch order.
- fix error of register dubbo bootstrap application listener manually.
- fix mock parameters doesn't work when it contain ':' or '='.
- fix delete mesh rule npe.

## Optimization

- add exception catch for RemovalTask, ensure semaphore release.
- check duplicated ReferenceConfig/ServiceConfig by unique service name.
- improve the performance for generating random numbers.
- if user define interface service discovery, not publish service name mapping info.
- use StringBuilder#append(Char) to improve performance.
- gRPC Compile class interface order.
- improve property placeholder resolving of reference bean.
- use CompletableFuture#get(long, TimeUnit) to take place of CompletableFuture#get() in MergeableClusterInvoker.
- service delay export config ignore metadata service.
- improve dubbo config beans and bootstrap initialization.
- improve duplicated config checking and add tests for reference annotation.
- replace with ring for registry notification & suppress property checker.
- improve dynamic configuration initialization.
- lock-free ConfigManager and improve config checking.
- modify metadata equals and instance listener.
- improve async export / refer.
- use TreeSet to ensure ServiceNames order when subscribe.
- make first tenth calls notify not delay RegistryNotifier.
- refactor compiler to generate new format stubs.
- change mesh rule group to config default value.
- compatible with nacos grouping via group.
- remove runtime params in ServiceInfo.
- throw RpcException when NacosException occurred.
- configcenter ban accessLogKey and FileRouterFactory key.
- improve config bean initialization compatible with spring 3.x/4.1.x.
- dubbo bootstrap start re-entry, export/refer new services.
- org.apache.dubbo.* add serialization whitelist.
- ensure generated config id is unique, checking existed config.
- compatible with filed change declaration override for Javaassist.
- refactor Codec check, default deny.
- compatible with adaptive extensions when ApplicationModel is null.

## Code Improvement

Thanks for these contribution to improve stability of Apache Dubbo.

[#8111](https://github.com/apache/dubbo/pull/8111),
[#8147](https://github.com/apache/dubbo/pull/8147),
[#8164](https://github.com/apache/dubbo/pull/8164),
[#8177](https://github.com/apache/dubbo/pull/8177),
[#8180](https://github.com/apache/dubbo/pull/8180),
[#8161](https://github.com/apache/dubbo/pull/8161),
[#8183](https://github.com/apache/dubbo/pull/8183),
[#8205](https://github.com/apache/dubbo/pull/8205),
[#8215](https://github.com/apache/dubbo/pull/8215),
[#8173](https://github.com/apache/dubbo/pull/8173),
[#8219](https://github.com/apache/dubbo/pull/8219),
[#8228](https://github.com/apache/dubbo/pull/8228),
[#8232](https://github.com/apache/dubbo/pull/8232),
[#8230](https://github.com/apache/dubbo/pull/8230),
[#8236](https://github.com/apache/dubbo/pull/8236),
[#8260](https://github.com/apache/dubbo/pull/8260),
[#8262](https://github.com/apache/dubbo/pull/8262),
[#8252](https://github.com/apache/dubbo/pull/8252),
[#8246](https://github.com/apache/dubbo/pull/8246),
[#8208](https://github.com/apache/dubbo/pull/8208),
[#8278](https://github.com/apache/dubbo/pull/8278),
[#8267](https://github.com/apache/dubbo/pull/8267),
[#8277](https://github.com/apache/dubbo/pull/8277),
[#8291](https://github.com/apache/dubbo/pull/8291),
[#8296](https://github.com/apache/dubbo/pull/8296),
[#8302](https://github.com/apache/dubbo/pull/8302),
[#8175](https://github.com/apache/dubbo/pull/8175),
[#8319](https://github.com/apache/dubbo/pull/8319),
[#8309](https://github.com/apache/dubbo/pull/8309),
[#8336](https://github.com/apache/dubbo/pull/8336),
[#8332](https://github.com/apache/dubbo/pull/8332),
[#8328](https://github.com/apache/dubbo/pull/8328),
[#8355](https://github.com/apache/dubbo/pull/8355),
[#8396](https://github.com/apache/dubbo/pull/8396),
[#8401](https://github.com/apache/dubbo/pull/8401),
[#8395](https://github.com/apache/dubbo/pull/8395),
[#8415](https://github.com/apache/dubbo/pull/8415),
[#8406](https://github.com/apache/dubbo/pull/8406),
[#8411](https://github.com/apache/dubbo/pull/8411),
[#8418](https://github.com/apache/dubbo/pull/8418),
[#8439](https://github.com/apache/dubbo/pull/8439),
[#8404](https://github.com/apache/dubbo/pull/8404),
[#8443](https://github.com/apache/dubbo/pull/8443)

## Dependency Changes
- remove dependency: org.eclipse.collections:eclipse-collections
- remove dependency: com.google.guava:guava
- jetty: 9.4.11.v20180605 -> 9.4.43.v20210629
- apollo client: 1.1.1 -> 1.8.0
- snakeyaml: 1.20 -> 1.29
- tomcat embed: 8.5.31 -> 8.5.69
- nacos client: 2.0.0 -> 2.0.2
- swagger: 1.5.19 -> 1.5.24
- hessian_lite: 3.2.8 -> 3.2.11
@@ -0,0 +1,133 @@
---
title: "3.0.2 发版公告"
linkTitle: "3.0.2"
date: 2021-08-18
description: >
Apache Dubbo 3.0.2 发版公告
---

## 新特性
- 支持通过 @DubboService 注解暴露泛化服务
- 元数据中心xml格式的配置支持 protocol 和 port 属性
- 兼容 curator5 以上的版本
- 点对点调用支持*通配符进行匹配, 一个提供者地址可对应多个接口
- 为应用级别的服务发现增加动态配置去进行规则覆盖
- 对提供者测的动态配置覆盖规则提供开关,可以使提供者无视动态配置,不重新暴露
- 支持 native image
- 提供取消执行 shutdown hook 的开关
- 支持 Kubernetes Mesh 的服务治理规则
- Netty 连接支持 SSL 配置

## Bug 修复
- DubboBootStrap start 重复调用后,动态配置被覆盖
- 动态配置规则被删除后,依然生效
- triple 协议在暴露时会抛出空指针异常
- ConfigCenterConfig.setAddress 方法会覆盖掉 username 属性
- DefaultFuture.closeChannel 会销毁掉消费端测的线程池
- TripleClientHandler.writeRequest 抛出空指针异常
- 解析3.0迁移规则异常时会抛出空指针异常
- Activated Extensions 的顺序性问题
- URLAddress.parse 方法在解析 ipv6 地址时存在问题
- 用户自定义的参数在 properties 配置中不生效
- 同时使用 API 模式和 Spring 模式配置时属性,Config Id 存在覆盖问题
- 应用级别服务发现在启动时不生效
- Nacos 注册中心无法动态感知提供者的数量变化
- ${dubbo.application} 在 xml 文件中无法被 spring 的 placeholder 规则给解析替换
- 获取实例参数的顺序问题,先去获取了实例级别参数,再去获取接口级别参数
- 当 DubboConfigBeanInitializer 不存在时,注册应用启动监听器会抛出异常
- Mock 时 参数中包含 ':' 或者 '=' 字符时,不生效
- 删除 Mesh 规则时空指针异常

## 优化
- 抓住 RemovalTask 的异常,保证信号量能够释放
- 通过 唯一 service name 检查 ReferenceConfig/ServiceConfig 是否重复
- 优化生成随机数的性能
- 如果用户使用接口级别去做服务发现,不发布应用与接口的映射数据到元数据中心
- 使用 StringBuilder#append(Char) 提升性能
- 保证 GRPC 编译的类文件中接口的顺序
- 优化 reference bean 的占位符解析
- MergeableClusterInvoker 中使用 CompletableFuture#get(long, TimeUnit) 去提升性能
- 内置服务 MetadataService 不延迟暴露
- 优化 ConfigBean 和 Bootstrap 的启动逻辑
- 优化 Config 检查是否重复的逻辑
- 使用 Ring 数据结构去进行注册通知
- 优化动态配置的初始化逻辑
- ConfigManager 使用 ConcurrentHashMap 去移除锁逻辑,提升 equals 和 toString 性能
- 优化 MetadataInfo equals 方法 以及 Instance Listener
- 优化异步 export/refer 逻辑
- 使用 TreeSet 数据结构保证应用级别服务发现时应用名称的顺序一致
- RegistryNotifier 的第一个十次通知不延迟
- dubbo-compile 编译使用新的格式生成 stub
- Mesh 服务治理规则在动态配置中心的分组和其他规则分组统一,由 DEFAULT_GROUP 改成 dubbo
- 使用 nacos 用作注册中心时,可以在注册中心地址中使用参数来改变在 nacos 中的分组
- 计算 ServiceInfo 的 reversion 时,移除运行时参数,避免生成多个 reversion
- Nacos 注册中心抛出异常时,将异常封装称 RpcException 抛出
- 禁止动态配置中心对一些权限参数进行动态修改
- 优化 Config Bean 的初始化流程,并兼容 spring 3.x/4.1.x
- Bootstrap.start 方法可重入,暴露或引用新的服务
- 将 org.apache.dubbo 包中的类默认添加到白名单中
- 保证生成的 Config 的 Id 唯一,并检查 Config 是否之前存在
- Javaassist 兼容改变 override 声明字段
- 重构解码时的检查逻辑,当找不到 path, version 对应的提供者是,抛出异常
- 当 ApplicationModel 为 null 时,兼容 adaptive extensions

## 代码质量提升

感谢以下提高 Apache Dubbo 的稳定性的贡献。

[#8111](https://github.com/apache/dubbo/pull/8111),
[#8147](https://github.com/apache/dubbo/pull/8147),
[#8164](https://github.com/apache/dubbo/pull/8164),
[#8177](https://github.com/apache/dubbo/pull/8177),
[#8180](https://github.com/apache/dubbo/pull/8180),
[#8161](https://github.com/apache/dubbo/pull/8161),
[#8183](https://github.com/apache/dubbo/pull/8183),
[#8205](https://github.com/apache/dubbo/pull/8205),
[#8215](https://github.com/apache/dubbo/pull/8215),
[#8173](https://github.com/apache/dubbo/pull/8173),
[#8219](https://github.com/apache/dubbo/pull/8219),
[#8228](https://github.com/apache/dubbo/pull/8228),
[#8232](https://github.com/apache/dubbo/pull/8232),
[#8230](https://github.com/apache/dubbo/pull/8230),
[#8236](https://github.com/apache/dubbo/pull/8236),
[#8260](https://github.com/apache/dubbo/pull/8260),
[#8262](https://github.com/apache/dubbo/pull/8262),
[#8252](https://github.com/apache/dubbo/pull/8252),
[#8246](https://github.com/apache/dubbo/pull/8246),
[#8208](https://github.com/apache/dubbo/pull/8208),
[#8278](https://github.com/apache/dubbo/pull/8278),
[#8267](https://github.com/apache/dubbo/pull/8267),
[#8277](https://github.com/apache/dubbo/pull/8277),
[#8291](https://github.com/apache/dubbo/pull/8291),
[#8296](https://github.com/apache/dubbo/pull/8296),
[#8302](https://github.com/apache/dubbo/pull/8302),
[#8175](https://github.com/apache/dubbo/pull/8175),
[#8319](https://github.com/apache/dubbo/pull/8319),
[#8309](https://github.com/apache/dubbo/pull/8309),
[#8336](https://github.com/apache/dubbo/pull/8336),
[#8332](https://github.com/apache/dubbo/pull/8332),
[#8328](https://github.com/apache/dubbo/pull/8328),
[#8355](https://github.com/apache/dubbo/pull/8355),
[#8396](https://github.com/apache/dubbo/pull/8396),
[#8401](https://github.com/apache/dubbo/pull/8401),
[#8395](https://github.com/apache/dubbo/pull/8395),
[#8415](https://github.com/apache/dubbo/pull/8415),
[#8406](https://github.com/apache/dubbo/pull/8406),
[#8411](https://github.com/apache/dubbo/pull/8411),
[#8418](https://github.com/apache/dubbo/pull/8418),
[#8439](https://github.com/apache/dubbo/pull/8439),
[#8404](https://github.com/apache/dubbo/pull/8404),
[#8443](https://github.com/apache/dubbo/pull/8443)


## Maven依赖变化
- 移除依赖: org.eclipse.collections:eclipse-collections
- 移除依赖: com.google.guava:guava
- jetty: 9.4.11.v20180605 -> 9.4.43.v20210629
- apollo client: 1.1.1 -> 1.8.0
- snakeyaml: 1.20 -> 1.29
- tomcat embed: 8.5.31 -> 8.5.69
- nacos client: 2.0.0 -> 2.0.2
- swagger: 1.5.19 -> 1.5.24
- hessian_lite: 3.2.8 -> 3.2.11

0 comments on commit 05004ca

Please sign in to comment.