Dubbo v2.7.4 Release Notes

Release Date: 2019-09-24 // about 2 months ago
  • ✨ Enhancement

    • ✨ Enhance ProtobufTypeBuilder support generate type definition which contains Bytes List or Bytes Map. #5083
    • Using the ID of Dubbo Config as the alias of Bean. #5094
    • 🏷 tag router supports anyhost. #4431
    • ⚡️ optimize generic invoke. #4076
    • dubbo zookeeper registry too slow #4828
    • 👉 use consul with group and version. #4755
    • 👍 qos support host config. #4720
    • migrate http protocol #4781
    • ✅ Some unit test optimization. #5026 #4803 #4687

    🛠 Bugfixes

    • Apollo namespace optimization. #5105
    • Simplify dubbo-common transitive dependencies. #5107
    • ✂ Delete 'config.' prefix for url generated from ConfigCenterConfig. #5001
    • 🛠 fix set generic method error. #5079
    • ➕ Add support for overriding Map properties in AbstractConfig.refresh. #4882
    • 🛠 Fix travis javax.ex dependency issue. (unit test)
    • 🛠 Fix: ExtensionLoader load duplicate filter,no log or exception. #4340
    • ⏱ When the provider interrupts abnormally, the consumer cannot return quickly and still waits for the timeout to end. #4694
    • 🛠 Fix register config not take effect because of url simplified。 #4397
    • 📇 Don't support metadata for generic service. #4641
    • Avoid resize in ClassUtils.java. #5009
    • 0️⃣ default attribute in dubbo:registry doesn't work as expected. #4412
    • 👉 make RegistryDirectory can refresh the invokers when providers number become 0 when using nacos registry. #4793
    • Multiple @reference annotations only have one effect #4674
    • 🛠 Fix RpcContext.getContext().getRemoteApplicationName() returns null #4351
    • 🔒 Security issue: upgrade fastjson version to 1.2.60. #5018
    • nacos-registry:serviceName split error #4974
    • 📇 AbstractConfig.java-getMetaData set default depend on getmethod sequence #4678
    • 🛠 fix protocol register set false not work. #4776
    • 🛠 Fix: In Rest protocol, the limitation of Dubbo-Attachments. #4898
    • The logic of org.apache.dubbo.config.MonitorConfig#isValid is incorrect #4892
    • protostuff return stackoverflow and other error msg #4861
    • 🛠 fix method parameter bean generation. #3796
    • replace hardcode with regex pattern #4810
    • 🛠 Fix warm up issue when provider's timestamp is bigger than local machine's timestamp. #4870
    • 🛠 Fix use generic invocation via API , lost #4238 ion" value #4784
    • provider服务端配置serialization="kryo"自定义异常类抛错时消费端捕获不到. #4238
    • 🛠 fix StringUtils#isBlank #4725
    • 👻 when the interfaceName of the Reference annotation has duplicated,the exception is puzzled #4160
    • spirng context中存在匿名bean时,dubbo初始化抛npe #
    • ➕ add Thread ContextClassLoader #4712
    • 🛠 Fix judgment ipv4 address #4729
    • The compilation of static methods should be excluded when generating the proxy. #4647
    • check EOF of inputstream in IOUtils.write #4648

Previous changes from v2.7.3

  • 2.7.3

    Compatibility

    ♻️ In order to unify the implementation of service governance rules in different configuration centers, such as Zookeeper, Nacos, Etcd, etc., we have refactored some implementations of the configuration center compared to 2.7.0~2.7.2.

    • ⬆️ For users who are using 2.7.x service governance rules, please check the new implementation before upgrading to 2.7.3, make sure all rules have a copy under the new storage path to ensure a smooth upgrade.
    • ⬆️ For users who have upgraded the 2.7.x version but are not using any service governance rules, you can upgrade directly.
    • 🚀 For users using 2.6.x and lower versions can upgrade directly. But make sure you follow the following instructions Upgrading from 2.6.x to 2.7.x

    🔄 Change List

    👍 Asynchronous support

    • Unified asynchronous and synchronous callback process, exception scenario triggers onError callback, #4401.
    • Performance degradation caused by CompletableFuture.get() in JDK1.8 environment, #4279.

    🔧 Configuration Center

    • ConfigCenter custom namespace does not take effect, #4411
    • Unify the models implemented by several configuration centers such as Zookeeper, Nacos, and Etcd. Please refer to the description for possible incompatibility issues, #4441
    • Adjust Override Coverage Rule Center Priority: Service Level > Application Level, #4175.

    2.6.x compatibility

    • Support Zipkin tracing feature provided by Zipkin officially, #3728, #4471
    • DubboComponentScan supports simultaneous scanning of annotations under the com.alibaba.* and org.apache.* packages, #4330

    🔧 The Nacos Registration Center only subscribes to the address list and no longer subscribes to configuration information, #4454.

    👌 Support to read the environment configuration from the specified location, which can be specified by -D or OS VARIABLE. Please refer to automatically loading environment variables

    🛠 Some other bugfixes, #4346 #4338 #4349 #4377

    升级注意事项

    为了统一不同配置中心(如Zookeeper、Nacos、Etcd等)对于服务治理规则的实现,我们对2.7.0以来的配置中心的部分实现进行了重构。

    • 📄 对于已使用了2.7.x新版本服务治理规则的用户,升级2.7.3之前请先查看新版实现,确保已有规则在新路径下已经存在拷贝,以确保平滑升级。
    • 对于已经升级了2.7.x版本,但是未使用服务治理规则的用户,此次升级不受影响。
    • 🚀 对于2.6.x及以下版本用户不受此次变更影响,升级步骤请参见升级到2.7.x的说明文档

    🔄 Change List

    异步支持相关

    • 统一异步和同步的回调流程,异常场景触发onError回调 #4401
    • CompletableFuture.get()在JDK1.8环境下带来的性能下降问题 #4279

    配置中心相关

    • ConfigCenter自定义namespace不生效的问题 #4411
    • 统一Zookeeper、Nacos、Etcd等几个配置中心实现的模型,可能带来的不兼容性问题请参见说明。相关修改:#4388
    • 调整Override覆盖规则中心优先级:服务级别 > 应用级别 #4175

    2.6.x兼容性

    • 兼容zipkin官方提供的基于Dubbo-2.6 API的集成 #3728, #4471
    • DubboComponentScan支持同时扫描 com.alibaba.*org.apache.* 两个包下的注解 #4330

    Nacos注册中心只订阅地址列表,不再订阅配置信息 #4454

    🔧 支持从指定位置读取环境配置,可通过-D或OS VARIABLE指定,具体请参见使用说明

    🛠 其他一些bugfix,#4346 #4338 #4349 #4377