fix(server): CLIENT TRACKING unreachable on monoio runtime (H-3 reorder regression)#277
Conversation
…consumed it Since the H-3 ACL reorder (#258), CLIENT TRACKING ON|OFF answered "ERR unknown subcommand 'TRACKING'" on the monoio runtime (the production default) at every shard count. try_handle_client_admin runs before try_handle_client_tracking in the frame loop, and its unknown-subcommand fallback consumed TRACKING before the dedicated handler could see it — RESP3 invalidation push was entirely dead. Invisible to CI: the test matrix runs the tokio handler (handler_sharded), whose CLIENT intercept ordering differs, so all 5 client_tracking_invalidation black-box tests kept passing there while failing deterministically against a monoio binary. Fix: try_handle_client_admin falls through (returns false) for TRACKING, letting try_handle_client_tracking own it. Both handlers sit after the ACL gate, so the H-3 deniability guarantee is unchanged. Verification: all 5 client_tracking_invalidation tests re-green against the monoio binary (were 5/5 FAILED at the merge base, control-tested); fmt + clippy clean on default and runtime-tokio,jemalloc feature sets. Refs: regression introduced by #258; tests from #234 author: Tin Dang
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe monoio ChangesCLIENT TRACKING dispatch
Estimated code review effort: 2 (Simple) | ~5 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
CLIENT TRACKING ON|OFFhas been answeringERR unknown subcommand 'TRACKING'on the monoio runtime (the production default) since the H-3 ACL reorder in #258 — at every shard count. RESP3 client-side caching / invalidation push has been entirely unavailable on prod builds for ~1 day.Root cause
In
handler_monoio's frame loop,try_handle_client_adminruns beforetry_handle_client_tracking. The admin handler's unknown-subcommand catch-all consumedTRACKINGand emitted the error before the dedicated tracking handler could see it. Its doc comment claimed to skip TRACKING, but the code did not.Why CI missed it
The test matrix exercises the tokio handler (
handler_sharded), whose CLIENT intercept ordering differs — so all 5client_tracking_invalidationblack-box tests kept passing there while failing deterministically against a monoio binary. (Filed a follow-up note: monoio-only intercept-order bugs are CI-blind; test monoio binaries locally when reordering.)Fix
try_handle_client_adminnow returnsfalse(falls through) forTRACKING, lettingtry_handle_client_trackingown it. Both handlers sit after the ACL gate, so the H-3 deniability guarantee is unchanged.Verification
client_tracking_invalidationblack-box tests re-green against the monoio binary. Control-tested: 5/5 FAILED at the merge base (3c516943) with the same binary, confirming this is the fix and the tests are valid.cargo fmt --check,clippy -D warningsclean on default +runtime-tokio,jemallocfeature sets.Regression from #258 · tests from #234
Summary by CodeRabbit
CLIENT TRACKINGcommands failed on the monoio runtime.