Skip to content

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

Description

@FumingPower3925

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.

  • README.md:339 and engine/iouring/doc.go:28-29 say that at CELERIS_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:104 at 15a75d2) says the same.
  • 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/.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/configConfiguration / resource managementdocumentationImprovements or additions to documentationengine/iouringio_uring engine specifics

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions