github oxen-io/oxen-core v11.7.1
Oxen 11.7.1

4 hours ago

A bug-fix release for all service nodes. Operators on 11.7.0 should upgrade at their convenience; 11.7.0 nodes that get stuck with the pulse-block error below need an 11.7.1 to get running properly again.

Service node list divergence after restarts (LMDB nodes)

Two operators reported nodes decommissioned after oxend began rejecting the network's pulse blocks (Incorrect signature for vote) shortly after a restart, with references quorum height but that height is not stored! in the startup log. The cause: since 11.7.0 a restart replays the recent blocks into the service node list from the last rewards snapshot, and on the LMDB backend the in-memory history could lack the quorums that the first replayed blocks' state changes referenced; those state changes were silently skipped, the node's view of which service nodes were active diverged from the network's, and its next pulse quorum failed verification. It only triggered when a restart landed at the wrong point of a 60-block cycle while decommissions/recommissions were frequent, so it was rare and surfaced during a recent burst of decomms/recomms from unrelated issues (a large operator with recent connectivity issues.)

  • A missing quorum is now a hard error; the replay recovers by restoring the service node list and rewards from a stored state that carries the quorums it needs.
  • The in-memory history now keeps the quorums of the last 200 blocks, so ordinary restarts, pop_blocks and reorgs never need that recovery, while keeping full states only where they can be used — the stored recent-state data shrinks from ~44 MB to ~6 MB.
  • A node already stuck on 11.7.0 heals itself on its first start with 11.7.1. (There is a small possibility that a node that stopped exactly at a 60-block boundary could remain unfixed: if that happens, an oxend pop_blocks 100 should resolve it.)

Quorum testing

  • Session router reachability reports are now consulted by the quorum cop; previously they were collected and exposed over RPC but never used, so a node with an unreachable session router could never fail testing for it. Session router only tests nodes running 11.6+, so nothing changes for older nodes that haven't yet started running session-router.
  • New session_router_unreachable decommission reason (informational; not a consensus change).

Don't miss a new oxen-core release

NewReleases is sending notifications on new releases.