feat: add multi-cluster contract routing#11
Conversation
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 804178c752
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: daa86f7843
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Fixed the intermittent Validation: @codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4eaa1380f5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Fixed the three current review findings in 603fc67:
Validation:
@codex review |
|
Follow-up for 7f332c7:
The remaining replacement-type-collision suggestion is addressed on its exact thread: valid coordinator state cannot reach it because ContractIds are globally unique at registration and replacement preserves the ID set. Validation: @codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7f332c7c0d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Addressed the current Codex findings in 142088c:
Validation:
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 142088ce5e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Addressed the current Codex findings in 8df0956:
Validation:
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8df09569a0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Addressed the current Codex findings in 667e4f1:
Regression coverage includes collectible unconfigured route manifests, structured dynamic-registration results, and stopped accessor behavior. Validation:
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 667e4f1491
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Addressed the current Codex findings in d4f52f1:
Regression coverage exercises a child connect completing after stop, stopped dynamic registration, and one-shot one-endpoint collections. Validation:
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d4f52f14ac
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Addressed the current Codex findings in a3981f3:
Regression coverage verifies a builder uses updated endpoint data after a preflight build and that replacement after shutdown remains structured. Validation:
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a3981f3e4e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
本轮已集中处理最新三条反馈(当前头提交
本地验证:Release 构建 0 警告/0 错误;目标单测 15/15;完整解决方案测试 580/580;CI 同款 Quick 226/226;NativeAOT 烟测通过( @codex review |
|
Codex Review: Didn't find any major issues. 🎉 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Closes #10
Summary
Implements the 0.7.10 multi-cluster client coordinator. A contract is routed to exactly one named child
SharpLinkClientwhenGet<TContract>()creates its proxy; the proxy then calls that child directly without coordinator lookup or cluster metadata on the RPC path.Issue mapping
SharpLinkMultiClusterClientBuilder,SharpLinkMultiClusterOptions, andSharpLinkMultiClusterClient; child slots retain ordinary fixed, endpoint-cluster, and resolver configurations. Unit coverage:SharpLinkMultiClusterClientTests.SharpLinkMultiClusterClient; static route and proxy-routing tests verify one-time contract selection and no child leakage.SharpLinkClusterContractAssemblyAttribute,SharpLinkGeneratedClusterRouteManifest, and generator analysis/emission; generator tests cover valid, duplicate, conflicting, and invalid declarations.SharpLink.AotSmokeroutes two independent static contracts toordersandpayments.ISharpLinkMultiClusterClientAccessor, accessor implementation, hosted service, andHostExtensionsregistration.SharpClientBuilder.Build()retains global manifest behavior; generated child contexts receive only their assigned closure. README, changelog, migration, architecture, and performance documentation describe API, limits, and compatibility.Local validation on
804178c752d2532e35940b49687437640f3172dcdotnet build Sharplink.slnx --no-restore -c Release -v minimal- passed, 0 warnings / 0 errorsdotnet test --project test/SharpLink.UnitTests/SharpLink.UnitTests.csproj -c Release --no-build- 294 passeddotnet test --project test/SharpLink.Generator.Tests/SharpLink.Generator.Tests.csproj -c Release --no-build- 48 passeddotnet run -c Release --no-build --project test/SharpLink.IntegrationTests -- --timeout 60s- passed seriallydotnet publish test/SharpLink.AotSmoke/SharpLink.AotSmoke.csproj -c Release -r osx-arm64 -o artifacts/aot-issue-10followed bySharpLink.AotSmoke-AOT_SMOKE_PASS transport=tcp, including two static multi-cluster slotsdotnet pack Sharplink.slnx --no-build --no-restore -c Release -o artifacts/nugetthen PackageSmoke restored from the generated packages using a newNUGET_PACKAGEScache - passedPerformance-gate status
doc/performance-0.7.10.mdrecords a five-round, alternating local fixed-TCP c32 P1 diagnostic sample againstbfb26f0ba40c980a59e621d0a549399d7c444fba. Its median is 97.38% baseline QPS and 105.80% baseline P99, so it does not satisfy the strict P1 release gate. The full P1 transport/concurrency and allocation matrix, P2 direct-child comparison, P3 writer-pressure isolation run, and P4 2/8/16-slot resource measurements remain required on a stable release host. This PR makes no release-gate-passed claim.