Skip to content

fix(onlion): the manifest read is bounded too, it was the last unbounded step - #147

Merged
wefio merged 2 commits into
mainfrom
fix/manifest-read-is-bounded
Nov 1, 2026
Merged

wefio merged 2 commits into
mainfrom
fix/manifest-read-is-bounded

Conversation

@wefio

@wefio wefio commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Doc owner: docs/design/search-time-budget-design.{md,zh-CN.md} — phase 2 stops being "no dedicated bound"; updated in a follow-up on this branch.

After deploying 59d41ae9, an Add followed immediately by a search stalled past 90 s for a user whose only data was in the log. /health had already reported the same storage stalling: one MEMORY.head took over 45 s.

The manifest read was the last unbounded step on the search path — my own phase table says phase 2 has "no dedicated bound", and that was true right up until it was the thing that hung.

Change

  • MANIFEST_READ_MS (8 s) around the search's manifest read, same hardDeadline as the other phases.
  • On timeout: 200 with partial: true and degraded: "manifest_timeout".
  • The write path is untouched: an Add that cannot read its manifest must not behave as if there were none.

Series

Every bound now corresponds to an observed stall: embedding call (10-31), log tail (11-01 17:1x), health probe (11-01 17:3x), manifest (11-01, this).

wefio added 2 commits November 1, 2026 20:35
…ded step

Measured after deploying 59d41ae: an Add followed immediately by a search stalled past
90 s against a user whose only data was in the log, with the manifest read as the only
step left before the bounded log tail. /health had already shown the same storage
stalling for 45 s on a single MEMORY.head.

The search's manifest read gets MANIFEST_READ_MS (8 s). On timeout the page is
partial with degraded=manifest_timeout instead of holding the request until the
platform kills it. The write path keeps its own behaviour: an Add that cannot read its
manifest must not silently behave as if there were none.

verify: 49 PASS.
CodeFactor's no-undef caught a real ordering mistake: the failure path referenced the
per-attempt persistence counter, which is declared inside the attempt further down. A
manifest read that timed out has nothing saved and nothing changed, so it passes a
zeroed counter literal.
@wefio
wefio merged commit c72afe5 into main Nov 1, 2026
8 checks passed
@wefio
wefio deleted the fix/manifest-read-is-bounded branch November 1, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant