Part of #402 — follow-up to the app-wiring PR. Pairs with the scheduler Lagged issue.
Scope
Wrap the duty-pipeline callbacks with the retry executor. Charon wraps five callbacks with retry.New(deadlineFunc) / WithAsyncRetry (app/app.go:646-647 at v1.7.1): fetcher.Fetch, consensus.Participate, consensus.Propose, parsigex.Broadcast, bcast.Broadcast. Pluto's executor (crates/app/src/retry.rs, a faithful port of Charon app/retry) currently has zero call sites — add the inline wrapper layer in crates/app/src/node/wire.rs.
Without it, a single transient beacon-node/network error drops that duty on this node (threshold peers still complete it, so the cluster degrades gracefully — which is why this was deferred from the app-wiring PR). Wrapping also restores Charon's async duty-callback semantics: subscribers currently process duties serially, which is what makes the scheduler Lagged failure mode reachable.
Dependencies
None.
Acceptance
- The five callbacks are wrapped with per-duty deadlines from the beacon-derived deadline function.
- Wiring test: a transient beacon error on
fetcher.fetch is retried and the duty completes.
Part of #402 — follow-up to the app-wiring PR. Pairs with the scheduler
Laggedissue.Scope
Wrap the duty-pipeline callbacks with the retry executor. Charon wraps five callbacks with
retry.New(deadlineFunc)/WithAsyncRetry(app/app.go:646-647at v1.7.1):fetcher.Fetch,consensus.Participate,consensus.Propose,parsigex.Broadcast,bcast.Broadcast. Pluto's executor (crates/app/src/retry.rs, a faithful port of Charonapp/retry) currently has zero call sites — add the inline wrapper layer incrates/app/src/node/wire.rs.Without it, a single transient beacon-node/network error drops that duty on this node (threshold peers still complete it, so the cluster degrades gracefully — which is why this was deferred from the app-wiring PR). Wrapping also restores Charon's async duty-callback semantics: subscribers currently process duties serially, which is what makes the scheduler
Laggedfailure mode reachable.Dependencies
None.
Acceptance
fetcher.fetchis retried and the duty completes.