Repository navigation
Description
Delivered — Native Server3.3.0 (2026-11-08)
Implemented by #1092; qualified and published at release source 2a15179f29801eec9f2a2d4e6a9c5f93233f104e / indexcb4b11bd. Acceptance and scope limits. No benchmark speedup is claimed.
Original requirement and evidence
External performance report, topic 13. The reported timings and proposed fixes have not been independently reproduced. The supplied patches are reference drafts for review and current-source qualification.
Problem
The fairness reorder works in batches of FAIRNESS_BATCH (10) eligible
candidates, and the first batch decides nearly every claim. Yet every claim
reads 100 candidate rows under the lock.
Proposal
- A claim reads one batch first.
- Only when none of that batch can be claimed does it read the whole list,
from the same instant, skipping the candidates it already tried. - A batch short of unsupported workflow types isn't decisive, so the whole
list is read then too. - The poll-ready probe reads one batch as well.
Claim order and outcomes must remain unchanged.
Reported benchmark evidence
Reporter-supplied cumulative measurements, not an isolated-effect or independently verified performance claim: 200 sequentially started workflows, five sequential 20ms activities or five local activities each, six PHP worker processes, mean of three repetitions, one machine, fresh SQLite/MySQL8.0/PostgreSQL16 databases with default durability. "Five" and "local" below mean last-close wall time in seconds; S/M/P means SQLite/MySQL/PostgreSQL. Preserve regressions and noise in the reported results.
MySQL five-steps: 17.25 → 16.81.
Acceptance
- A claim reads one batch first on every backend.
- A poll still claims past a whole batch of candidates it can't run. Two
tests intests/execution/task_fairness.rscover these.
Dependencies
No new producer dependency is required for source investigation.
Related existing work: #325, #530.
Draft patches and validation boundary
Current main was independently read as b8f4dd13623ce645de77ba5bd89ae8dd8eea2f7c. The supplied draft series targets 3d4d4afaf2b24aaa5443eac154e253b011924738; patches are cumulative reference material, not a current-main application or test result. Review and rebase on maintained source, preserve all existing tests and published compatibility, then establish causal controls and actual conformance before shipping. No patch was applied or executed during intake.
The following sanitized unified diffs identify proposed reference material:
0022-t13-Read-a-claim-s-first-fairness-batch-before-its-whole.patch— 12,895 bytes, SHA-2566b8c9796d20c885e1bc9f71975495a9532f3bf9053eb6813577ed23388592509.
Next action: the owning maintainer reviews the candidate against current source and the acceptance criteria above. Preserve durability, lease/fencing, idempotency, fairness and whole-completion/history budgets. New producer capabilities need versioned schemas and real producer/consumer compatibility proof; historical/frozen evidence is not rewritten.
Activity
rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0022-t13-Read-a-claim-s-first-fairness-batch-before-its-whole.patch, part 1/1.This is an unverified, cumulative draft from the external report. Mail author/date/commit-message metadata was removed; the unified-diff hunks were retained. No patch was applied or executed, and no build/test or compatibility result is implied. The known gaps and acceptance criteria in this issue remain mandatory.
Complete sanitized patch: 12,895 bytes, SHA-256
6b8c9796d20c885e1bc9f71975495a9532f3bf9053eb6813577ed23388592509. This part: 12,895 bytes, SHA-2566b8c9796d20c885e1bc9f71975495a9532f3bf9053eb6813577ed23388592509. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 13:
0022-t13-Read-a-claim-s-first-fairness-batch-before-its-whole.patch.The supplied revision targets Server
b8f4dd13623ce645de77ba5bd89ae8dd8eea2f7c. It is cumulative external reference material, not independently qualified against today's maintained source. Mail headers and commit-message/application instructions were removed; the unified diff is retained. The reporter now claims every rebased commit builds and the tip passes SQLite/MySQL/PostgreSQL tests. Those are attributed claims, not a new maintainer test result. Existing acceptance criteria, security findings and completed implementation receipts remain authoritative. Earlier attached patches are retained as historical references.Sanitized patch: 12,895 bytes, SHA-256
5f3363fee50d1f086fde4df80048143e7d2352c2c1a35a7c7ed03988a2c71fc9. Original-base sanitized identity:6b8c9796d20c885e1bc9f71975495a9532f3bf9053eb6813577ed23388592509. No patch was applied or executed during this update.rmcdaniel commentedon Nov 7, 2026
The independent first-batch implementation is prepared as
e98729126320c7c099d9f558c6f8d7790645c806, tree671c6058d84595a531d6ab22f3887bcefbd435ca, from accepted maindc2a9d1050e9ebb15b6a1ffaf2dce667b292bd7d. Its full own-authored delta is below for source review. No public branch or additional CI train is started while #1090 qualification is active. This does not carry the earlier combined #1088 results.The claim reads ten candidates first, preserves the two sampled instants, and reads the original full page when the first batch is unclaimable or unsupported workflow types make its eligible prefix incomplete. Full-page fairness ordering happens before tried IDs are excluded. Existing claim authority, receipts, typed errors and persistence budgets remain unchanged.
Authored controls include the two real HTTP fairness regressions, shared all-backend first/full ordering and statement counts (one smaller read / no full read when claimable, one smaller plus one full read for ten unsupported types ahead of a supported task), and fresh/analyzed PostgreSQL/MySQL plan checks for both query limits. These controls are not yet repository-built or executed on all three backends. The next source slot is normal PR/current-head qualification after the already active release dependency; Server retains integration/release follow-through.
Full diff SHA-256
e5db6d69c966e676a13e09ccef7f89add8284f1e537b709cde1694367be2fc14, 31911 bytes. It remains data for review; no imported patch, runtime, benchmark or installed qualification is claimed.rmcdaniel commentedon Nov 7, 2026
The source is now draft PR #1092:
feat/server-1064-first-fairness-batch, head463d0c8d2c8d1ba5bb9b49ca159b37638c63b14f. It is the preserved preparatione9872912, rebased without conflict onto main1c34f3b7. Local SQLite checks in CI's pinned Rust image pass: 413 runtime library tests and the 3 fairness execution tests. Normal PR checks, including the PostgreSQL/MySQL/MariaDB qualifications, are the current Server source train. #1066 follows as its own PR once this train is terminal. Owner: Server, through review, merge and main acceptance. This issue stays open for published-artifact acceptance.rmcdaniel commentedon Nov 7, 2026
#1092 merged through the normal queue at 20:47:46Z as
2c7ea791fce2549559507e5a235070f27292ee0c. Its tree4d68a84bequals the reviewed PR tree; parents are [1c34f3b7,463d0c8d]. Server is watching actual-main checks and will then clean up the topic branch. This issue stays open for published-artifact acceptance.rmcdaniel commentedon Nov 8, 2026
Published-artifact reconciliation: delivered in Native Server3.3.0.
Implementation #1092 is an ancestor of immutable release source
2a15179f29801eec9f2a2d4e6a9c5f93233f104e. Its accepted source checks are62success/1intended skip. The integrated #1098 source head5f937ec8f385c71dc781875f2f38026b63277faahas a byte-identicalrust/tree to this release. I independently read its successful SQLite, MySQL8.0, MariaDB10.11 and PostgreSQL17 native-test job commands: they run the registered all-targets/ignored qualification suites (only the unrelated MySQL bootstrap child is skipped). This supports the specific source controls below; it is not a new benchmark run.All-backend first/full-page equivalence and statement-count controls, plus the two HTTP fairness regressions, preserve the eligible ordering and fall through an unclaimable first batch.
The 3.3.0 release is public at index
sha256:cb4b11bd6235a551cf51e7dc6342504fbbcef19959618b376fb5648ca00fc388, with provenance binding M. Published SQLite corpus acceptance passed, as did four-cell MySQL Compose acceptance, the no-input default, and the release’s SQLite/PostgreSQL/MySQL startup/identity/stop smokes. Both registries’3.3/3/latest aliases resolve to D.The issue’s functional/source acceptance and release follow-through are met. Closing as completed. No isolated speedup, reporter benchmark reproduction, all-backend installed corpus or installed EXPLAIN rerun is claimed. Earlier rejected/combined subjects remain attributed. Remaining P0 work, including #1099, is excluded from this3.3.0 cut. Schema11 and rollback constraints remain in the tagged release notes.