Uh oh!
There was an error while loading. Please reload this page.
ci(test): auto-enable storage stress rounds for WAL recovery race changes - #2474
Conversation
…nges Refs apache#2388. apache#2459 gated the 12-round fresh-WAL race amplification behind MAKA_STORAGE_STRESS, but sqlite-recovery-concurrency.test.ts was not in STORAGE_STRESS_FILES, so CI never re-enabled the amplified rounds even when the recovery race surface itself changed. Add the test, its spawned worker fixture, and sqlite-runtime-store.ts (the store the race exercises) to the stress set, matching how the other multi-process storage probes are wired. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16
Astro-Han
commented
Aug 8, 2026
Thanks — wiring this race back into the storage-stress route is the right follow-up to #2459. One coverage gap remains in the trigger set: P2 — The amplified
Changes to either file currently leave P3 — It would also help to add a small table-driven planner test covering the five relevant paths (the three already added here plus the two production owners above), with one unrelated storage file as the negative case. The PR body says these paths were checked, but keeping that assertion executable will prevent the routing contract from drifting later. The overall approach is good; this should be a small completion of the same seam rather than a redesign. 简体中文感谢补上这条路由——把该 race 重新接回 storage stress,是 #2459 之后正确的补充。目前触发集合还漏了一个覆盖面: P2 — 被放大的
这两个文件发生变化时,当前 P3 — 还建议补一个小型表驱动 planner 测试:覆盖本 PR 已加入的三个路径和上述两个生产 owner,并用一个无关 storage 文件作为负例。PR 正文虽然说明已经手动验证,但把它变成可执行契约,才能避免后续路由漂移。 整体方案是对的;这里只需要沿用同一个 seam 补完整,不需要重新设计。 |
…outing Review follow-up: the amplified race path runs through acquireOperationalStateDatabase(), so operational-state-store.ts and sqlite-runtime-schema.ts own the fresh-WAL initialization, locking, and migration it exercises. Add both to STORAGE_STRESS_FILES, and extend the planner test's stress table with all five WAL-race paths so the routing contract stays executable. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16
GabrielDrapor
commented
Aug 8, 2026
Both points addressed in df96d1c's follow-up commit: P2: Confirmed — the child fixture calls P3: Rather than a new test block, I extended the existing table-driven stress assertion in |
Astro-Han
commented
Aug 8, 2026
Thanks for addressing the previous review exactly as requested. On a deeper pass through the full initialization call chain, I realized that my earlier list of production owners was incomplete — sorry for the extra round.
Changes to these files still leave One correction to my previous review: This is a completion of the same trigger set, not a request to redesign the approach. Thanks again, and apologies that I did not trace the full migration chain in the first pass. |
…utes Review follow-up: acquireOperationalStateDatabase() runs the migrations owned by the six sqlite-*-schema modules inside the amplified fresh-WAL race, so all six join STORAGE_STRESS_FILES and the planner's stress table. sqlite-runtime-store.ts leaves the set - the amplified operational_open_only branch never constructs it - and a negative planner case pins that boundary. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16
GabrielDrapor
commented
Aug 9, 2026
Done in the latest commit. Verified both corrections against the child fixture before changing anything: |
Astro-Han
left a comment
There was a problem hiding this comment.
Re-reviewed at ce93ae9d. The previous trigger-set findings are resolved: every migration owner exercised by acquireOperationalStateDatabase() now enables storage stress, while sqlite-runtime-store.ts is correctly excluded and pinned by a negative planner case. The focused planner suite passes 6/6. No remaining P0–P3 findings.\n\nThe failing Storybook check is an unrelated main-branch baseline issue fixed separately by #2546.
Uh oh!
There was an error while loading. Please reload this page.
Refs #2388 (stress-policy PR; the fixture-reduction changes are in #2473).
#2459 moved the 12-round fresh-WAL race amplification behind
MAKA_STORAGE_STRESS=1, butsqlite-recovery-concurrency.test.tswas never added toSTORAGE_STRESS_FILESinscripts/ci-test-plan.mjs— so CI would not re-enable the amplified rounds even for changes to the recovery race surface itself.This wires the WAL race into the same auto-enable heuristic the other multi-process storage probes use, adding:
packages/storage/src/sqlite-runtime-store.ts(the store the race exercises)packages/storage/src/__tests__/sqlite-recovery-concurrency.test.tspackages/storage/src/__tests__/fixtures/sqlite-recovery-concurrency-child.ts(the spawned worker)Verification
scripts/ci-test-plan.test.mjs: pass.planTestsflipsstorageStress=truefor each of the three files and staysfalsefor unrelated storage files (e.g.plan-store.ts).MAKA_STORAGE_STRESS=1 node --test dist/__tests__/sqlite-recovery-concurrency.test.js: 12 pass / 0 fail (3.1s).Default-suite behavior is unchanged: 1 deterministic round, stress rounds only when the flag is set.
Co-Authored-By: Claude noreply@anthropic.com
https://claude.ai/code/session_01Ac5rv6WUKWtMZgQb5QPN16