v3.3.2
3.3.2
Summary
Apache Dubbo-go 3.3.2 is a production-readiness release focused on API consolidation, Triple protocol capabilities, application-level metadata, service governance, concurrency safety, and release tooling. It completes the removal of the legacy config package, moves the project baseline to Go 1.25, expands generic invocation and HTTP-facing Triple features, refreshes generated-project workflows, and fixes multiple races, stale-snapshot issues, and resource leaks.
Breaking Changes and Upgrade Notes
- Go 1.25 is now required. The module and project toolchain have moved from Go 1.24 to Go 1.25. #3469
- The legacy
dubbo.apache.org/dubbo-go/v3/configpackage has been removed. Applications that imported it directly must migrate to the instance/options APIs and configuration types underglobal. The root compatibility bridge has also been removed. #3372 #3448 #3449 - Direct users of the low-level
triple_protocol.ClientAPI must pass the RPC method explicitly. The higher-levelclient.Clientand generated-client APIs remain unchanged. #3086 - The Hystrix filter has moved to
apache/dubbo-go-extensions. Existing users should import the extension implementation and keep using the registered filter name. #3253 - The legacy gRPC and Dubbo3 protocol implementations and the IDL-mode switch are now deprecated in preparation for a future removal. #3469
New Features
- Expand generic invocation support. Triple generic calls can now interoperate without generated stubs, with new
protobuf-jsonandbeangeneralizers, typed invocation, class metadata, and exception-class handling. #3154 #3170 #3171 #3174 #3175 #3183 - Enhance Triple for HTTP and cloud-native workloads. This release adds CORS, REST OpenAPI support, stateful HTTP/3 negotiation with probe and cooldown, mounting existing HTTP handlers on a Triple listener, and unary response header/trailer capture through call options. #3090 #3280 #3281 #3301 #3443 #3446
- Add Kubernetes health probes. Applications can expose liveness, readiness, and startup checks. #3213
- Rework graceful shutdown. The shutdown lifecycle now coordinates consumers, providers, registries, and acknowledgements through a unified implementation and configurable shutdown state. #3235 #3293 #3386 #3388
- Strengthen application-level metadata. The release completes the local metadata lifecycle, makes metadata state concurrency-safe, clarifies metadata-report selection, canonicalizes revisions, adds renewal and garbage collection, and hardens remote loading with report-to-RPC fallback and conflict-aware service-to-application mapping updates. #3357 #3362 #3367 #3369 #3370 #3371 #3373 #3395
- Improve routing and governance. Static router configuration injection, script-router registration, router-chain snapshot caching, and additional routing context are now supported. #3215 #3224 #3252 #3305
- Improve observability. A context-aware logger interface integrates trace fields with Logrus and Zap, logger initialization now synchronizes the public Dubbo-go facade, and Triple metrics distinguish additional RPC failure conditions. #3189 #3195 #3345
- Expose snapshots of
CustomConfigandInstanceOptionsfor applications that need to inspect resolved instance configuration. #3481
Bug Fixes and Reliability
- Fix races across URL cloning, shared extension registries, metadata state, protocol lifecycle, Nacos and directory state, consistent hashing, round-robin load balancing, sticky invokers, and service-discovery listeners. #3160 #3264 #3265 #3269 #3270 #3271 #3307 #3317 #3367 #3435 #3439 #3442
- Respect cancellation and timeouts while dialing Triple HTTP/2 connections and validate Getty server TLS configuration before enabling SSL. #3156 #3165
- Preserve Go/Java Triple interoperability with case-insensitive method routing that does not duplicate or pollute service metadata. #3277
- Fix routing correctness for context attachments, provider tags, application names and URL attributes, affinity-router initialization, and invalid script-router configuration updates. #3164 #3185 #3208 #3216 #3256 #3417
- Prevent panics during concurrent invoker destruction and avoid a server startup deadlock caused by holding the server lock while blocking in
Serve. #3184 #3238 - Reconcile initial Nacos and Polaris subscription state so stale providers are removed when current registry snapshots arrive. #3479 #3482
- Fix retained URL state and clean up pending remoting responses on request errors and heartbeat timeouts to prevent memory growth. #3282 #3440
- Preserve multiple Nacos providers and routable environment metadata, keep application tags in
MetadataInfo, and retain Apollo context paths when building configuration-center addresses. #3309 #3331 #3400 - Preserve OpenTelemetry
traceparentvalues and fix the metadata supplier type mismatch that broke trace propagation. #3285 #3433 - Make Triple stream response closure non-blocking and harden protocol initialization, metadata headers, trailer attachments, and Getty write error handling. #3307 #3418 #3428 #3434 #3466
- Fix generic invocation of variadic methods and add warnings for unsupported or ambiguous variadic RPC definitions. #3284 #3294
- Prevent JSON-RPC nil-pointer panics for unsupported content types and missing exporters. #3298 #3312
- Make consistent hashing use the configured
hash.argumentsindexes and accept non-string request arguments without panicking. #3430 #3432 - Add bounded exponential-backoff retries for Nacos subscriptions and failback cluster retries. #3178 #3180
Performance and Engineering
- Refactor the low-level Triple client from one client per method to one client per service, reducing managed client instances from O(methods) to O(1) per service. #3086
- Reduce allocations in
common.URLcloning, string rendering, equality checks, map conversion, and key construction. #3399 #3403 #3404 #3412 #3488 - Reduce temporary allocations in load-balancing and service-discovery hot paths, and add fast paths for Triple content-type canonicalization. #3410 #3414 #3415 #3416
- Remove the Viper dependency and continue decoupling runtime components from legacy configuration internals. #3323 #3449
- Add a Linux/RISC-V build check and update security-sensitive and networking dependencies. #3244 #3368 #3467 #3470
Tooling
- Refresh the companion tool versions for the release:
protoc-gen-go-tripleandprotoc-gen-triple-openapi3.3.2,dubbogo-cli1.0.1, andimports-formatter1.0.11. The Triple generator now emits the modernNewXxxandRegisterXxxHandlerAPI style by default, records generator andprotocversions in generated files, and retains legacy output behinduseOldVersion=true. #3585 - Rework CLI scaffolds to generate protobuf and Triple sources through
make proto-geninstead of embedding generated files. New projects use Go 1.25 with the stable Dubbo-go v3.3.1 dependency, treat wrapped EOF as normal stream completion, and are compiled end to end in Linux CI. #3585 #3587
Documentation and CI
- Document Triple header and trailer APIs and the migration path for reading generic-call response attachments; refresh filter documentation and repair outdated README links. #3158 #3365 #3380 #3381 #3447
- Refresh the English and Chinese documentation for maintained tools, update the current configuration schema and example, and remove the obsolete variadic-RPC contract checker. #3585
- Add default protection rules for the default and release branches, upgrade the Codecov action, and add the Linux/RISC-V build workflow. #3325 #3375 #3470
Contributors
Special thanks to all contributors to Apache Dubbo-go 3.3.2:
@04cb
@Aetherance
@Aias00
@Alanxtl
@AlexStocks
@AsperforMias
@CAICAIIs
@chaojixinren
@eye-gu
@fallintoplace
@HarshMehta112
@HGD-coder
@jieguo-coder
@lesbass
@mochengqian
@MrSibe
@nagisa-kunhah
@nanjiek
@NeverENG
@Oxidaner
@phpcyy
@Qiao-yq
@Saramanda9988
@Similarityoung
@Snow-kal
@Tsukikage7
@Vanillaxi
@whimc1
@wyf027
@XnLemon
@xxs588
@yangpixi
@ywxzm03
@zbchi
Full Changelog: v3.3.1...v3.3.2