Repository navigation
Conversation
#508's shared run failed while recording against the published PHP SQLite reference: an SDK poll in a probe received the documented 503 backend_lock_pressure refusal (task null, retryable) and the probe treated it as fatal. SQLite refuses a deferred writer immediately, without its busy timeout, while the maintenance loop writes. #478 already honored that refusal in restart.php. parityClient() now builds every SDK client in probe.php, the probe files it loads and cooperative-restart.php, keeping any transport the caller passes and wrapping it with the same bounded retry. Only that refusal on a POST poll is retried. Retries are reported on stderr at exit, so observations stay comparable across targets. The failure-evidence reader keeps its plain client and short timeouts. A local check with the installed parity SDK: a poll refused twice succeeds on the third call through the caller's transport, and both retries are reported. Part of #325. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Part of #325.
#508's shared run failed in
execution-and-codec, step "Execute and compare Rust, published PHP and embedded fixtures", while recording fixtures against the published PHP SQLite reference:That is the documented 503
backend_lock_pressurerefusal (task: null, retryable). The PHP reference shares its SQLite file with the maintenance loop, and SQLite refuses a deferred writer at once, without waiting out its busy timeout, while another connection writes. #478 already honored this refusal inrestart.php. The fixture probes still called the SDK's poll directly and treated it as fatal.parityClient()(inlock-pressure-transport.php) now builds every SDK client in:probe.php, and the probe files it loads;cooperative-restart.php.It keeps any transport the caller passes and wraps it with the same bounded retry as
restart.php: only that refusal on a POST poll, at most 15 retries and 30 s. Retries are reported on stderr when the process exits, so recorded observations stay comparable across PHP, native and embedded targets. The failure-evidence reader inprobe-failure.phpkeeps its plain client and 1 s timeouts.Check
With the parity SDK installed as CI installs it, a small script built a
parityClient()around a transport that refuses the first two polls. The poll succeeded on the third call through the caller's transport, and both retries were printed on stderr. All changed files passphp -l. The existingServerParityLockPressureRetryTestcovers the retry decision itself.🤖 Generated with Claude Code