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
Follow-up from #694: the CELERIS_MAX_IOURING_TIER=none row says Adaptive never starts on io_uring, but an explicit CELERIS_ADAPTIVE_START=iouring still tries it and logs a WARN #729
Follow-up from PR #694 (#679), left open under the maintainer's two-round review cap (2026-09-27). The round-2 independent review of #694 approved at 450d538 with no blocker or major. CodeRabbit's review of 450d538 left one minor, and the independent review raised the same point as a nit. It is tracked here. Line numbers are at 450d538.
The tier-cap row overstates what Adaptive does when CELERIS_ADAPTIVE_START=iouring is set explicitly.
That holds for the automatic choice only. chooseStartEngine returns the env override (adaptive/engine.go:195-197) before the ioUringViable check (:206). So with the override set, New still tries iouring.New first (:349). It refuses the tier ("io_uring not available on this system", engine/iouring/engine.go:116-117), and New logs WARN io_uring start engine unavailable, falling back to epoll start (:353) and starts on epoll.
The outcome the row describes is correct: the conns-per-worker up-switch stays off, because connSwitchEnabled requires ioUringViable. Only the wording is too broad: the explicit override still attempts io_uring and logs one WARN.
CodeRabbit's version of this comment said the override "fails in iouring.New rather than falling back to epoll". That part is wrong: adaptive/engine.go:349-360 falls back to epoll.
What to do: in all three places, limit the no-start claim to Adaptive's automatic choice, and add that an explicit CELERIS_ADAPTIVE_START=iouring tries io_uring, logs the fallback WARN and starts on epoll.
Found by: CodeRabbit on #694 (review thread on README.md:339) and the lane E round-2 review (nit). Evidence root: evidence/celeris-673-679-653-424/lane-20260926/679/.
Follow-up from PR #694 (#679), left open under the maintainer's two-round review cap (2026-09-27). The round-2 independent review of #694 approved at 450d538 with no blocker or major. CodeRabbit's review of 450d538 left one minor, and the independent review raised the same point as a nit. It is tracked here. Line numbers are at 450d538.
The tier-cap row overstates what Adaptive does when
CELERIS_ADAPTIVE_START=iouringis set explicitly.README.md:339andengine/iouring/doc.go:28-29say that atCELERIS_MAX_IOURING_TIER=none, Adaptive "neither starts on io_uring nor switches to it". The docs site's copy of the row (docs: EngineMetrics.Throughput always reads 0; the parser is not SIMD (celeris#653, celeris#424) docs#73,src/content/docs/engines.md:104at 15a75d2) says the same.chooseStartEnginereturns the env override (adaptive/engine.go:195-197) before theioUringViablecheck (:206). So with the override set,Newstill triesiouring.Newfirst (:349). It refuses the tier ("io_uring not available on this system",engine/iouring/engine.go:116-117), andNewlogsWARN io_uring start engine unavailable, falling back to epoll start(:353) and starts on epoll.connSwitchEnabledrequiresioUringViable. Only the wording is too broad: the explicit override still attempts io_uring and logs one WARN.iouring.Newrather than falling back to epoll". That part is wrong:adaptive/engine.go:349-360falls back to epoll.What to do: in all three places, limit the no-start claim to Adaptive's automatic choice, and add that an explicit
CELERIS_ADAPTIVE_START=iouringtries io_uring, logs the fallback WARN and starts on epoll.Found by: CodeRabbit on #694 (review thread on README.md:339) and the lane E round-2 review (nit). Evidence root:
evidence/celeris-673-679-653-424/lane-20260926/679/.