This article is more than one year old. Older articles may contain outdated content. Check that the information in the page has not become incorrect since its publication.

Dubbo Java 3.0.2 Release Announcement

Apache Dubbo 3.0.2 Release Announcement

New Features

  • Support for exposing generalized services via the @DubboService annotation
  • XML configuration support for the metadata center with protocol and port attributes
  • Compatibility with versions above curator5
  • Point-to-point calls support wildcard matching, allowing one provider address to correspond to multiple interfaces
  • Dynamic configuration added for application-level service discovery to override rules
  • Provides a switch for dynamic configuration override rules for providers, allowing them to ignore dynamic configuration and not re-expose
  • Supports native image
  • Provides a switch to cancel the execution of the shutdown hook
  • Supports service governance rules for Kubernetes Mesh
  • Netty connection supports SSL configuration

Bug Fixes

  • DubboBootStrap start duplication causes dynamic configuration to be overridden
  • Dynamic configuration rules remain effective after deletion
  • NullPointerException thrown when exposing triple protocol
  • ConfigCenterConfig.setAddress method overwrites the username attribute
  • DefaultFuture.closeChannel destroys consumer-side thread pool
  • TripleClientHandler.writeRequest throws NullPointerException
  • NullPointerException thrown when parsing 3.0 migration rules exception
  • Order issue with Activated Extensions
  • URLAddress.parse method has issues parsing ipv6 addresses
  • User-defined parameters in properties configuration are ineffective
  • Configuration overlap issue when using API model and Spring model simultaneously
  • Application-level service discovery ineffective at startup
  • Nacos registry fails to dynamically detect changes in the number of providers
  • ${dubbo.application} cannot be resolved by the Spring placeholder rules in XML files
  • Issue obtaining the order of instance parameters, first obtaining instance-level parameters, then interface-level parameters
  • Exception thrown when registering application startup listener if DubboConfigBeanInitializer does not exist
  • Mock parameters containing ‘:’ or ‘=’ characters are ineffective
  • NullPointerException when deleting Mesh rules

Optimization

  • Catch exceptions in RemovalTask to ensure semaphore can be released
  • Check for duplicate ReferenceConfig/ServiceConfig using unique service names
  • Optimize random number generation performance
  • If users use interface-level service discovery, do not publish application-interface mapping data to the metadata center
  • Use StringBuilder#append(Char) to improve performance
  • Ensure the order of interfaces in GRPC compiled class files
  • Optimize reference bean placeholder resolution
  • Utilize CompletableFuture#get(long, TimeUnit) in MergeableClusterInvoker for performance improvement
  • Built-in service MetadataService does not delay exposure
  • Optimize the startup logic of ConfigBean and Bootstrap
  • Optimize logic for checking duplicate Configs
  • Use ring data structures for registration notifications
  • Optimize initialization logic for dynamic configurations
  • ConfigManager uses ConcurrentHashMap to remove locking logic, improving equals and toString performance
  • Optimize MetadataInfo equals method and Instance Listener
  • Optimize asynchronous export/refer logic
  • Use TreeSet data structure to ensure the order of application names during application-level service discovery
  • First ten notifications from RegistryNotifier are not delayed
  • dubbo-compile compiles using a new format to generate stubs
  • Mesh service governance rules unify grouping and other rule groupings in the dynamic configuration center, changing DEFAULT_GROUP to dubbo
  • When using nacos as a registration center, parameters can be used in the registration center address to change the grouping in nacos
  • When calculating ServiceInfo reversion, remove runtime parameters to avoid generating multiple revisions
  • Nacos registry wraps exceptions as RpcException on throw
  • Prevent dynamic configuration center from dynamically modifying some permission parameters
  • Optimize initialization process of Config Bean and ensure compatibility with spring 3.x/4.1.x
  • Bootstrap.start method is reentrant, exposing or referencing new services
  • Add classes in the org.apache.dubbo package to the whitelist by default
  • Ensure the uniqueness of generated Config Id and check for previous existence
  • Javaassist compatible with changing override declaration fields
  • Refactor check logic during decoding, throwing exceptions when providers corresponding to path and version are not found
  • When ApplicationModel is null, compatible with adaptive extensions

Code Quality Improvements

Thanks for the contributions that enhance the stability of Apache Dubbo.

#8111, #8147, #8164, #8177, #8180, #8161, #8183, #8205, #8173, #8219, #8228, #8232, #8230, #8236, #8260, #8262, #8252, #8246, #8208, #8278, #8267, #8277, #8291, #8296, #8302, #8175, #8319, #8309, #8336, #8332, #8328, #8355, #8396, #8401, #8395, #8415, #8406, #8411, #8418, #8439, #8404, #8443

Maven Dependency Changes

  • Removed dependency: org.eclipse.collections:eclipse-collections
  • Removed 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