Skip to content

Reconcile retryable completion-upload lock responses in process tests - #155

Merged
rmcdaniel merged 1 commit into
mainfrom
test/completion-upload-lock-recovery
Sep 9, 2026
Merged

Reconcile retryable completion-upload lock responses in process tests#155
rmcdaniel merged 1 commit into
mainfrom
test/completion-upload-lock-recovery

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Closes #154.

The completion path commits the byte reservation before object registration and final acknowledgement. SQLite can therefore return 503 after reserving the winning bytes while the competing request correctly returns 409. The old test incorrectly required an immediate 201.

This changes only test code:

  • Reconcile an explicitly validated SQLite backend_lock_pressure response once in a fresh PHP process, then require exactly one 201 and one 409.
  • Add deterministic activity/workflow cases using a separate real SQLite writer acquired after object commit. Verify the original byte identity and allowance remain reserved across the 503, conflicting bytes cannot replace them, and cold retries/completion retain one reference and one bounded object.
  • Preserve strict MySQL/PostgreSQL responses and all existing count/budget assertions.

Validation: installed published Workflow 2.0.11 from the unchanged lockfile; local PHP 8.4 process suite passes all four SQLite cases / 90 assertions. Six MySQL/PostgreSQL cases are left to the existing native-database CI, not claimed as locally run. Pint and git diff --check pass. No production code, dependency, public API or release version changes.

An initial fault fixture held the writer before object registration and produced the distinct external_payload_unavailable response. The final fixture holds it after object commit, reproducing the exact backend_lock_pressure boundary observed in CI.

@rmcdaniel
rmcdaniel marked this pull request as ready for review September 9, 2026 19:56
@rmcdaniel
rmcdaniel merged commit d6bc110 into main Sep 9, 2026
6 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged at d6bc110 after all PR checks passed. The full feature/Nexus suite passed 2,182 tests and 43,653 assertions, including the existing MySQL/PostgreSQL process cases and both new real SQLite post-commit lock/cold-retry cases. Regression corpus validation and repository contracts passed too.

No production behavior, dependency or version changed. Server 2.3.8 remains the published release; its independent activity/replay qualification is recorded on #153. Main-branch CI is now running on the merge commit and will be checked before closing out the failing-build follow-up.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Final verification: main-branch feature CI is green on d6bc110, including repository contracts, native database feature tests and regression corpus validation. #154 is resolved. Temporary local fixtures/worktree have been removed. No artifact tag was moved and no new product release was created.

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.

Completion-upload concurrency test must reconcile retryable SQLite responses

2 participants