Skip to content

Classify recovered SQLite queue producer contention in tracing tests - #883

Merged
rmcdaniel merged 2 commits into
mainfrom
test/workflow773-queue-dispatch-diagnostics
Oct 21, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
test/workflow773-queue-dispatch-diagnostics

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

A normal installed Core 2.9.0 consumer completed all 64 fan-out activities with one attempt each, preserved history and output, and drained every job, but the strict qualification classifier rejected a reported SQLite busy error while Laravel inserted a queue delivery. The existing classifier recognizes reservation/acknowledgment updates and the failed-job logger, but not this recovered producer insertion.

This change recognizes only SQLite BUSY/LOCKED QueryException reports for the exact placeholder-only jobs INSERT, outside both Laravel and PDO transactions, with a null acknowledgment fence and both real DatabaseQueue producer frames. Unknown inserts, business-table writes, active or uncertain transactions, truncated statements, other native errors and missing producer frames remain refusals. Only the reported-error path gains this classification.

The existing 64-member workload, four-worker requirement, 90-second observer, one-attempt requirement, complete histories/results, original deadlines and bounded diagnostics remain mandatory. No production file, package version, runtime recovery rule, CI profile or threshold changes. Original two-CPU timeouts and the original four-CPU classifier failure remain failed.

Validation: all 30 focused classifier controls pass (60 assertions). A normal installed Core 2.9.0 consumer passes both 64-member fan-out cases (735 assertions), verifies all 966 production files before and after, and preserves the original deadlines. The exact-source review accepts this narrow classification. Fresh normal PR checks remain in progress. The source artifact remains immutable 2bc1ba0b57df34b74de02427d2225bd8e4dc6322; this is a qualification-runner correction for #773, not a new package release or a performance result.

@rmcdaniel

Copy link
Copy Markdown
Member Author

General source review of exact c0635adec8db87498365a26ff64b1b83bf9e4238: no objection to this narrow test-diagnostic classification. All three changed files are tests/support; runtime queue behavior and dependencies are unchanged.

The exception class, typed native BUSY/LOCKED code, exact untruncated jobs INSERT, both Laravel producer frames, zero transaction depth/PDO transaction and explicitly null acknowledgment fence are required together. The caller accepts this only for a reported producer error, not an acknowledgment failure. Keep the final 64-member completion, attempt, history, queue and failed-job assertions and the original deadline authoritative; classifying this diagnostic alone does not establish successful recovery.

The negative controls cover changed statements/frames, transaction state and acknowledgment authority. The reported published-artifact consumer passes remain the owner's evidence; this review did not rerun the full fan-out. Fresh exact-head checks remain required. Prior failed originals retain their original dispositions, and this classifier does not reclassify unrelated Server/native failures.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The corrected qualification runner at c0635adec8db87498365a26ff64b1b83bf9e4238 now passes both original 64-member fan-out cases against normal published Core 2.9.0 / 2bc1ba0b57df34b74de02427d2225bd8e4dc6322. The run finished at 03:22:14 UTC on October 21. It used the same complete Composer lock as the original four-CPU run (sha256:10ec0f16a3176d3a4cd8ae4572806a53ad5dd9914bb1ed4bcdcb44d2e4c50c5a). All 966 installed production files and the loaded provider path match the immutable normal registry package before and after execution.

All original workload and correctness conditions remain: 64 distinct activity callbacks, one attempt each, four independent workers, original 90-second observer and durable deadlines, preserved history prefixes, correct results, bounded complete diagnostics and explicitly classified recovery. The production runtime and its recovery rules are unchanged. Thirty focused classifier controls pass with 60 assertions, including refusal of unrelated inserts, active/uncertain transactions, bad native codes, missing producer frames and acknowledgment fences.

The initial two-CPU consumer remains 82 passed / two fan-out timeout errors. In the original four-CPU check, the traced case passed; the disabled case completed all 64 activities, but failed on the previously unclassified reported queue INSERT contention. Those originals remain failed and are not relabeled by this receipt.

This is functional installed-artifact qualification with a corrected test runner. It changes no performance result or accepted budget, creates no new package/tag, and does not qualify two-CPU fan-out capacity. Fresh normal checks on #883 and the published Laravel matrix remain separate required results.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel merged commit 22b2651 into main Oct 21, 2026
19 checks passed
@rmcdaniel
rmcdaniel deleted the test/workflow773-queue-dispatch-diagnostics branch October 21, 2026 05:44
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged as 22b2651acd1cda0101e73b45cce1e79c0ecd9027 after the fresh normal build completed successfully, including quality, regression corpus, tracing HTTP, MySQL feature and unit-contract controls. Sonar also passes. The resulting tree matches the qualified d65f025 head. Remote head deletion and absence are verified.

This changes only tests/support. All production src, resources and Composer manifest files remain identical to published Core 2.9.0 / 2bc1ba0b. No package, tag, runtime classification, deadline, canonical completion/history/attempt/queue check or failed-original disposition changes. The initial formatting failure remains failed; the formatter correction passed its fresh gates. The separately recorded installed 64-member disabled/enabled consumer remains 2 tests / 735 assertions, with 30 classifier controls / 60 assertions and original deadlines.

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.

2 participants