You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Replication send loop: certification veto stays latched for the whole connection after a benign scan failure #1066
#815 adds a connection-scoped flag (sendLogBreakUnresolved in replication/replicationConnection.ts) that is set the moment the send loop observes a scan failure: a corruptFrameStop, failedLogs, or a boundary range's exactStartFailures. It is never cleared for the rest of the connection. While it is set, the send loop does not certify the peer's per-origin floors (originFloors), because a later clean drain of a replaced range cannot prove that the gap an earlier, discarded range left was delivered.
Two cases make this broader than necessary:
A benign torn tail (the repaired, designed case) latches it, so floor certification stays off until the connection is rebuilt even though nothing was lost.
A superseded send loop can latch it for its replacement, because its failure is observed before the superseded-subscription guard.
Consequence: more resend work after a reconnect than strictly needed. No data loss: withholding certification is the safe direction.
Suggested direction
Scope the veto to the range object that failed, and clear it only when a replacement range is proven to have delivered everything the failed range could have skipped (for example, after the replacement drains past the failed range's highest sent position for the affected log).
Moot after Recover a replication send leg stopped at a torn transaction-log frame (harper-pro#815) (merged as 3889753): the connection-wide sendLogBreakUnresolved veto came from the in-place range rebuild, which was removed. A stopped range is now never replaced within the session; the session reconnects instead, so the existing per-range certification check still sees the failure and a fresh connection starts clean.
Activity
kriszyp commentedon Oct 26, 2026
Moot after Recover a replication send leg stopped at a torn transaction-log frame (harper-pro#815) (merged as 3889753): the connection-wide
sendLogBreakUnresolvedveto came from the in-place range rebuild, which was removed. A stopped range is now never replaced within the session; the session reconnects instead, so the existing per-range certification check still sees the failure and a fresh connection starts clean.— Claude Opus 5.5