Skip to content

v3.3.2

Choose a tag to compare

@AlexStocks AlexStocks released this 01 Aug 08:49
· 3 commits to main since this release
cdda54b

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/config package has been removed. Applications that imported it directly must migrate to the instance/options APIs and configuration types under global. The root compatibility bridge has also been removed. #3372 #3448 #3449
  • Direct users of the low-level triple_protocol.Client API must pass the RPC method explicitly. The higher-level client.Client and 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-json and bean generalizers, 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 CustomConfig and InstanceOptions for 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 traceparent values 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.arguments indexes 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.URL cloning, 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-triple and protoc-gen-triple-openapi 3.3.2, dubbogo-cli 1.0.1, and imports-formatter 1.0.11. The Triple generator now emits the modern NewXxx and RegisterXxxHandler API style by default, records generator and protoc versions in generated files, and retains legacy output behind useOldVersion=true. #3585
  • Rework CLI scaffolds to generate protobuf and Triple sources through make proto-gen instead 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