Skip to content

A completed detached dial should kick RoundNow — the 61/90 s residual after #568 is cadence-quantised #576

Description

@emooreatx

Follow-on to #568's second mechanism (v20.3.0 dial detach). CIRISServer re-measured on v20.3.0: 181/210 s → 61/90 s, one run per substrate, direction consistent with the detach. The remainder is still quantised to the scheduler cadence: 61 s ≈ 2 ticks, 90 s = 3 ticks of DEFAULT_CADENCE (30 s).

The mechanism that plausibly remains

The detach (DialCtx + tokio::spawn) means a round that abandons its wait no longer destroys the link — the dial completes and publishes into reusable_dialed_link. But nothing wakes the coordinator when it does. The next round toward that peer waits for the next cadence tick, and if the dial completed just after a tick, that's up to a full 30 s of a ready link sitting idle. Two ticks is the expected cost when the first round times out at +10 s and the dial completes somewhere in the following 20 s.

Proposed fix

On detached-dial completion, fire SchedulerCommand::RoundNow for the coordinators bound to that peer — the same kick sync_and_await already uses (CoordControl.kick, per-coordinator Notify; a kick during a round is held; interval.reset() after a kicked round). The plumbing exists; what's missing is the trigger from the transport's dial-completion back to the scheduler for that peer_key_id.

Expected outcome: the first round still times out at +10 s (the dial can't finish inside it), but the completed dial immediately kicks a round, so convergence lands at ~10 s + dial time rather than at the next tick boundary. That would take 61/90 s toward the 30–40 s range on this ladder.

Not to be done blind

Before wiring the kick, read ladder.owner_binding_converged's new gauge row (retry_queued / retry_dropped_total beside elapsed_ms) from a v20.3.0 mesh run. If retry_dropped_total is climbing during the window, the residual is retry-queue drops (leviculum#63's observation from the live canonical), not tick alignment, and a RoundNow kick would just retry into a shedding queue. The gauge row distinguishes them; #568 has now been inferred three times and measured zero.

Related: #568, leviculum#63, SchedulerCommand::RoundNow (v19.0.0 sync_and_await).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions