Repository navigation
v0.2.141
Highlights
- Hosting memory is now counted, not estimated (#5779). The hosting limit no longer charges a flat 1 MiB per hosted contract. Each hosted contract is charged the bytes the node actually holds for it: the distinct neighbour summaries stored for it plus fixed per-record and per-entry charges. The budget is a fixed share of the node's memory limit. Fleet telemetry showed 66.5% of peers stuck at the old limit while using a median of 20% of their memory. Closes #5647, #5334, #5781.
- Neighbour interest records are freed when a contract stops being hosted (#5782). Evicting a contract previously left its neighbours' interest records and summaries in memory, and the contract stayed advertised.
- Identical neighbour summaries are stored once per contract (#5787).
- Transport: a re-armed stream listener no longer loses its wakeup (#5751).
- Dashboard: normal states are no longer styled as alarms (#5769). Release tooling: Gate B waits for GitHub to serve the new release as latest before booting the canary (#5771). Dependency bumps, including redb 4.2.0 -> 4.3.0.
Operator notes (#5779)
- A persisted non-default
hosting-mem-sharechanges meaning. It used to be a share of spare memory added to current RSS; it is now a share of the whole memory limit. For example, a persisted 0.5 now lets hosted contracts hold 50% of the node's memory limit (1 GiB on a 2 GiB node), and draws a startup warning above that. The default (0.125) is unchanged. - Small shares are floored at 64 MiB: on a 2 GiB node any share below 1/32 gives a 64 MiB budget.
- Removed telemetry series:
hosting_estimated_resident_overhead_bytes(replaced byhosting_resident_overhead_bytes, which does not compare with it) andhosting_contract_slot_budget. - Row-shape change:
network_efficiency_v1keepsv: 1while two rows get longer. Eachpopulatedrow grows from 4 to 5 entries (rejected_oversized) andcurrentfrom 5 to 6 (over_size_bound), both appended last so existing positions are unchanged. The broadcast payload mix gainstracked_missing_over_size_bound_sendsand_bytes. memory_rss_bytesis now reported on macOS and Windows as well as Linux.
Rollback signals (#5779)
The cap on contracts with tiny state rises from 508 to 32,768 on a 2 GiB node, and the hosting budget no longer reacts to memory pressure. Watch these per peer, against 0.2.140:
memory_rss_bytesagainst the memory limit (hosting_resident_overhead_budget_bytestimes 8 at the default share): RSS approaching the limit, or OOM restarts, is the signal to roll back.hosting_contract_countand CPU: a large rise in hosted contracts on small nodes with matching CPU growth.hosting_resident_overhead_evicted_charged_bytes_totalandhosting_resident_overhead_evictions_total: evictions should fall sharply from the current 73% of peers; a rise means the budget binds where it should not.interest_summary_bound_trims_total,rejected_oversizedandinterest_neighbour_summary_bytes: these should stay well below their bounds. A sustained nonzero trim or refusal rate, or the node-wide bytes sitting at their cap, on many peers means honest summaries are being refused and deltas are falling back to full state.
[AI-assisted - Claude]
What's Changed
- fix(dashboard): stop styling normal states as alarms by @sanity in #5769
- fix(release): wait for GitHub to serve the release before Gate B boots the canary by @sanity in #5771
- build(deps-dev): bump @babel/core from 7.23.2 to 7.29.7 in /tests/test-app-1 by @dependabot[bot] in #5738
- build(deps): bump brace-expansion from 1.1.18 to 1.1.21 in /tests/test-app-1 by @dependabot[bot] in #5766
- build(deps-dev): bump webpack-dev-middleware from 8.0.4 to 8.3.0 in /tests/test-app-1 by @dependabot[bot] in #5767
- build(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 in /crates/core/src/server by @dependabot[bot] in #5768
- build(deps): bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #5775
- build(deps-dev): bump the npm-minor-and-patch group in /crates/core/src/server with 2 updates by @dependabot[bot] in #5777
- build(deps): bump the nix group with 2 updates by @dependabot[bot] in #5778
- fix(transport): keep the wakeup when a re-armed stream listener fires by @onlyabrak in #5751
- build(deps): bump the cargo-minor-and-patch group across 1 directory with 17 updates by @dependabot[bot] in #5776
- docs(conformance): correct stale "not wired into the node" module doc by @sanity in #5783
- fix(interest): free neighbour interest records when a contract stops being hosted by @sanity in #5782
- perf(interest): store identical neighbour summaries once per contract by @sanity in #5787
- fix(hosting): count the memory hosted contracts hold instead of estimating 1 MiB each by @sanity in #5779
- build: release 0.2.141 by @sanity in #5788
Full Changelog: v0.2.140...v0.2.141