Skip to content

companion: wait for relay sync progress; no 30s hard deadline - #188

Merged
satran004 merged 3 commits into
bloxbean:mainfrom
rjharmon:companion-relay-sync-wait
Sep 25, 2026
Merged

satran004 merged 3 commits into
bloxbean:mainfrom
rjharmon:companion-relay-sync-wait

Conversation

@rjharmon

@rjharmon rjharmon commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Long epochs mean long bootstrap chains. The literal 30-second handover deadline cut the relay off mid-chain above roughly 15,000 blocks, so the producer restarted with a tip outside its own forecast horizon.

  • replace the fixed deadline with RelaySyncWaiter, which keeps waiting while the relay tip advances and gives up only when the tip stalls
  • add yano.relay.sync.stall.timeout.seconds (default 30, the old deadline) and yano.relay.sync.max.wait.seconds (default 0, no ceiling)
  • print relay sync progress every five seconds during long backfills
  • document the wait in the node modes page and the CLI properties file

rjharmon and others added 3 commits September 8, 2026 18:53
…dline

Long epochs mean long bootstrap chains. The literal 30-second handover
deadline cut the relay off mid-chain above roughly 15,000 blocks, so the
producer restarted with a tip outside its own forecast horizon.

- replace the fixed deadline with RelaySyncWaiter, which keeps waiting while
  the relay tip advances and gives up only when the tip stalls
- add yano.relay.sync.stall.timeout.seconds (default 30, the old deadline)
  and yano.relay.sync.max.wait.seconds (default 0, no ceiling)
- print relay sync progress every five seconds during long backfills
- document the wait in the node modes page and the CLI properties file
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A stall timeout of zero or less, or a negative ceiling, made the RelaySyncWaiter
constructor throw inside performHandover. The handover then skipped stopping Yano
and restoring the topology, and the Haskell producer restarted next to a Yano that
was still producing. Both values are now sanitized with a warning: the stall timeout
falls back to 30s, a negative ceiling means no ceiling, and oversized values are
capped so the millisecond conversion cannot overflow.

The first progress line also measures its rate from the first tip read instead of
always reporting 0 blocks/s.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@satran004
satran004 merged commit ea828be into bloxbean:main Sep 25, 2026
2 checks passed
satran004 added a commit that referenced this pull request Sep 26, 2026
Brings in #188 (relay sync wait by progress), #189 (slot-leader time travel below
f=1) and #190 (stabilityWindowFactor as a double).

- YanoConfigBuilder.build() takes the history dir, #189's slot-leader flag and the
  backfill interval; YanoService keeps both settings and passes both
- application.properties, both node.properties and the node-modes / node-configuration
  docs keep every section; the node.properties examples keep slotsPerKESPeriod=10000000

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

2 participants