@peerbit/shared-log 13.2.32 → 13.2.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-info-v2-receive.js","sourceRoot":"","sources":["../../src/replication-info-v2-receive.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,7 @@ import type { RPC } from "@peerbit/rpc";
3
3
  import type { TransportMessage } from "./message.js";
4
4
  import type { ReplicationRangeIndexable } from "./ranges.js";
5
5
  import { AddedReplicationSegmentMessage, AllReplicatingSegmentsMessage, RequestReplicationInfoV2Message, StoppedReplicating } from "./replication.js";
6
- /**
7
- * Derive the token echoed by V2 data frames. Delivery recipients are unsigned,
8
- * so the receiver's nonce alone is not a destination binding. Folding both
9
- * authenticated identities and signed transport sessions into the 32-byte
10
- * field prevents a copied request nonce from creating an interchangeable
11
- * stream for another receiver.
12
- */
13
- export declare const deriveReplicationInfoV2ReceiverBinding: (properties: {
14
- receiverChallenge: Uint8Array;
15
- receiver: PublicSignKey;
16
- receiverTransportSession: bigint;
17
- sender: PublicSignKey;
18
- senderTransportSession: bigint;
19
- }) => Uint8Array;
6
+ export { deriveReplicationInfoV2ReceiverBinding } from "./replication-info-v2-binding.js";
20
7
  export type LegacyReplicationInfoMessage = AllReplicatingSegmentsMessage | AddedReplicationSegmentMessage | StoppedReplicating;
21
8
  type SendRequest = {
22
9
  kind: "snapshot";
@@ -30,15 +17,19 @@ export type ReplicationInfoV2SendState = {
30
17
  peerSession: object;
31
18
  receiverTransportSession: bigint;
32
19
  senderTransportSession: bigint;
20
+ capabilityTimestamp: bigint;
33
21
  lastRequestTimestamp: bigint;
34
22
  receiverRequestChallenge: Uint8Array;
35
23
  receiverChallenge: Uint8Array;
36
24
  senderEpoch: Uint8Array;
37
25
  ownershipLifecycleController: AbortController;
26
+ ownershipAbortListener: () => void;
38
27
  nextSequence: bigint;
39
28
  established: boolean;
40
29
  suspended: boolean;
41
30
  inFlightSequence?: bigint;
31
+ retryTimer?: ReturnType<typeof setTimeout>;
32
+ retryAttempts: number;
42
33
  controller: AbortController;
43
34
  pending?: SendRequest;
44
35
  worker?: Promise<void>;
@@ -52,9 +43,12 @@ export type ReplicationInfoV2SendDeps<R extends "u32" | "u64"> = {
52
43
  mode: unknown;
53
44
  }[]) => void;
54
45
  isClosed: () => boolean;
46
+ isPeerSessionCurrent: (peerHash: string, peerSession: object) => boolean;
55
47
  isPeerSessionOpen: (peerHash: string, peerSession: object) => boolean;
56
48
  captureReplicationOwnershipLifecycle: () => AbortController;
57
49
  isReplicationOwnershipLifecycleActive: (controller: AbortController) => boolean;
50
+ sendRetryMs?: number;
51
+ maxSendRetryMs?: number;
58
52
  };
59
53
  /**
60
54
  * Per-destination V2 sender streams. Each stream retains at most one in-flight
@@ -67,6 +61,8 @@ export declare class ReplicationInfoV2SendCoordinator<R extends "u32" | "u64"> {
67
61
  _sendStates: Map<string, ReplicationInfoV2SendState>;
68
62
  _spentPeerSessions: WeakSet<object>;
69
63
  _retiringWorkersByPeer: Map<string, Promise<void>>;
64
+ private readonly sendRetryMs;
65
+ private readonly maxSendRetryMs;
70
66
  constructor(deps: ReplicationInfoV2SendDeps<R>);
71
67
  resetForOpen(): void;
72
68
  clearForClose(): void;
@@ -75,22 +71,35 @@ export declare class ReplicationInfoV2SendCoordinator<R extends "u32" | "u64"> {
75
71
  private clearState;
76
72
  private trackRetiringWorker;
77
73
  private isDestinationCurrent;
74
+ private isDestinationReady;
78
75
  private isCurrent;
76
+ private retireSpentState;
77
+ /**
78
+ * Collapse every interrupted normal-send path to one authoritative snapshot.
79
+ * A closed readiness gate is temporary while the exact PeerSession remains
80
+ * current, so it parks instead of destroying the receiver binding. Sequence
81
+ * exhaustion is terminal even when readiness or ownership changed at the same
82
+ * time as an in-flight transport attempt.
83
+ */
84
+ private parkSnapshotForRetry;
79
85
  /**
80
86
  * Accept a signed receiver request. An exact newer retry asks for another
81
87
  * full snapshot without resetting the epoch/sequence. A different challenge
82
- * cannot replace the first binding within one PeerSession; this prevents a
83
- * signed request flood from spawning unbounded orphan snapshot reads.
88
+ * can replace the binding only after a strictly newer signed capability;
89
+ * retiring work is drained before the replacement can start.
84
90
  */
