Repository navigation
fix(benchmarks): restore server call admission hot-path benchmark - #790
Conversation
SunSi12138
left a comment
There was a problem hiding this comment.
Review result: changes needed.
The benchmark setup fix itself looks correct and the new smoke passes on the PR head, but this PR currently breaks an existing same-machine A/B workflow.
RPC Session Flush Performance Evidence run 37878976018 fails deterministically while building the exact base benchmark harness: that workflow copies the PR-head Program.cs into the base worktree but does not copy the updated ServerCallAdmissionHotPathBenchmarks.cs, so the base build sees the new RunSmokeTestAsync() call without that member and fails with CS0117 before any measurements run.
Please update the A/B harness preparation so candidate-only CLI entry points do not make the historical/base worktree uncompilable, then rerun the workflow.
Separately, #756's completion definition asks for the actual BenchmarkDotNet run to produce ns/op and allocation data. The new smoke is useful for setup regression coverage, but it only executes Setup -> one AcquireAndRelease -> Cleanup. Before closing #756 / marking this ready, please attach at least one exact-head full ServerCallAdmissionHotPathBenchmarks run (or add an appropriate non-fast validation) showing that the complete BDN lifecycle and MemoryDiagnoser output work.
…ontexts Sync dev after #790. Detach notification dispatch from owned result/error state, release payload and context roots at consumption, preserve async-wrapper ExecutionContext and scheduling semantics, and throw faults outside the gate. Add deterministic retention, context, scheduler, reentrancy, and exception-filter regressions. Keep #753 as Draft research; issue #740 No-Go remains unchanged.
Fixes #756.
Summary
SharpLinkServer._connectionswith_connectionRegistry.SnapshotActive().BenchmarkEnvironment.Serverproperty instead of reflecting into its private_serverfield.--server-call-admission-smoke-testto executeGlobalSetup -> AcquireAndRelease -> GlobalCleanup, asserting balanced active calls; run it in allocation-gate CI.Program.cs: copy the correspondingServerCallAdmissionHotPathBenchmarks.csas well (addresses review P2)..github/workflows/server-call-admission-benchmark-evidence.ymlto execute the actual exact-head BenchmarkDotNet workload in Release, validate the generatedns/opandB/opresults, and upload measurements and environment metadata (addresses review P3).No changes to production
src/, public API, or wire protocol.Validation
dev.Local commands
dotnet run --project test/SharpLink.Benchmarks/SharpLink.Benchmarks.csproj -c Release -- --server-call-admission-smoke-test dotnet run --project test/SharpLink.Benchmarks/SharpLink.Benchmarks.csproj -c Release -- --filter '*ServerCallAdmissionHotPathBenchmarks*' --exporters json