@peerbit/shared-log 13.2.30 → 13.2.32

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.
@@ -71,7 +71,9 @@ export type ReplicationAnnouncementDeps<R extends "u32" | "u64"> = {
71
71
  callRebalanceParticipationDebounced: () => unknown;
72
72
  queueCurrentReplicationStateAnnouncementRepair: () => void;
73
73
  queueCurrentReplicationStateAnnouncementRetry: (error: unknown) => boolean;
74
+ enqueueReplicationInfoV2: (message: LegacyReplicationInfoMessage) => void;
74
75
  };
76
+ type LegacyReplicationInfoMessage = AllReplicatingSegmentsMessage | AddedReplicationSegmentMessage | StoppedReplicating;
75
77
  export declare class ReplicationAnnouncementCoordinator<R extends "u32" | "u64"> {
76
78
  private readonly deps;
77
79
  replicationAnnouncementRetryDebounced: ReturnType<typeof debounceFixedInterval> | undefined;
@@ -107,7 +109,7 @@ export declare class ReplicationAnnouncementCoordinator<R extends "u32" | "u64">
107
109
  runCurrentReplicationStateAnnouncementRepair(): Promise<void>;
108
110
  repairCurrentReplicationStateAnnouncement(context?: ReplicationAnnouncementRepairWorkerContext): Promise<void>;
109
111
  cancelCurrentReplicationStateAnnouncementRetry(): void;
110
- sendReplicationAnnouncement(message: AllReplicatingSegmentsMessage | AddedReplicationSegmentMessage | StoppedReplicating, ownershipLifecycleController?: AbortController, options?: {
112
+ sendReplicationAnnouncement(message: LegacyReplicationInfoMessage, ownershipLifecycleController?: AbortController, options?: {
111
113
  shouldSend?: () => boolean;
112
114
  }): Promise<void>;
113
115
  retryCurrentReplicationStateAnnouncement(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"replication-announcement.d.ts","sourceRoot":"","sources":["../../src/replication-announcement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication-announcement.d.ts","sourceRoot":"","sources":["../../src/replication-announcement.ts"],"names":[],"mappings":"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"}
@@ -425,6 +425,7 @@ export class ReplicationAnnouncementCoordinator {
425
425
  // after that stale send settles.
426
426
  this.rotateAnnouncementSession();
427
427
  this.advanceCurrentReplicationStateAnnouncementRepairGeneration();
428
+ this.deps.enqueueReplicationInfoV2(message);
428
429
  try {
429
430
  await this.deps.getRpc().send(message, {
430
431
  priority: CONVERGENCE_MESSAGE_PRIORITY,
@@ -1 +1 @@
1
- {"version":3,"file":"replication-announcement.js","sourceRoot":"","sources":["../../src/replication-announcement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication-announcement.js","sourceRoot":"","sources":["../../src/replication-announcement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { type PublicSignKey } from "@peerbit/crypto";
2
+ import type { RPC } from "@peerbit/rpc";
3
+ import type { TransportMessage } from "./message.js";
4
+ import type { ReplicationRangeIndexable } from "./ranges.js";
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;
20
+ export type LegacyReplicationInfoMessage = AllReplicatingSegmentsMessage | AddedReplicationSegmentMessage | StoppedReplicating;
21
+ type SendRequest = {
22
+ kind: "snapshot";
23
+ } | {
24
+ kind: "message";
25
+ message: LegacyReplicationInfoMessage;
26
+ };
27
+ export type ReplicationInfoV2SendState = {
28
+ peerHash: string;
29
+ target: PublicSignKey;
30
+ peerSession: object;
31
+ receiverTransportSession: bigint;
32
+ senderTransportSession: bigint;
33
+ lastRequestTimestamp: bigint;
34
+ receiverRequestChallenge: Uint8Array;
35
+ receiverChallenge: Uint8Array;
36
+ senderEpoch: Uint8Array;
37
+ ownershipLifecycleController: AbortController;
38
+ nextSequence: bigint;
39
+ established: boolean;
40
+ suspended: boolean;
41
+ inFlightSequence?: bigint;
42
+ controller: AbortController;
43
+ pending?: SendRequest;
44
+ worker?: Promise<void>;
45
+ };
46
+ export type ReplicationInfoV2SendDeps<R extends "u32" | "u64"> = {
47
+ getRpc: () => RPC<TransportMessage, TransportMessage>;
48
+ getSelfKey: () => PublicSignKey;
49
+ getSenderTransportSession: () => bigint;
50
+ getMyReplicationSegments: () => Promise<ReplicationRangeIndexable<R>[]>;
51
+ validatePersistedReplicationRangeSnapshot: (ranges: readonly {
52
+ mode: unknown;
53
+ }[]) => void;
54
+ isClosed: () => boolean;
55
+ isPeerSessionOpen: (peerHash: string, peerSession: object) => boolean;
56
+ captureReplicationOwnershipLifecycle: () => AbortController;
57
+ isReplicationOwnershipLifecycleActive: (controller: AbortController) => boolean;
58
+ };
59
+ /**
60
+ * Per-destination V2 sender streams. Each stream retains at most one in-flight
61
+ * operation and one pending operation. A second pending mutation coalesces to
62
+ * a freshly collected authoritative snapshot, bounding memory at O(peers).
63
+ */
64
+ export declare class ReplicationInfoV2SendCoordinator<R extends "u32" | "u64"> {
65
+ private readonly deps;
66
+ _senderEpoch: Uint8Array;
67
+ _sendStates: Map<string, ReplicationInfoV2SendState>;
68
+ _spentPeerSessions: WeakSet<object>;
69
+ _retiringWorkersByPeer: Map<string, Promise<void>>;
70
+ constructor(deps: ReplicationInfoV2SendDeps<R>);
71
+ resetForOpen(): void;
72
+ clearForClose(): void;
73
+ clearPeer(peerHash: string, expectedSession?: object): void;
74
+ advancePeerCapability(peerHash: string): void;
75
+ private clearState;
76
+ private trackRetiringWorker;
77
+ private isDestinationCurrent;
78
+ private isCurrent;
79
+ /**
80
+ * Accept a signed receiver request. An exact newer retry asks for another
81
+ * 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.
84
+ */
85
+ acceptRequest(request: RequestReplicationInfoV2Message, properties: {
86
+ from: PublicSignKey;
87
+ peerSession: object;
88
+ receiverTransportSession: bigint;
89
+ requestTimestamp: bigint;
90
+ }): boolean;
91
+ enqueue(message: LegacyReplicationInfoMessage): void;
92
+ enqueueSnapshotForPeer(peerHash: string): void;
93
+ private enqueueState;
94
+ private createMessage;
95
+ private runWorker;
96
+ /**
97
+ * Terminal close/drop runs after the normal ownership generation is aborted.
98
+ * Send an authoritative empty Full directly from the retained destination
99
+ * bindings. `nextSequence` is consumed before every transport attempt, so it
100
+ * is always safe for different terminal content even if a just-aborted frame
101
+ * was delivered. Receivers admit Full gaps as authoritative resynchronization.
102
+ */
103
+ sendTerminalReset(signal: AbortSignal): Promise<void>;
104
+ drain(signal?: AbortSignal): Promise<void>;
105
+ }
106
+ export {};
107
+ //# sourceMappingURL=replication-info-v2-send.d.ts.map
@@ -0,0 +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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"}
@@ -0,0 +1,415 @@
1
+ import { serialize } from "@dao-xyz/borsh";
2
+ import { randomBytes, sha256Sync } from "@peerbit/crypto";
3
+ import { logger as loggerFn } from "@peerbit/logger";
4
+ import { AcknowledgeDelivery, CONVERGENCE_MESSAGE_PRIORITY, } from "@peerbit/stream-interface";
5
+ import { concat, fromString } from "uint8arrays";
6
+ import { AddedReplicationInfoV2Message, AddedReplicationSegmentMessage, AllReplicatingSegmentsMessage, FullReplicationInfoV2Message, RequestReplicationInfoV2Message, StoppedReplicating, StoppedReplicationInfoV2Message, } from "./replication.js";
7
+ const logger = loggerFn("peerbit:shared-log:replication-info-v2-send");
8
+ 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
+ ]));
35
+ const bytesEqual = (left, right) => {
36
+ if (left.byteLength !== right.byteLength) {
37
+ return false;
38
+ }
39
+ for (let index = 0; index < left.byteLength; index++) {
40
+ if (left[index] !== right[index]) {
41
+ return false;
42
+ }
43
+ }
44
+ return true;
45
+ };
46
+ /**
47
+ * Per-destination V2 sender streams. Each stream retains at most one in-flight
48
+ * operation and one pending operation. A second pending mutation coalesces to
49
+ * a freshly collected authoritative snapshot, bounding memory at O(peers).
50
+ */
51
+ export class ReplicationInfoV2SendCoordinator {
52
+ deps;
53
+ _senderEpoch;
54
+ _sendStates;
55
+ _spentPeerSessions;
56
+ _retiringWorkersByPeer;
57
+ constructor(deps) {
58
+ this.deps = deps;
59
+ this._senderEpoch = randomBytes(32);
60
+ this._sendStates = new Map();
61
+ this._spentPeerSessions = new WeakSet();
62
+ this._retiringWorkersByPeer = new Map();
63
+ }
64
+ resetForOpen() {
65
+ this.clearForClose();
66
+ this._senderEpoch = randomBytes(32);
67
+ this._sendStates = new Map();
68
+ this._spentPeerSessions = new WeakSet();
69
+ }
70
+ clearForClose() {
71
+ for (const state of [...(this._sendStates?.values() ?? [])]) {
72
+ this.clearState(state);
73
+ }
74
+ this._sendStates?.clear();
75
+ }
76
+ clearPeer(peerHash, expectedSession) {
77
+ const state = this._sendStates.get(peerHash);
78
+ if (!state || (expectedSession && state.peerSession !== expectedSession)) {
79
+ return;
80
+ }
81
+ this.clearState(state);
82
+ }
83
+ advancePeerCapability(peerHash) {
84
+ const state = this._sendStates.get(peerHash);
85
+ if (state) {
86
+ this.clearState(state);
87
+ }
88
+ }
89
+ clearState(state) {
90
+ this.trackRetiringWorker(state);
91
+ state.controller.abort();
92
+ if (this._sendStates.get(state.peerHash) === state) {
93
+ this._sendStates.delete(state.peerHash);
94
+ }
95
+ }
96
+ trackRetiringWorker(state) {
97
+ const worker = state.worker;
98
+ if (!worker) {
99
+ return;
100
+ }
101
+ const previous = this._retiringWorkersByPeer.get(state.peerHash);
102
+ if (previous === worker) {
103
+ return;
104
+ }
105
+ const retirement = previous
106
+ ? Promise.allSettled([previous, worker]).then(() => undefined)
107
+ : worker;
108
+ this._retiringWorkersByPeer.set(state.peerHash, retirement);
109
+ const forget = () => {
110
+ if (this._retiringWorkersByPeer.get(state.peerHash) === retirement) {
111
+ this._retiringWorkersByPeer.delete(state.peerHash);
112
+ }
113
+ };
114
+ void retirement.then(forget, forget);
115
+ }
116
+ isDestinationCurrent(state) {
117
+ return (!this.deps.isClosed() &&
118
+ !state.controller.signal.aborted &&
119
+ this._sendStates.get(state.peerHash) === state &&
120
+ this.deps.isPeerSessionOpen(state.peerHash, state.peerSession) &&
121
+ this.deps.getSenderTransportSession() === state.senderTransportSession);
122
+ }
123
+ isCurrent(state) {
124
+ return (this.isDestinationCurrent(state) &&
125
+ this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController));
126
+ }
127
+ /**
128
+ * Accept a signed receiver request. An exact newer retry asks for another
129
+ * 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.
132
+ */
133
+ acceptRequest(request, properties) {
134
+ const self = this.deps.getSelfKey();
135
+ const senderTransportSession = this.deps.getSenderTransportSession();
136
+ if (properties.from.equals(self) ||
137
+ !request.intendedSender.equals(self) ||
138
+ request.senderSession !== senderTransportSession) {
139
+ return false;
140
+ }
141
+ const peerHash = properties.from.hashcode();
142
+ if (this._retiringWorkersByPeer.has(peerHash) ||
143
+ this._spentPeerSessions.has(properties.peerSession) ||
144
+ !this.deps.isPeerSessionOpen(peerHash, properties.peerSession)) {
145
+ return false;
146
+ }
147
+ let previous = this._sendStates.get(peerHash);
148
+ if (previous &&
149
+ (previous.peerSession !== properties.peerSession ||
150
+ previous.senderTransportSession !== senderTransportSession)) {
151
+ this.clearState(previous);
152
+ previous = undefined;
153
+ if (this._retiringWorkersByPeer.has(peerHash)) {
154
+ return false;
155
+ }
156
+ }
157
+ if (previous) {
158
+ const sameBinding = previous.peerSession === properties.peerSession &&
159
+ previous.receiverTransportSession ===
160
+ properties.receiverTransportSession &&
161
+ bytesEqual(previous.receiverRequestChallenge, request.receiverChallenge);
162
+ if (sameBinding) {
163
+ if (properties.requestTimestamp <= previous.lastRequestTimestamp) {
164
+ return false;
165
+ }
166
+ previous.lastRequestTimestamp = properties.requestTimestamp;
167
+ previous.suspended = false;
168
+ this.enqueueState(previous, { kind: "snapshot" });
169
+ return true;
170
+ }
171
+ return false;
172
+ }
173
+ const ownershipLifecycleController = this.deps.captureReplicationOwnershipLifecycle();
174
+ const state = {
175
+ peerHash,
176
+ target: properties.from,
177
+ peerSession: properties.peerSession,
178
+ receiverTransportSession: properties.receiverTransportSession,
179
+ senderTransportSession,
180
+ lastRequestTimestamp: properties.requestTimestamp,
181
+ receiverRequestChallenge: request.receiverChallenge.slice(),
182
+ receiverChallenge: deriveReplicationInfoV2ReceiverBinding({
183
+ receiverChallenge: request.receiverChallenge,
184
+ receiver: properties.from,
185
+ receiverTransportSession: properties.receiverTransportSession,
186
+ sender: self,
187
+ senderTransportSession,
188
+ }),
189
+ senderEpoch: this._senderEpoch.slice(),
190
+ nextSequence: 1n,
191
+ established: false,
192
+ suspended: false,
193
+ controller: new AbortController(),
194
+ ownershipLifecycleController,
195
+ };
196
+ this._sendStates.set(peerHash, state);
197
+ this.enqueueState(state, { kind: "snapshot" });
198
+ return true;
199
+ }
200
+ enqueue(message) {
201
+ for (const state of [...this._sendStates.values()]) {
202
+ this.enqueueState(state, { kind: "message", message });
203
+ }
204
+ }
205
+ enqueueSnapshotForPeer(peerHash) {
206
+ const state = this._sendStates.get(peerHash);
207
+ if (state) {
208
+ this.enqueueState(state, { kind: "snapshot" });
209
+ }
210
+ }
211
+ 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
+ }
218
+ return;
219
+ }
220
+ if (state.suspended) {
221
+ state.pending = undefined;
222
+ return;
223
+ }
224
+ if (!state.worker) {
225
+ state.pending = request;
226
+ let worker;
227
+ worker = Promise.resolve()
228
+ .then(() => this.runWorker(state))
229
+ .catch((error) => {
230
+ const ownershipActive = this.deps.isReplicationOwnershipLifecycleActive(state.ownershipLifecycleController);
231
+ if (ownershipActive &&
232
+ !state.controller.signal.aborted &&
233
+ !this.deps.isClosed()) {
234
+ logger.trace("Replication-info V2 destination stream failed for %s: %s", state.peerHash, error?.message ?? String(error));
235
+ }
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
+ })
258
+ .finally(() => {
259
+ if (state.worker === worker) {
260
+ state.worker = undefined;
261
+ // An enqueue can land after runWorker observes an empty slot but
262
+ // before this promise reaction clears `worker`. Re-arm that item
263
+ // here so the one-slot bound cannot become a stranded queue.
264
+ const pending = state.pending;
265
+ if (pending && this.isCurrent(state)) {
266
+ state.pending = undefined;
267
+ this.enqueueState(state, pending);
268
+ }
269
+ }
270
+ });
271
+ state.worker = worker;
272
+ return;
273
+ }
274
+ if (!state.pending) {
275
+ state.pending = request;
276
+ return;
277
+ }
278
+ // One pending item is the hard bound. Once another mutation arrives,
279
+ // replace the pending delta with a current authoritative snapshot.
280
+ state.pending = { kind: "snapshot" };
281
+ }
282
+ async createMessage(state, request) {
283
+ const common = {
284
+ receiverChallenge: state.receiverChallenge.slice(),
285
+ senderEpoch: state.senderEpoch.slice(),
286
+ sequence: state.nextSequence,
287
+ };
288
+ if (request.kind === "snapshot") {
289
+ const segments = (await this.deps.getMyReplicationSegments()).map((range) => range.toReplicationRange());
290
+ this.deps.validatePersistedReplicationRangeSnapshot(segments);
291
+ return new FullReplicationInfoV2Message({ ...common, segments });
292
+ }
293
+ if (request.message instanceof AllReplicatingSegmentsMessage) {
294
+ const segments = request.message.segments;
295
+ this.deps.validatePersistedReplicationRangeSnapshot(segments);
296
+ return new FullReplicationInfoV2Message({ ...common, segments });
297
+ }
298
+ if (request.message instanceof AddedReplicationSegmentMessage) {
299
+ return new AddedReplicationInfoV2Message({
300
+ ...common,
301
+ segments: request.message.segments,
302
+ });
303
+ }
304
+ return new StoppedReplicationInfoV2Message({
305
+ ...common,
306
+ segmentIds: request.message.segmentIds,
307
+ });
308
+ }
309
+ async runWorker(state) {
310
+ while (this.isCurrent(state)) {
311
+ const request = state.pending;
312
+ if (!request) {
313
+ return;
314
+ }
315
+ state.pending = undefined;
316
+ if (state.nextSequence > MAX_U64) {
317
+ this.clearState(state);
318
+ return;
319
+ }
320
+ const message = await this.createMessage(state, request);
321
+ if (!this.isCurrent(state)) {
322
+ return;
323
+ }
324
+ // Consume the sequence before the transport attempt. From this point on
325
+ // delivery is ambiguous even if ownership aborts before the await
326
+ // continuation runs, so `nextSequence` always remains the next value that
327
+ // has never been attempted with different content.
328
+ state.inFlightSequence = state.nextSequence;
329
+ state.nextSequence += 1n;
330
+ await this.deps.getRpc().send(message, {
331
+ mode: new AcknowledgeDelivery({
332
+ to: [state.target],
333
+ redundancy: 1,
334
+ }),
335
+ priority: CONVERGENCE_MESSAGE_PRIORITY,
336
+ signal: AbortSignal.any([
337
+ state.controller.signal,
338
+ state.ownershipLifecycleController.signal,
339
+ ]),
340
+ });
341
+ state.inFlightSequence = undefined;
342
+ if (!this.isCurrent(state)) {
343
+ return;
344
+ }
345
+ state.established = true;
346
+ if (state.nextSequence > MAX_U64) {
347
+ this._spentPeerSessions.add(state.peerSession);
348
+ this.clearState(state);
349
+ return;
350
+ }
351
+ }
352
+ }
353
+ /**
354
+ * Terminal close/drop runs after the normal ownership generation is aborted.
355
+ * Send an authoritative empty Full directly from the retained destination
356
+ * bindings. `nextSequence` is consumed before every transport attempt, so it
357
+ * is always safe for different terminal content even if a just-aborted frame
358
+ * was delivered. Receivers admit Full gaps as authoritative resynchronization.
359
+ */
360
+ async sendTerminalReset(signal) {
361
+ const sends = [];
362
+ for (const state of [...this._sendStates.values()]) {
363
+ if (signal.aborted ||
364
+ !this.isDestinationCurrent(state) ||
365
+ state.nextSequence > MAX_U64) {
366
+ continue;
367
+ }
368
+ state.pending = undefined;
369
+ const message = new FullReplicationInfoV2Message({
370
+ receiverChallenge: state.receiverChallenge.slice(),
371
+ senderEpoch: state.senderEpoch.slice(),
372
+ sequence: state.nextSequence,
373
+ segments: [],
374
+ });
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
+ }));
383
+ }
384
+ await Promise.allSettled(sends);
385
+ }
386
+ async drain(signal) {
387
+ while (!signal?.aborted) {
388
+ const workers = [
389
+ ...[...this._sendStates.values()]
390
+ .map((state) => state.worker)
391
+ .filter((worker) => worker != null),
392
+ ...this._retiringWorkersByPeer.values(),
393
+ ];
394
+ const uniqueWorkers = [...new Set(workers)];
395
+ if (uniqueWorkers.length === 0) {
396
+ return;
397
+ }
398
+ const settled = Promise.allSettled(uniqueWorkers).then(() => undefined);
399
+ if (!signal) {
400
+ await settled;
401
+ }
402
+ else {
403
+ await new Promise((resolve) => {
404
+ const onAbort = () => resolve();
405
+ signal.addEventListener("abort", onAbort, { once: true });
406
+ void settled.then(() => {
407
+ signal.removeEventListener("abort", onAbort);
408
+ resolve();
409
+ });
410
+ });
411
+ }
412
+ }
413
+ }
414
+ }
415
+ //# sourceMappingURL=replication-info-v2-send.js.map