ayush00git opened a new pull request, #3752:
URL: https://github.com/apache/fory/pull/3752
## What
Follow-up to the post-merge review on #3698, resolving the five inline
comments on the Go gRPC generator and integration test.
- **Stateless codec / single owner.** `CodecV2` is now `struct{}` and reuses
the generated package thread-safe `getFory()` runtime via
`Serialize`/`Deserialize`, instead of taking an injected `*fory.Fory`.
`NewXxxClient` no longer takes a Fory. This keeps one registration owner and is
safe for concurrent RPCs (plain Go `Fory` reuses internal buffers/state).
- **Server interop without global state.** The Go peer uses
`grpc.ForceServerCodecV2(CodecV2{})` instead of mutating grpc-go's
process-global `proto` codec registry, and no longer constructs its own
non-thread-safe Fory. grpc-go's `getCodec` returns the forced codec regardless
of content-subtype, so Java clients sending the default content-type are still
decoded by Fory.
- **Collision checks.** Added Go gRPC method/service name collision checks
(PascalCase folds `Foo`/`foo`), mirroring the Java/Python/Rust generators.
- **No duplicate emission.** `GoGenerator.generate()` no longer emits
service companions; the common CLI path already calls `generate_services()`, so
this removes the second owner of `_grpc.go`.
## Verification
- Compiler suite: 359 passed.
- Go: `go build` / `go vet` clean; `go build -race` clean.
- Concurrency: built with `-race`, ran 12 concurrent clients against one
server under `GORACE=halt_on_error=1`, exercising all four streaming modes -> 0
failures, 0 data races on server or client.
- Added/updated tests: Go arm in `test_grpc_method_name_collisions_fail`,
new `test_go_grpc_service_type_collision_fails`, and
`test_go_grpc_service_codegen` updated for the stateless codec.
Follow-up to #3698.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
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]