Apache Dubbo 3.0.4 Release: New Features, Bug Fixes, Optimizations, and Stability Improvements
Apache Dubbo 3.0.4, a high‑performance lightweight Java RPC framework, introduces several new capabilities such as logger disabling, background module startup, multi‑subscription extensions, native Dubbo 3.0.4 support, streamObserver cancellation, message compression, cache attributes, Maven plugin integration, and adds ExtensionClassLoaderPackages, while also fixing numerous bugs, optimizing code paths, and enhancing overall stability.
Apache Dubbo 3.0.4 has been released. Dubbo is a high‑performance, lightweight open‑source Java RPC framework that provides interface‑based remote method invocation, intelligent fault‑tolerance and load balancing, and automatic service registration and discovery.
New Features
Add logger disabling option ( ExtensionLoader support for ExtensionClassLoaderPackages )
Support background module startup
Support multi‑subscription service extensions
Support native Dubbo 3.0.4
Support cancellation of streamObserver
Triple transport adds message compression
Support cache attribute in model fields
Run Dubbo native projects via Maven plugin
Add ExtensionClassLoaderPackages to ExtensionLoader
Bug Fixes
Fix appendAttribute key issue
Fix RpcContext overwrite problem
Fix StringIndexOutOfBoundsException in addParam()
Add null‑check in decode(Channel, InputStream)
Fix IllegalStateException and NPE in doOverrideIfNecessary
Add Zookeeper node data creation event check
Fix service start failure when multiple protocols with ports are used
Fix concurrent access to urlInvokerMap
Fix delayed injection of Deployer State in beans
Release CountDownLatch in ZookeeperRegistry and add UT
Fix serialVersionUID issues
Fix concurrent bean creation errors
Restore Servlet page API
Release CountDownLatch properly
Fix configuration view unavailable during subscription
Fix Class.forName when publishing ServiceDefinition
Socks proxy filters local addresses
Fix delayed export not applicable to ServiceConfig
Fix NPE in MergeableClusterInvoker
Add destroy() to close Tomcat server ports
Set client to null in LazyConnectExchangeClient close method
Fix telnet registry cast to AbstractRegistry error
Add volatile to serviceInstance in AbstractServiceDiscovery
Fix exception when address is empty in router
Reset ServiceModel in Injvm Invoke
Fix mesh routing URL parameter retrieval
Fix various exception messages
Restore Kryo serialization JDK detection
Fix duplicate ApplicationConfig errors
Cover removeFailedRegisteredTask and removeFailedSubscribedTask in testRecover()
Fix ConfigManagerTest typo
Fix concurrent SPI adaptive class creation
Fix early Listener initialization
Add ClosedChannelException check during shutdown
Correct parameter types in NotifyService callback
Start module check in applicationDeployer
Fix multi‑instance migration report
Fix NPE in get configuration
Add check for localMetadataService.blockUntilUpdated latch
Check applicationModel destroy state at blockUntilUpdated
Remove default implementation of RegistryFactory extension point
Fix instance update failure
Fix Tomcat port already in use causing process stop failure
Optimizations
Add ScopeModel to local calls
Fix field range optimization
Optimize parts of Dubbo metadata module
Suppress initial replaceWithLazyClient() warning
Unify error messages
Extract constants from MigrationRule
Improve MigrationRuleListener#destroy logic
Add ClassLoaderResourceLoader to cache ClassLoader resources
Timeout stream closure
Significantly reduce UnitTest execution time
Improve unit test efficiency
Cancel TimeoutCheckTask when DefaultFuture is cancelled
Remove meaningless code
Attempt class loading from interface parameters
Add ModuleModel qualifier for SpringBean Initializer
Convert TimeoutException when invoking timeout
Refactor MetricsConfig
Cancel TimeoutCheckTask when DefaultFuture2 is cancelled
Add reset frame handler
Optimize three‑server frame error handling
Optimize multiple code sections
Remove duplicate URLs in MultipleRegistry
Optimize generic calls in Gson format
MultiMessageHandler for caught() throwable
Refactor Injvm calls
Replace LinkedHashMap with HashMap in calls
Destroy executor and improve tests
Remove SimpleChannelInboundHandler
Optimize hash load‑balancing consistency with new algorithm
Add latch to wait for registration completion
Delete unused client handlers
Ignore generic calls for Injvm call copies
Inject applicationModel into TripleHttp2Protocol via ScopeModelAware
Refactor AbstractRegistry
Change local callers from Collections.singletonList to ArrayList
Add serializingExecutor
Send and delete logic no longer estimates header size
Add health service cancellation handler
Delete method‑level connection config
Extract constants and fix typos
Replace latch with future
Support deep copy of default service instances
Add issue template
Rebuild InstanceAddressURL to ServiceConfigURL for LazyConnectExchangeClient
Fill ListBoolMatch code and optimize DubboAttachmentMatch
Format ternary tuples
Manage global resources and executor services, fix ZK client connection
Add deprecated descriptions
Stability Improvements
Add annotation test case to ServiceDefinitionBuilderTest and remove unused parameters
Add unit tests for MetadataReportInstance and AbstractServiceNameMapping
Enhance unit tests for FailoverClusterInvoker, FailbackClusterInvoker, FailfastClusterInvokerTest, ForkingClusterInvoker
Add ZookeeperMetadataReportTest
Add ServiceInstanceMetadataUtilsTest
Add tests for CuratorFrameworkUtils and AbstractServiceDiscoveryFactory
Fix testInvoke_retryTimes_withBizException
Add tests for StandardMetadataServiceURLBuilder
Add several AvailableClusterInvoker unit tests
Add tests and optimizations (generic)
Patch shutdown hooks test
Enhance mergeable cluster call tests
Validate remote URL references
Add tri extension configuration for MultiplexProtocolConnectionManagerTest
Add unit tests for Http2ProtocolDetector and NettyEventLoopFactory
Fix AbstractMetadataReportTest and AbstractMetadataReportFactoryTest
Add unit tests for ChannelBuffers and ChannelBufferFactory
Add unit tests for dubbo‑registry‑nacos
Laravel Tech Community
Specializing in Laravel development, we continuously publish fresh content and grow alongside the elegant, stable Laravel framework.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.