The runtime answers a page of a kept state in one request, bounded by time (issue 1966, recovery) #64

Merged
mesh-tools merged 4 commits from fix/1966-views-page-time into main 2026-11-09 08:13:14 +00:00
Member

Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group.

Cause

See the mesh-sdk member: mesh-grants' first view of the assigner's wants took one bus request per key and timed out after 30 s, every minute since 00:42 UTC on 2026-11-09.

What changes

  • node-tools serves mesh/state.page beside get, keys and history (internal/runtime, internal/launch). Access is the same as get's.
  • StatePage checks access once and binds the bucket once; a per-node state binds each node's bucket once. It then reads the values in key order after after, up to max_bytes.
  • It stops at budget_ms (default 10 s), always after at least one value, with Next. Every bus request inside the loop has its own deadline, so the budget, not a deadline over the whole page, ends a slow page.
  • An unknown mesh/state.* verb answers code -32601.

Evidence

  • Rows in the renamed test TestAKeysHistoryAndAPageOfAStateAreServedToOwnerAndReaderAndRefusedToAModuleNotIssuedIt, among them a budget-cut row. The page rows fail without the verb.
  • The unit suite, go vet and go vet -tags integration pass.

Rules bent (rules-are-weighed)

The last finding (the per-node open on the listing's deadline) was a one-line fix made by fix-1965 after the third review round and confirmed by the same reviewer, instead of a fourth round.

Undo

Revert the group's merges.

Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at 2135fed6cf, three rounds and one confirmation.

https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i

Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group. ## Cause See the mesh-sdk member: mesh-grants' first view of the assigner's wants took one bus request per key and timed out after 30 s, every minute since 00:42 UTC on 2026-11-09. ## What changes - node-tools serves mesh/state.page beside get, keys and history (internal/runtime, internal/launch). Access is the same as get's. - StatePage checks access once and binds the bucket once; a per-node state binds each node's bucket once. It then reads the values in key order after `after`, up to max_bytes. - It stops at budget_ms (default 10 s), always after at least one value, with Next. Every bus request inside the loop has its own deadline, so the budget, not a deadline over the whole page, ends a slow page. - An unknown mesh/state.* verb answers code -32601. ## Evidence - Rows in the renamed test TestAKeysHistoryAndAPageOfAStateAreServedToOwnerAndReaderAndRefusedToAModuleNotIssuedIt, among them a budget-cut row. The page rows fail without the verb. - The unit suite, go vet and go vet -tags integration pass. ## Rules bent (rules-are-weighed) The last finding (the per-node open on the listing's deadline) was a one-line fix made by fix-1965 after the third review round and confirmed by the same reviewer, instead of a fourth round. ## Undo Revert the group's merges. Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at 2135fed6cf1f6b1e238c831695915fca7d3c8a35, three rounds and one confirmation. https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
mesh-tools added 4 commits 2026-11-09 08:12:24 +00:00
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
A node's bucket opens under its own deadline, so a per-node page is ended by its budget too (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-tools@164547645aed
mesh/delivery-group group fix/1966-views-page-time merged: every member is merged
mesh/check checking 2135fed6cf1f on 9f61975c50a0 | novox/mesh-tools#64 in group fix/1966-views-page-time
2135fed6cf
Review round 3: the open on the first key of a node ran on the listing's context,
whose deadline is spent before the page's budget.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Author
Member

Delivery novox/mesh-tools@2135fed6cf1f — merged since 2026-11-09T08:13:18Z

Source — source.main moved to novox/mesh-tools@164547645a. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/1966-views-page-time: novox/mesh-host@6bde46cb00, novox/mesh-sdk@833cffdc9b, novox/mesh-tools@2135fed6cf

Transitions

  • 2026-11-09 08:12 (new) → proposed (announced): novox/mesh-tools#64's head announced
  • 2026-11-09 08:12 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
  • 2026-11-09 08:13 ready → merged (merged): on the trunk its modules follow: merged there

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-tools@2135fed6cf1f` — **merged** since 2026-11-09T08:13:18Z **Source** — source.main moved to novox/mesh-tools@164547645aed. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1966-views-page-time`: novox/mesh-host@6bde46cb0084, novox/mesh-sdk@833cffdc9bdf, novox/mesh-tools@2135fed6cf1f **Transitions** - 2026-11-09 08:12 (new) → proposed (announced): novox/mesh-tools#64's head announced - 2026-11-09 08:12 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) - 2026-11-09 08:13 ready → merged (merged): on the trunk its modules follow: merged there The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit 164547645a into main 2026-11-09 08:13:14 +00:00
mesh-tools deleted branch fix/1966-views-page-time 2026-11-09 08:13:14 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-tools#64