AlexStocks commented on code in PR #3588: URL: https://github.com/apache/dubbo-go/pull/3588#discussion_r3694880082
########## CHANGELOG.md: ########## @@ -1,3 +1,106 @@ +## 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](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3372) [#3448](https://github.com/apache/dubbo-go/pull/3448) [#3449](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3253) +- The legacy gRPC and Dubbo3 protocol implementations and the IDL-mode switch are now deprecated in preparation for a future removal. [#3469](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3154) [#3170](https://github.com/apache/dubbo-go/pull/3170) [#3171](https://github.com/apache/dubbo-go/pull/3171) [#3174](https://github.com/apache/dubbo-go/pull/3174) [#3175](https://github.com/apache/dubbo-go/pull/3175) [#3183](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3090) [#3280](https://github.com/apache/dubbo-go/pull/3280) [#3281](https://github.com/apache/dubbo-go/pull/3281) [#3301](https://github.com/apache/dubbo-go/pull/3301) [#3443](https://github.com/apache/dubbo-go/pull/3443) [#3446](https://github.com/apache/dubbo-go/pull/3446) +- **Add Kubernetes health probes.** Applications can expose liveness, readiness, and startup checks. [#3213](https://github.com/apache/dubbo-go/pull/3213) +- **Rework graceful shutdown.** The shutdown lifecycle now coordinates consumers, providers, registries, and acknowledgements through a unified implementation and configurable shutdown state. [#3235](https://github.com/apache/dubbo-go/pull/3235) [#3293](https://github.com/apache/dubbo-go/pull/3293) [#3386](https://github.com/apache/dubbo-go/pull/3386) [#3388](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3357) [#3362](https://github.com/apache/dubbo-go/pull/3362) [#3367](https://github.com/apache/dubbo-go/pull/3367) [#3369](https://github.com/apache/dubbo-go/pull/3369) [#3370](https://github.com/apache/dubbo-go/pull/3370) [#3371](https://github.com/apache/dubbo-go/pull/3371) [#3373](https://github.com/apache/dubbo-go/pull/3373) [#3395](https://github.com/apache/dubbo-go/pull/3395) +- **Improve routing and governance.** Static router configuration injection, script-router registration, router-chain snapshot caching, and additional routing context are now supported. [#3215](https://github.com/apache/dubbo-go/pull/3215) [#3224](https://github.com/apache/dubbo-go/pull/3224) [#3252](https://github.com/apache/dubbo-go/pull/3252) [#3305](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3189) [#3195](https://github.com/apache/dubbo-go/pull/3195) [#3345](https://github.com/apache/dubbo-go/pull/3345) +- Expose snapshots of `CustomConfig` and `InstanceOptions` for applications that need to inspect resolved instance configuration. [#3481](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3160) [#3264](https://github.com/apache/dubbo-go/pull/3264) [#3265](https://github.com/apache/dubbo-go/pull/3265) [#3269](https://github.com/apache/dubbo-go/pull/3269) [#3270](https://github.com/apache/dubbo-go/pull/3270) [#3271](https://github.com/apache/dubbo-go/pull/3271) [#3307](https://github.com/apache/dubbo-go/pull/3307) [#3317](https://github.com/apache/dubbo-go/pull/3317) [#3367](https://github.com/apache/dubbo-go/pull/3367) [#3435](https://github.com/apache/dubbo-go/pull/3435) [#3439](https://github.com/apache/dubbo-go/pull/3439) [#3442](https://github.com/apache/dubbo-go/pull/3442) +- Respect cancellation and timeouts while dialing Triple HTTP/2 connections and validate Getty server TLS configuration before enabling SSL. [#3156](https://github.com/apache/dubbo-go/pull/3156) [#3165](https://github.com/apache/dubbo-go/pull/3165) +- Preserve Go/Java Triple interoperability with case-insensitive method routing that does not duplicate or pollute service metadata. [#3277](https://github.com/apache/dubbo-go/pull/3277) +- Fix routing correctness for context attachments, provider tags, application names and URL attributes, affinity-router initialization, and invalid script-router configuration updates. [#3164](https://github.com/apache/dubbo-go/pull/3164) [#3185](https://github.com/apache/dubbo-go/pull/3185) [#3208](https://github.com/apache/dubbo-go/pull/3208) [#3216](https://github.com/apache/dubbo-go/pull/3216) [#3256](https://github.com/apache/dubbo-go/pull/3256) [#3417](https://github.com/apache/dubbo-go/pull/3417) +- Prevent panics during concurrent invoker destruction and avoid a server startup deadlock caused by holding the server lock while blocking in `Serve`. [#3184](https://github.com/apache/dubbo-go/pull/3184) [#3238](https://github.com/apache/dubbo-go/pull/3238) +- Reconcile initial Nacos and Polaris subscription state so stale providers are removed when current registry snapshots arrive. [#3479](https://github.com/apache/dubbo-go/pull/3479) [#3482](https://github.com/apache/dubbo-go/pull/3482) +- Fix retained URL state and clean up pending remoting responses on request errors and heartbeat timeouts to prevent memory growth. [#3282](https://github.com/apache/dubbo-go/pull/3282) [#3440](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3309) [#3331](https://github.com/apache/dubbo-go/pull/3331) [#3400](https://github.com/apache/dubbo-go/pull/3400) +- Preserve OpenTelemetry `traceparent` values and fix the metadata supplier type mismatch that broke trace propagation. [#3285](https://github.com/apache/dubbo-go/pull/3285) [#3433](https://github.com/apache/dubbo-go/pull/3433) +- Make Triple stream response closure non-blocking and harden protocol initialization, metadata headers, trailer attachments, and Getty write error handling. [#3307](https://github.com/apache/dubbo-go/pull/3307) [#3418](https://github.com/apache/dubbo-go/pull/3418) [#3428](https://github.com/apache/dubbo-go/pull/3428) [#3434](https://github.com/apache/dubbo-go/pull/3434) [#3466](https://github.com/apache/dubbo-go/pull/3466) +- Fix generic invocation of variadic methods and add warnings for unsupported or ambiguous variadic RPC definitions. [#3284](https://github.com/apache/dubbo-go/pull/3284) [#3294](https://github.com/apache/dubbo-go/pull/3294) +- Prevent JSON-RPC nil-pointer panics for unsupported content types and missing exporters. [#3298](https://github.com/apache/dubbo-go/pull/3298) [#3312](https://github.com/apache/dubbo-go/pull/3312) +- Make consistent hashing use the configured `hash.arguments` indexes and accept non-string request arguments without panicking. [#3430](https://github.com/apache/dubbo-go/pull/3430) [#3432](https://github.com/apache/dubbo-go/pull/3432) +- Add bounded exponential-backoff retries for Nacos subscriptions and failback cluster retries. [#3178](https://github.com/apache/dubbo-go/pull/3178) [#3180](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3086) +- Reduce allocations in `common.URL` cloning, string rendering, equality checks, map conversion, and key construction. [#3399](https://github.com/apache/dubbo-go/pull/3399) [#3403](https://github.com/apache/dubbo-go/pull/3403) [#3404](https://github.com/apache/dubbo-go/pull/3404) [#3412](https://github.com/apache/dubbo-go/pull/3412) [#3488](https://github.com/apache/dubbo-go/pull/3488) +- Reduce temporary allocations in load-balancing and service-discovery hot paths, and add fast paths for Triple content-type canonicalization. [#3410](https://github.com/apache/dubbo-go/pull/3410) [#3414](https://github.com/apache/dubbo-go/pull/3414) [#3415](https://github.com/apache/dubbo-go/pull/3415) [#3416](https://github.com/apache/dubbo-go/pull/3416) +- Remove the Viper dependency and continue decoupling runtime components from legacy configuration internals. [#3323](https://github.com/apache/dubbo-go/pull/3323) [#3449](https://github.com/apache/dubbo-go/pull/3449) +- Add a Linux/RISC-V build check and update security-sensitive and networking dependencies. [#3244](https://github.com/apache/dubbo-go/pull/3244) [#3368](https://github.com/apache/dubbo-go/pull/3368) [#3467](https://github.com/apache/dubbo-go/pull/3467) [#3470](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3585) [#3587](https://github.com/apache/dubbo-go/pull/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](https://github.com/apache/dubbo-go/pull/3158) [#3365](https://github.com/apache/dubbo-go/pull/3365) [#3380](https://github.com/apache/dubbo-go/pull/3380) [#3381](https://github.com/apache/dubbo-go/pull/3381) [#3447](https://github.com/apache/dubbo-go/pull/3447) +- Add dependency lock files to generated CLI application and demo scaffolds. [#3483](https://github.com/apache/dubbo-go/pull/3483) Review Comment: 已在 fa2eaebc6e1fd79f1c912fc3b979e95044f3ed35 删除被 #3585 撤销的 #3483 锁文件说明,并把 PR 描述中的唯一链接计数更新为 105。验证包括最终 develop 不存在两个模板 go.sum/gosum.go、全部剩余链接属于发布范围,以及 Release/Discussion 草稿不存在同类过期表述。 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
