Skip to content

Rust Server train: operator metrics redispatch (#708), query acknowledgement wait (#720), route coverage - #743

Merged
rmcdaniel merged 13 commits into
mainfrom
rust-325-train-oct24-b
Oct 25, 2026
Merged

rmcdaniel merged 13 commits into
mainfrom
rust-325-train-oct24-b

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Part of #325. Security class: R1 train, two constituents plus a test and docs.

Constituents

  • #708: operator metrics read across PHP's redispatch steps, recorded as a published-PHP boundary.
  • #720: query-authority clients wait for the acknowledgement before they stop.

Train commits beyond the constituents

  • A route coverage execution test sends every route in published 2.11.1's route table through the native router. The routes still answering 501 rust_capability_not_implemented must match rust/tests/fixtures/unserved-php-routes.v2.11.1.txt; native serves 126 of 175.
  • The activity lease flake fix, which is also in CI: SDK direction profiles in parallel lanes; deadline-health build off the critical path #741. The change is identical, so whichever merges first leaves the other a no-op.
  • The port log's current state, brought up to October 24.

Built on main after #729. The R1 handoff with the exact SHA follows when this PR's runs are terminal.

rmcdaniel and others added 13 commits October 23, 2026 18:25
PHP's repair pass raises the task's repair count and projects the run in
one transaction, then stamps the dispatch and projects the run again in a
separate step. Operator metrics reads runs, tasks and backlog without a
shared snapshot, so one response can straddle those steps. Model the four
PHP states and accept reads that never go backwards in read order; native
must still report one consistent state.
Published Workflow aca7928484 reads each operator metrics value with its own
query, so one section can straddle a repair. The PHP-only model now matches
eight state-dependent reads in their real order, including the timestamps
read before their counts, and reads each health warning from its own field.
Native stays strict.
…ients

worker.php already waits, inside the original 30 s budget, for the
Worker's acknowledgement of its query result before it stops: the
independent caller can see the committed result first. The Python and
Rust clients stopped immediately, so a fast caller could end the Worker
before its acknowledgement arrived (#708 attempt 1, MySQL 8.0, PHP
target, timely). Both now wait the same bounded way. The submission and
acknowledgement assertions are unchanged.
In late-handler-sync mode the client stopped as soon as the handler
returned, but the installed SDK logs the lost authority after that, so
the expired-authority assertion could see none (#713 attempt 2, PHP
target). worker.php waits for its Worker's refusal; every non-timely
Python mode now also waits, inside the 30 s original budget, for the
expired-authority evidence before stopping. Assertions are unchanged.
docs/rust-server-port.md lists the published Server 2.11.1 routes
native does not serve yet, and that prose drifted from the code (it
said 125 of 174). An execution test now sends every method of every
published API route, from the embedded PHP route table, through the
native router, and requires the routes that answer 501
rust_capability_not_implemented to equal
rust/tests/fixtures/unserved-php-routes.v2.11.1.txt. A port that serves
a route removes it from the list in the same change.

At this tree native serves 126 of 175 route methods; 49 remain. The
test fails, naming the route, when one is removed from the list.
heartbeat_renews_only_progress_deadline_and_cannot_resurrect_elapsed_authority
compared two lease_expires_at strings. Native times are whole
milliseconds and serialize without a fraction on a whole second, so a
claim lease of ...:26Z sorted after a renewal of ...:26.045Z and the
assertion failed about one run in a thousand (train #729, PostgreSQL 17
job 120852521096). The test now parses both and reports the values.
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel merged commit ab20a21 into main Oct 25, 2026
21 of 27 checks passed
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