v0.2.0
This release fixes critical node leave, convergence, and cleanup issues found after v0.1.0.
In v0.1.0, if a node left the cluster without first being drained, the control plane could keep stale state for that node. Survivors could continue trying to reschedule or communicate with the missing node, networking state and eBPF maps could remain stale, and the load-balancer could still point at replicas hosted by the node that left.
v0.2.0 fixes those abrupt leave paths. Draining before leaving is still the cleaner path because the leaving node can remove its own remaining runtime state, but an undrained leave should no longer break control-plane convergence.
This release also includes a breaking Cap'n Proto session-bootstrap protocol change for typed ticket and credential rejection classification. Mixed v0.1.0 and v0.2.0 clusters are not supported.
Upgrade with a hard cutover to that new version, or use v0.2.0 directly if you are just getting started with Mantissa.
Breaking Changes
- Changed peer session bootstrap RPCs to return typed accepted/rejected results instead of surfacing expected membership/authentication refusals as generic Cap'n Proto errors. Rejections now carry stable codes for unknown tickets, unregistered peers, inactive local membership, invalid credentials, issuer mismatches, and unknown issuers. 72103e4
Fixed
-
Made node leave convergence idempotent. Duplicate leave tombstones delivered through direct broadcast, gossip, or anti-entropy no longer rewrite peer rows or perturb peer MST roots, while still allowing metadata repair and sync wakeups. 41fa553
-
Stopped registry session bootstrap for peers that have converged to left membership. Stale tickets are evicted when peers reject them as unknown, unregistered, or inactive. a9fb0d3
-
Quiesced cached registry contact paths after peer leave. Survivors now drop cached sessions/capabilities for left peers, and nodes that left stop reusing cached capabilities to surviving peers. c9a331c
-
Added retry backoff for repeated rejected session bootstrap attempts, reducing post-leave session churn while preserving cross-view metadata probes needed for split/merge convergence. 773580e
-
Fixed stale cluster node-count metadata after split/leave flows by ensuring replacement count records sort after the observed row they replace. f13e369
-
Tightened same-millisecond cluster node-count conflict resolution so survivor leave-derived counts can beat stale counts from peers that left. 773580e
-
Retired stale service tasks owned by left peers so cleanup no longer retries impossible remote stops forever after clean leave. 25912c4
-
Rescheduled service replicas away from nodes that explicitly left the cluster. e0f7c40
-
Retired network runtime rows for left peers, including peer-state and attachment rows, so replicated network state no longer keeps left nodes active. 359406c
-
Pruned stale Linux VXLAN FDB entries after peer leave by reading bridge-family FDB state and deleting obsolete forwarding entries. 0fad2ef
-
Preserved secret master-key reconciliation wakeups so split/merge adoption does not stall when the final required key row arrives while the reconciler is already busy. ef6beaf
-
Preserved rollout diagnostics when stale readiness waiters observe a restored / previous service generation after rollback. 486af62
Performance and Convergence
-
Coalesced immediate topology sync wakeups so bursty join/leave events do not spawn overlapping one-shot sync tasks. Additional wakeups during an active pass are folded into at most one follow-up pass. 0afa25e
-
Reused cached peer snapshots for member-count computation and published node-count rows. 0afa25e
Install mantissa 0.2.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MantissaLabs/mantissa/releases/download/v0.2.0/mantissa-installer.sh | shDownload mantissa 0.2.0
| File | Platform | Checksum |
|---|---|---|
| mantissa-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| mantissa-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo MantissaLabs/mantissaYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>