85
91
  acceptRequest(request: RequestReplicationInfoV2Message, properties: {
86
92
  from: PublicSignKey;
87
93
  peerSession: object;
88
94
  receiverTransportSession: bigint;
95
+ capabilityTimestamp: bigint;
89
96
  requestTimestamp: bigint;
90
97
  }): boolean;
91
98
  enqueue(message: LegacyReplicationInfoMessage): void;
92
99
  enqueueSnapshotForPeer(peerHash: string): void;
93
100
  private enqueueState;
101
+ private retryDelay;
102
+ private scheduleRetry;
94
103
  private createMessage;
95
104
  private runWorker;
96
105
  /**
@@ -103,5 +112,4 @@ export declare class ReplicationInfoV2SendCoordinator<R extends "u32" | "u64"> {
103
112
  sendTerminalReset(signal: AbortSignal): Promise<void>;
104
113
  drain(signal?: AbortSignal): Promise<void>;
105
114
  }
106
- export {};
107
115
  //# sourceMappingURL=replication-info-v2-send.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replication-info-v2-send.d.ts","sourceRoot":"","sources":["../../src/replication-info-v2-send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication-info-v2-send.d.ts","sourceRoot":"","sources":["../../src/replication-info-v2-send.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,14 @@
1
- import { serialize } from "@dao-xyz/borsh";
2
- import { randomBytes, sha256Sync } from "@peerbit/crypto";
1
+ import { randomBytes } from "@peerbit/crypto";
3
2
  import { logger as loggerFn } from "@peerbit/logger";
4
3
  import { AcknowledgeDelivery, CONVERGENCE_MESSAGE_PRIORITY, } from "@peerbit/stream-interface";
5
- import { concat, fromString } from "uint8arrays";
4
+ import { deriveReplicationInfoV2ReceiverBinding } from "./replication-info-v2-binding.js";
6
5
  import { AddedReplicationInfoV2Message, AddedReplicationSegmentMessage, AllReplicatingSegmentsMessage, FullReplicationInfoV2Message, RequestReplicationInfoV2Message, StoppedReplicating, StoppedReplicationInfoV2Message, } from "./replication.js";
7
6
  const logger = loggerFn("peerbit:shared-log:replication-info-v2-send");
8
7
  const MAX_U64 = (1n << 64n) - 1n;
9
- const RECEIVER_BINDING_DOMAIN = fromString("peerbit/shared-log/replication-info-v2/receiver-binding/v1");
10
- const lengthPrefixed = (bytes) => {
11
- const length = new Uint8Array(4);
12
- new DataView(length.buffer).setUint32(0, bytes.byteLength, true);
13
- return concat([length, bytes]);
14
- };
15
- const u64LittleEndian = (value) => {
16
- const bytes = new Uint8Array(8);
17
- new DataView(bytes.buffer).setBigUint64(0, value, true);
18
- return bytes;
19
- };
20
- /**
21
- * Derive the token echoed by V2 data frames. Delivery recipients are unsigned,
22
- * so the receiver's nonce alone is not a destination binding. Folding both
23
- * authenticated identities and signed transport sessions into the 32-byte
24
- * field prevents a copied request nonce from creating an interchangeable
25
- * stream for another receiver.
26
- */
27
- export const deriveReplicationInfoV2ReceiverBinding = (properties) => sha256Sync(concat([
28
- lengthPrefixed(RECEIVER_BINDING_DOMAIN),
29
- lengthPrefixed(properties.receiverChallenge),
30
- lengthPrefixed(serialize(properties.receiver)),
31
- u64LittleEndian(properties.receiverTransportSession),
32
- lengthPrefixed(serialize(properties.sender)),
33
- u64LittleEndian(properties.senderTransportSession),
34
- ]));
8
+ const DEFAULT_SEND_RETRY_MS = 1_000;
9
+ const DEFAULT_MAX_SEND_RETRY_MS = 30_000;
10
+ const MAX_BACKOFF_EXPONENT = 20;
11
+ export { deriveReplicationInfoV2ReceiverBinding } from "./replication-info-v2-binding.js";
35
12
  const bytesEqual = (left, right) => {
36
13
  if (left.byteLength !== right.byteLength) {
37
14
  return false;
@@ -54,8 +31,12 @@ export class ReplicationInfoV2SendCoordinator {
54
31
  _sendStates;
55
32
  _spentPeerSessions;
56
33
  _retiringWorkersByPeer;
34
+ sendRetryMs;
35
+ maxSendRetryMs;
57
36
  constructor(deps) {
58
37
  this.deps = deps;
38
+ this.sendRetryMs = Math.max(1, deps.sendRetryMs ?? DEFAULT_SEND_RETRY_MS);
39
+ this.maxSendRetryMs = Math.max(this.sendRetryMs, deps.maxSendRetryMs ?? DEFAULT_MAX_SEND_RETRY_MS);
59
40
  this._senderEpoch = randomBytes(32);
60
41
  this._sendStates = new Map();
61
42
  this._spentPeerSessions = new WeakSet();
@@ -88,6 +69,11 @@ export class ReplicationInfoV2SendCoordinator {
88
69
  }
89
70
  clearState(state) {
90
71
  this.trackRetiringWorker(state);
72
+ if (state.retryTimer) {
73
+ clearTimeout(state.retryTimer);
74
+ state.retryTimer = undefined;
75
+ }
76
+ state.ownershipLifecycleController.signal.removeEventListener("abort", state.ownershipAbortListener);
91
77
  state.controller.abort();
92
78
  if (this._sendStates.get(state.peerHash) === state) {
93
79
  this._sendStates.delete(state.peerHash);
@@ -117,18 +103,55 @@ export class ReplicationInfoV2SendCoordinator {
117
103
  return (!this.deps.isClosed() &&
118
104
  !state.controller.signal.aborted &&
119
105
  this._sendStates.get(state.peerHash) === state &&
120
- this.deps.isPeerSessionOpen(state.peerHash, state.peerSession) &&
106
+ this.deps.isPeerSessionCurrent(state.peerHash, state.peerSession) &&
121
107
  this.deps.getSenderTransportSession() === state.senderTransportSession);
122
108
  }
123
- isCurrent(state) {
109
+ isDestinationReady(state) {
124
110
  return (this.isDestinationCurrent(state) &&
111
+ this.deps.isPeerSessionOpen(state.peerHash, state.peerSession));
112
+ }
113
+ isCurrent(state) {
114
+ return (this.isDestinationReady(state) &&
125
115
  this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController));
126
116
  }
117
+ retireSpentState(state) {
118
+ this._spentPeerSessions.add(state.peerSession);
119
+ this.clearState(state);
120
+ }
121
+ /**
122
+ * Collapse every interrupted normal-send path to one authoritative snapshot.
123
+ * A closed readiness gate is temporary while the exact PeerSession remains
124
+ * current, so it parks instead of destroying the receiver binding. Sequence
125
+ * exhaustion is terminal even when readiness or ownership changed at the same
126
+ * time as an in-flight transport attempt.
127
+ */
128
+ parkSnapshotForRetry(state) {
129
+ state.inFlightSequence = undefined;
130
+ if (state.nextSequence > MAX_U64) {
131
+ this.retireSpentState(state);
132
+ return;
133
+ }
134
+ if (!this.isDestinationCurrent(state)) {
135
+ this.clearState(state);
136
+ return;
137
+ }
138
+ if (!this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController)) {
139
+ if (state.retryTimer) {
140
+ clearTimeout(state.retryTimer);
141
+ state.retryTimer = undefined;
142
+ }
143
+ state.pending = undefined;
144
+ return;
145
+ }
146
+ state.suspended = true;
147
+ state.pending = { kind: "snapshot" };
148
+ this.scheduleRetry(state);
149
+ }
127
150
  /**
128
151
  * Accept a signed receiver request. An exact newer retry asks for another
129
152
  * full snapshot without resetting the epoch/sequence. A different challenge
130
- * cannot replace the first binding within one PeerSession; this prevents a
131
- * signed request flood from spawning unbounded orphan snapshot reads.
153
+ * can replace the binding only after a strictly newer signed capability;
154
+ * retiring work is drained before the replacement can start.
132
155
  */
133
156
  acceptRequest(request, properties) {
134
157
  const self = this.deps.getSelfKey();
@@ -141,6 +164,7 @@ export class ReplicationInfoV2SendCoordinator {
141
164
  const peerHash = properties.from.hashcode();
142
165
  if (this._retiringWorkersByPeer.has(peerHash) ||
143
166
  this._spentPeerSessions.has(properties.peerSession) ||
167
+ !this.deps.isPeerSessionCurrent(peerHash, properties.peerSession) ||
144
168
  !this.deps.isPeerSessionOpen(peerHash, properties.peerSession)) {
145
169
  return false;
146
170
  }
@@ -154,6 +178,12 @@ export class ReplicationInfoV2SendCoordinator {
154
178
  return false;
155
179
  }
156
180
  }
181
+ if (previous &&
182
+ !this.deps.isReplicationOwnershipLifecycleActive(previous.ownershipLifecycleController)) {
183
+ // Ownership teardown retains the binding only so close/drop can send its
184
+ // terminal empty Full. A later request must not revive normal delivery.
185
+ return false;
186
+ }
157
187
  if (previous) {
158
188
  const sameBinding = previous.peerSession === properties.peerSession &&
159
189
  previous.receiverTransportSession ===
@@ -164,19 +194,36 @@ export class ReplicationInfoV2SendCoordinator {
164
194
  return false;
165
195
  }
166
196
  previous.lastRequestTimestamp = properties.requestTimestamp;
197
+ previous.capabilityTimestamp = properties.capabilityTimestamp;
198
+ if (previous.retryTimer) {
199
+ clearTimeout(previous.retryTimer);
200
+ previous.retryTimer = undefined;
201
+ }
167
202
  previous.suspended = false;
203
+ previous.pending = { kind: "snapshot" };
168
204
  this.enqueueState(previous, { kind: "snapshot" });
169
205
  return true;
170
206
  }
171
- return false;
207
+ if (properties.capabilityTimestamp <= previous.capabilityTimestamp) {
208
+ return false;
209
+ }
210
+ this.clearState(previous);
211
+ previous = undefined;
212
+ if (this._retiringWorkersByPeer.has(peerHash)) {
213
+ return false;
214
+ }
172
215
  }
173
216
  const ownershipLifecycleController = this.deps.captureReplicationOwnershipLifecycle();
217
+ if (!this.deps.isReplicationOwnershipLifecycleActive(ownershipLifecycleController)) {
218
+ return false;
219
+ }
174
220
  const state = {
175
221
  peerHash,
176
222
  target: properties.from,
177
223
  peerSession: properties.peerSession,
178
224
  receiverTransportSession: properties.receiverTransportSession,
179
225
  senderTransportSession,
226
+ capabilityTimestamp: properties.capabilityTimestamp,
180
227
  lastRequestTimestamp: properties.requestTimestamp,
181
228
  receiverRequestChallenge: request.receiverChallenge.slice(),
182
229
  receiverChallenge: deriveReplicationInfoV2ReceiverBinding({
@@ -187,12 +234,22 @@ export class ReplicationInfoV2SendCoordinator {
187
234
  senderTransportSession,
188
235
  }),
189
236
  senderEpoch: this._senderEpoch.slice(),
237
+ ownershipAbortListener: () => { },
190
238
  nextSequence: 1n,
191
239
  established: false,
192
240
  suspended: false,
241
+ retryAttempts: 0,
193
242
  controller: new AbortController(),
194
243
  ownershipLifecycleController,
195
244
  };
245
+ state.ownershipAbortListener = () => {
246
+ if (state.retryTimer) {
247
+ clearTimeout(state.retryTimer);
248
+ state.retryTimer = undefined;
249
+ }
250
+ state.pending = undefined;
251
+ };
252
+ ownershipLifecycleController.signal.addEventListener("abort", state.ownershipAbortListener, { once: true });
196
253
  this._sendStates.set(peerHash, state);
197
254
  this.enqueueState(state, { kind: "snapshot" });
198
255
  return true;
@@ -209,16 +266,15 @@ export class ReplicationInfoV2SendCoordinator {
209
266
  }
210
267
  }
211
268
  enqueueState(state, request) {
212
- if (!this.isCurrent(state)) {
213
- state.pending = undefined;
214
- if (!this.isDestinationCurrent(state) ||
215
- this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController)) {
216
- this.clearState(state);
217
- }
269
+ if (state.nextSequence > MAX_U64 || !this.isCurrent(state)) {
270
+ this.parkSnapshotForRetry(state);
218
271
  return;
219
272
  }
220
273
  if (state.suspended) {
221
- state.pending = undefined;
274
+ // Delivery is ambiguous while the backoff is armed. Never retain a
275
+ // potentially stale delta: one authoritative Full represents every
276
+ // mutation that arrives before the retry fires.
277
+ this.parkSnapshotForRetry(state);
222
278
  return;
223
279
  }
224
280
  if (!state.worker) {
@@ -227,33 +283,15 @@ export class ReplicationInfoV2SendCoordinator {
227
283
  worker = Promise.resolve()
228
284
  .then(() => this.runWorker(state))
229
285
  .catch((error) => {
230
- const ownershipActive = this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController);
231
- if (ownershipActive &&
286
+ // Sequence cleanup and exhaustion fencing must happen before any
287
+ // readiness/ownership classification in the recovery path.
288
+ this.parkSnapshotForRetry(state);
289
+ if (this._sendStates.get(state.peerHash) === state &&
290
+ this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController) &&
232
291
  !state.controller.signal.aborted &&
233
292
  !this.deps.isClosed()) {
234
293
  logger.trace("Replication-info V2 destination stream failed for %s: %s", state.peerHash, error?.message ?? String(error));
235
294
  }
236
- state.pending = undefined;
237
- const ordinaryFailure = ownershipActive && this.isDestinationCurrent(state);
238
- if (ordinaryFailure) {
239
- if (state.inFlightSequence !== undefined) {
240
- state.inFlightSequence = undefined;
241
- if (state.nextSequence > MAX_U64) {
242
- this._spentPeerSessions.add(state.peerSession);
243
- this.clearState(state);
244
- return;
245
- }
246
- }
247
- // A delivery error is ambiguous: the receiver may already have
248
- // applied this sequence. Retain the exact grant, stop ordinary
249
- // deltas, and require a newer same-challenge request to resume
250
- // with an authoritative Full at the next safe sequence.
251
- state.suspended = true;
252
- return;
253
- }
254
- if (!this.isDestinationCurrent(state)) {
255
- this.clearState(state);
256
- }
257
295
  })
258
296
  .finally(() => {
259
297
  if (state.worker === worker) {
@@ -262,7 +300,7 @@ export class ReplicationInfoV2SendCoordinator {
262
300
  // before this promise reaction clears `worker`. Re-arm that item
263
301
  // here so the one-slot bound cannot become a stranded queue.
264
302
  const pending = state.pending;
265
- if (pending && this.isCurrent(state)) {
303
+ if (pending) {
266
304
  state.pending = undefined;
267
305
  this.enqueueState(state, pending);
268
306
  }
@@ -279,6 +317,39 @@ export class ReplicationInfoV2SendCoordinator {
279
317
  // replace the pending delta with a current authoritative snapshot.
280
318
  state.pending = { kind: "snapshot" };
281
319
  }
320
+ retryDelay(state) {
321
+ const exponent = Math.max(0, state.retryAttempts - 1);
322
+ return Math.min(this.maxSendRetryMs, this.sendRetryMs * 2 ** Math.min(exponent, MAX_BACKOFF_EXPONENT));
323
+ }
324
+ scheduleRetry(state) {
325
+ if (state.retryTimer) {
326
+ return;
327
+ }
328
+ if (state.nextSequence > MAX_U64) {
329
+ this.retireSpentState(state);
330
+ return;
331
+ }
332
+ if (!this.isDestinationCurrent(state)) {
333
+ this.clearState(state);
334
+ return;
335
+ }
336
+ if (!this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController)) {
337
+ state.pending = undefined;
338
+ return;
339
+ }
340
+ state.retryAttempts = Math.min(state.retryAttempts + 1, MAX_BACKOFF_EXPONENT + 1);
341
+ state.retryTimer = setTimeout(() => {
342
+ state.retryTimer = undefined;
343
+ if (state.nextSequence > MAX_U64 || !this.isCurrent(state)) {
344
+ this.parkSnapshotForRetry(state);
345
+ return;
346
+ }
347
+ state.suspended = false;
348
+ state.pending = { kind: "snapshot" };
349
+ this.enqueueState(state, { kind: "snapshot" });
350
+ }, this.retryDelay(state));
351
+ state.retryTimer.unref?.();
352
+ }
282
353
  async createMessage(state, request) {
283
354
  const common = {
284
355
  receiverChallenge: state.receiverChallenge.slice(),
@@ -307,18 +378,19 @@ export class ReplicationInfoV2SendCoordinator {
307
378
  });
308
379
  }
309
380
  async runWorker(state) {
310
- while (this.isCurrent(state)) {
381
+ while (true) {
382
+ if (state.nextSequence > MAX_U64 || !this.isCurrent(state)) {
383
+ this.parkSnapshotForRetry(state);
384
+ return;
385
+ }
311
386
  const request = state.pending;
312
387
  if (!request) {
313
388
  return;
314
389
  }
315
390
  state.pending = undefined;
316
- if (state.nextSequence > MAX_U64) {
317
- this.clearState(state);
318
- return;
319
- }
320
391
  const message = await this.createMessage(state, request);
321
- if (!this.isCurrent(state)) {
392
+ if (state.nextSequence > MAX_U64 || !this.isCurrent(state)) {
393
+ this.parkSnapshotForRetry(state);
322
394
  return;
323
395
  }
324
396
  // Consume the sequence before the transport attempt. From this point on
@@ -339,15 +411,12 @@ export class ReplicationInfoV2SendCoordinator {
339
411
  ]),
340
412
  });
341
413
  state.inFlightSequence = undefined;
342
- if (!this.isCurrent(state)) {
414
+ if (state.nextSequence > MAX_U64 || !this.isCurrent(state)) {
415
+ this.parkSnapshotForRetry(state);
343
416
  return;
344
417
  }
418
+ state.retryAttempts = 0;
345
419
  state.established = true;
346
- if (state.nextSequence > MAX_U64) {
347
- this._spentPeerSessions.add(state.peerSession);
348
- this.clearState(state);
349
- return;
350
- }
351
420
  }
352
421
  }
353
422
  /**
@@ -366,20 +435,35 @@ export class ReplicationInfoV2SendCoordinator {
366
435
  continue;
367
436
  }
368
437
  state.pending = undefined;
438
+ const sequence = state.nextSequence;
439
+ state.nextSequence += 1n;
369
440
  const message = new FullReplicationInfoV2Message({
370
441
  receiverChallenge: state.receiverChallenge.slice(),
371
442
  senderEpoch: state.senderEpoch.slice(),
372
- sequence: state.nextSequence,
443
+ sequence,
373
444
  segments: [],
374
445
  });
375
- sends.push(this.deps.getRpc().send(message, {
376
- mode: new AcknowledgeDelivery({
377
- to: [state.target],
378
- redundancy: 1,
379
- }),
380
- priority: CONVERGENCE_MESSAGE_PRIORITY,
381
- signal,
382
- }));
446
+ if (sequence === MAX_U64) {
447
+ // Retire the exhausted normal stream before transport invocation. The
448
+ // terminal attempt remains valid because it carries its caller-owned
449
+ // signal rather than the state controller that clearState aborts.
450
+ this.retireSpentState(state);
451
+ }
452
+ try {
453
+ sends.push(Promise.resolve(this.deps.getRpc().send(message, {
454
+ mode: new AcknowledgeDelivery({
455
+ to: [state.target],
456
+ redundancy: 1,
457
+ }),
458
+ priority: CONVERGENCE_MESSAGE_PRIORITY,
459
+ signal,
460
+ })));
461
+ }
462
+ catch (error) {
463
+ // Keep one synchronous transport failure isolated to its destination;
464
+ // the sequence was already consumed and later peers must still reset.
465
+ sends.push(Promise.reject(error));
466
+ }
383
467
  }
384
468
  await Promise.allSettled(sends);
385
469
  }