You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(design): address Gemini review on workload-isolation proposal
- Layer 1 (line 84): replace "full-range ZRANGE/ZRANGEBYSCORE" with
unconditional gating of the whole ZRANGE family. Arg-inspection
contradicted the stated "static, byte-level classification"; a
bounded ZRANGE 0 10 costs at most one unmarshal and gating it is
cheaper than the dispatcher branch that would distinguish the
bounded vs unbounded case.
- Layer 1 (line 122, container awareness): document that
runtime.GOMAXPROCS(0) returns the host CPU count on Linux without
cgroup awareness and call out two mitigations (operator-set
GOMAXPROCS env at rolling-update level, or wire
uber-go/automaxprocs). v1 prefers the operator-set path for
auditability; automaxprocs acceptable as follow-up.
- Layer 1 (line 139, single-pool starvation): acknowledge the risk
that KEYS/SCAN bursts can exhaust pool slots and starve XREAD/Lua.
v1 still ships a single pool but requires a per-command submit
metric so a tier split is measurable from observability rather
than guessed; sub-pools/slot reservation are the named follow-up.
- Layer 3 (line 252, reject semantics): change the v1 shape from
"close TCP without RESP" to "accept, write -ERR, then close." The
protocol-level error is the signal that distinguishes "server
overload" from "network blip" on the client side.
- Layer 4 (line 315, synchronous migration cost): add a chunked
migration section. A single XADD on a 100k-entry legacy blob would
rewrite every entry in one Raft commit, reproducing the CPU/commit
spike the design is supposed to prevent. Document
STREAM_MIGRATION_CHUNK (default 1024) and the rolling drain model;
explicitly scope chunked migration as a stacked follow-up to PR
#620 (which ships the simple one-txn version).
0 commit comments