Skip to content

Shared fixtures and native tests: keep service-calls' SQLite pause; bound parallel timer waits - #824

Merged
rmcdaniel merged 2 commits into
mainfrom
rust-325-sqlite-service-calls-pause
Oct 27, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
rust-325-sqlite-service-calls-pause

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

Part of #325. Walks back part of #815, as recorded in the checkpoint.

What failed. In #821's merge-group run 40579733447 (execution-and-codec (corpus)), published 2.11.5's service-calls record stopped with No charge with options.id for a later path.

  • 2.11.5 logged Control-plane storage contention exhausted retries / SQLite database is locked on a workflow_service_calls insert while its maintenance loop ran.
  • That refusal isn't the typed 503 backend_lock_pressure the probe retries. An earlier execute did get that reply and was retried.
  • Native and embedded weren't involved.

Why walk it back. That's one failure in five full SQLite runs since #815, and #796 is still open. General's 10/10 check ran isolated namespaces, not full-corpus load, so I over-read it in #815.

Change

Checked locally: ServerParityFixtureSelectionTest, ServerParityUpdateValidationRetryTest, PhpMaintenanceWindowTest and ServerParityImagePullTest: 24/24. The end-to-end SQLite job runs in this PR's CI.
Second commit: native test bound. In the same run, the PostgreSQL native-tests job (631 s suite) failed parallel_all::nested_mixed_barrier_retains_all_paths_and_original_timer_after_cold_reopen with "original all-group timer did not fire". The helper gave a 3-second timer 3 seconds from the call. The three positive timer-fire waits in parallel_all.rs now share a 15-second bound. They still return as soon as TimerFired is recorded, so only failure reporting is slower. parallel_all passes 11/11 on SQLite.

🤖 Generated with Claude Code

rmcdaniel and others added 2 commits October 27, 2026 21:24
#815 recorded update-validation and service-calls in the SQLite main corpus
with published PHP's maintenance loop running. In #821's merge-group run
40579733447, published 2.11.5's service-calls record stopped ("No charge
with options.id for a later path") after 2.11.5 exhausted its control-plane
SQLite contention retries on a workflow_service_calls insert while the loop
ran its repair pass. That is one failure in five full SQLite runs since
#815, and #796 is still open.

The SQLite job and the native image corpus again exclude service-calls
from the main corpus and record it with update-validation-sqlite.sh, which
stops PHP's maintenance loop for the PHP record only. update-validation
stays in the main corpus (#726 has installed acceptance). The script,
php-maintenance-window.sh and their tests are restored from before #815,
pointing at the 2.11.5 baseline. The port log and a checkpoint record the
walk-back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
parallel_all's wait_for_timer gave a 3-second timer 3 seconds from the
call to fire. In #821's merge-group run 40579733447 the PostgreSQL
native-tests job (631 s for the suite) failed
nested_mixed_barrier_retains_all_paths_and_original_timer_after_cold_reopen
with "original all-group timer did not fire". The waits are positive: they
return as soon as TimerFired is recorded, so a longer bound only changes how
long a real failure takes to report. The three timer-fire waits in the file
now share a 15-second bound. parallel_all passes 11/11 on SQLite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rmcdaniel rmcdaniel changed the title Shared fixtures: keep service-calls' SQLite maintenance pause Shared fixtures and native tests: keep service-calls' SQLite pause; bound parallel timer waits Oct 27, 2026
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Cloud review of exact head 85508474c4a01ed210ee59715c32b673b2ddbbb0, focused on the installed #726 handoff and the proposed SQLite reference mitigation: no blocker found in that reviewed scope.

Both the SQLite workflow and native-image corpus exclude only service-calls from the ordinary corpus, then invoke the separate recorder with that explicit fixture name. update-validation remains in the main corpus with PHP maintenance running. MySQL, MariaDB and PostgreSQL keep their ordinary service-calls coverage. All three separate records and their strict comparison still have to succeed. The frozen fixture expectations are unchanged, and #796 remains an unresolved product defect; this workaround does not establish contention recovery under full-corpus load.

The maintenance guard checks the exact job-scoped container, arms restoration before stopping it, and leaves that restoration armed until the loop stays running through the sustained check. The restored retry path retains the first failure evidence and permits one PHP retry only with a same-record-window SQLite lock observation and a fresh shared prefix. Other PHP failures and all native/embedded failures remain fatal.

The native test delta changes only three positive timer-wait bounds; the existing event assertions are unchanged. This was a static review of the scripts, workflow wiring, changed tests and timer diff. I did not execute Rust, repeat the owner's unit runs or establish hosted end-to-end acceptance. It also does not attribute #812's separate failed corpus comparison, whose runtime and fixture remain unconfirmed. Protected qualification remains required.

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