@peerbit/shared-log 12.2.0 → 12.3.0
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.
- package/dist/benchmark/pid-convergence.d.ts +2 -0
- package/dist/benchmark/pid-convergence.d.ts.map +1 -0
- package/dist/benchmark/pid-convergence.js +138 -0
- package/dist/benchmark/pid-convergence.js.map +1 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.d.ts +2 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.d.ts.map +1 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.js +104 -0
- package/dist/benchmark/rateless-iblt-sender-startsync.js.map +1 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.d.ts +2 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.d.ts.map +1 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.js +112 -0
- package/dist/benchmark/rateless-iblt-startsync-cache.js.map +1 -0
- package/dist/benchmark/sync-catchup.d.ts +3 -0
- package/dist/benchmark/sync-catchup.d.ts.map +1 -0
- package/dist/benchmark/sync-catchup.js +109 -0
- package/dist/benchmark/sync-catchup.js.map +1 -0
- package/dist/src/index.d.ts +16 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +259 -82
- package/dist/src/index.js.map +1 -1
- package/dist/src/ranges.d.ts +1 -0
- package/dist/src/ranges.d.ts.map +1 -1
- package/dist/src/ranges.js +48 -18
- package/dist/src/ranges.js.map +1 -1
- package/dist/src/sync/index.d.ts +14 -0
- package/dist/src/sync/index.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.d.ts +14 -22
- package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.js +137 -22
- package/dist/src/sync/rateless-iblt.js.map +1 -1
- package/dist/src/sync/simple.d.ts +3 -1
- package/dist/src/sync/simple.d.ts.map +1 -1
- package/dist/src/sync/simple.js +23 -1
- package/dist/src/sync/simple.js.map +1 -1
- package/package.json +12 -12
- package/src/index.ts +333 -126
- package/src/ranges.ts +97 -65
- package/src/sync/index.ts +19 -0
- package/src/sync/rateless-iblt.ts +187 -41
- package/src/sync/simple.ts +25 -2
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -169,10 +169,19 @@ const createIndexableDomainFromResolution = (resolution) => {
|
|
|
169
169
|
export const DEFAULT_MIN_REPLICAS = 2;
|
|
170
170
|
export const WAIT_FOR_REPLICATOR_TIMEOUT = 9000;
|
|
171
171
|
export const WAIT_FOR_ROLE_MATURITY = 5000;
|
|
172
|
-
export const
|
|
172
|
+
export const WAIT_FOR_REPLICATOR_REQUEST_INTERVAL = 1000;
|
|
173
|
+
export const WAIT_FOR_REPLICATOR_REQUEST_MIN_ATTEMPTS = 3;
|
|
174
|
+
// TODO(prune): Investigate if/when a non-zero prune delay is required for correctness
|
|
175
|
+
// (e.g. responsibility/replication-info message reordering in multi-peer scenarios).
|
|
176
|
+
// Prefer making pruning robust without timing-based heuristics.
|
|
177
|
+
export const WAIT_FOR_PRUNE_DELAY = 0;
|
|
173
178
|
const PRUNE_DEBOUNCE_INTERVAL = 500;
|
|
174
179
|
// DONT SET THIS ANY LOWER, because it will make the pid controller unstable as the system responses are not fast enough to updates from the pid controller
|
|
175
180
|
const RECALCULATE_PARTICIPATION_DEBOUNCE_INTERVAL = 1000;
|
|
181
|
+
const RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE = 0.01;
|
|
182
|
+
const RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_CPU_LIMIT = 0.005;
|
|
183
|
+
const RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_MEMORY_LIMIT = 0.001;
|
|
184
|
+
const RECALCULATE_PARTICIPATION_RELATIVE_DENOMINATOR_FLOOR = 1e-3;
|
|
176
185
|
const DEFAULT_DISTRIBUTION_DEBOUNCE_TIME = 500;
|
|
177
186
|
const getIdForDynamicRange = (publicKey) => {
|
|
178
187
|
return sha256Sync(concat([publicKey.bytes, new TextEncoder().encode("dynamic")]));
|
|
@@ -217,6 +226,7 @@ let SharedLog = (() => {
|
|
|
217
226
|
coordinateToHash;
|
|
218
227
|
recentlyRebalanced;
|
|
219
228
|
uniqueReplicators;
|
|
229
|
+
_replicatorsReconciled;
|
|
220
230
|
/* private _totalParticipation!: number; */
|
|
221
231
|
// gid -> coordinate -> publicKeyHash list (of owners)
|
|
222
232
|
_gidPeersHistory;
|
|
@@ -250,6 +260,8 @@ let SharedLog = (() => {
|
|
|
250
260
|
cpuUsage;
|
|
251
261
|
timeUntilRoleMaturity;
|
|
252
262
|
waitForReplicatorTimeout;
|
|
263
|
+
waitForReplicatorRequestIntervalMs;
|
|
264
|
+
waitForReplicatorRequestMaxAttempts;
|
|
253
265
|
waitForPruneDelay;
|
|
254
266
|
distributionDebounceTime;
|
|
255
267
|
replicationController;
|
|
@@ -296,14 +308,6 @@ let SharedLog = (() => {
|
|
|
296
308
|
}
|
|
297
309
|
setupRebalanceDebounceFunction(interval = RECALCULATE_PARTICIPATION_DEBOUNCE_INTERVAL) {
|
|
298
310
|
this.rebalanceParticipationDebounced = undefined;
|
|
299
|
-
// make the rebalancing to respect warmup time
|
|
300
|
-
let intervalTime = interval * 2;
|
|
301
|
-
let timeout = setTimeout(() => {
|
|
302
|
-
intervalTime = interval;
|
|
303
|
-
}, this.timeUntilRoleMaturity);
|
|
304
|
-
this._closeController.signal.addEventListener("abort", () => {
|
|
305
|
-
clearTimeout(timeout);
|
|
306
|
-
});
|
|
307
311
|
this.rebalanceParticipationDebounced = debounceFixedInterval(() => this.rebalanceParticipation(),
|
|
308
312
|
/* Math.max(
|
|
309
313
|
REBALANCE_DEBOUNCE_INTERVAL,
|
|
@@ -312,7 +316,7 @@ let SharedLog = (() => {
|
|
|
312
316
|
REBALANCE_DEBOUNCE_INTERVAL
|
|
313
317
|
)
|
|
314
318
|
) */
|
|
315
|
-
|
|
319
|
+
interval);
|
|
316
320
|
}
|
|
317
321
|
async _replicate(options, { reset, checkDuplicates, announce, mergeSegments, rebalance, } = {}) {
|
|
318
322
|
let offsetWasProvided = false;
|
|
@@ -690,15 +694,29 @@ let SharedLog = (() => {
|
|
|
690
694
|
})
|
|
691
695
|
.all()).map((x) => x.value);
|
|
692
696
|
let prevCount = deleted.length;
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
697
|
+
const existingById = new Map(deleted.map((x) => [x.idString, x]));
|
|
698
|
+
const hasSameRanges = deleted.length === ranges.length &&
|
|
699
|
+
ranges.every((range) => {
|
|
700
|
+
const existing = existingById.get(range.idString);
|
|
701
|
+
return existing != null && existing.equalRange(range);
|
|
702
|
+
});
|
|
703
|
+
// Avoid churn on repeated full-state announcements that don't change any
|
|
704
|
+
// replication ranges. This prevents unnecessary `replication:change`
|
|
705
|
+
// events and rebalancing cascades.
|
|
706
|
+
if (hasSameRanges) {
|
|
707
|
+
diffs = [];
|
|
708
|
+
}
|
|
709
|
+
else {
|
|
710
|
+
await this.replicationIndex.del({ query: { hash: from.hashcode() } });
|
|
711
|
+
diffs = [
|
|
712
|
+
...deleted.map((x) => {
|
|
713
|
+
return { range: x, type: "removed", timestamp };
|
|
714
|
+
}),
|
|
715
|
+
...ranges.map((x) => {
|
|
716
|
+
return { range: x, type: "added", timestamp };
|
|
717
|
+
}),
|
|
718
|
+
];
|
|
719
|
+
}
|
|
702
720
|
isNewReplicator = prevCount === 0 && ranges.length > 0;
|
|
703
721
|
}
|
|
704
722
|
else {
|
|
@@ -716,16 +734,18 @@ let SharedLog = (() => {
|
|
|
716
734
|
existing.push(result.value);
|
|
717
735
|
}
|
|
718
736
|
}
|
|
737
|
+
let prevCountForOwner = undefined;
|
|
719
738
|
if (existing.length === 0) {
|
|
720
|
-
|
|
739
|
+
prevCountForOwner = await this.replicationIndex.count({
|
|
721
740
|
query: new StringMatch({ key: "hash", value: from.hashcode() }),
|
|
722
741
|
});
|
|
723
|
-
isNewReplicator =
|
|
742
|
+
isNewReplicator = prevCountForOwner === 0;
|
|
724
743
|
}
|
|
725
744
|
else {
|
|
726
745
|
isNewReplicator = false;
|
|
727
746
|
}
|
|
728
|
-
if (checkDuplicates
|
|
747
|
+
if (checkDuplicates &&
|
|
748
|
+
(existing.length > 0 || (prevCountForOwner ?? 0) > 0)) {
|
|
729
749
|
let deduplicated = [];
|
|
730
750
|
// TODO also deduplicate/de-overlap among the ranges that ought to be inserted?
|
|
731
751
|
for (const range of ranges) {
|
|
@@ -1252,6 +1272,7 @@ let SharedLog = (() => {
|
|
|
1252
1272
|
this.coordinateToHash = new Cache({ max: 1e6, ttl: 1e4 });
|
|
1253
1273
|
this.recentlyRebalanced = new Cache({ max: 1e4, ttl: 1e5 });
|
|
1254
1274
|
this.uniqueReplicators = new Set();
|
|
1275
|
+
this._replicatorsReconciled = false;
|
|
1255
1276
|
this.openTime = +new Date();
|
|
1256
1277
|
this.oldestOpenTime = this.openTime;
|
|
1257
1278
|
this.distributionDebounceTime =
|
|
@@ -1259,11 +1280,23 @@ let SharedLog = (() => {
|
|
|
1259
1280
|
this.timeUntilRoleMaturity =
|
|
1260
1281
|
options?.timeUntilRoleMaturity ?? WAIT_FOR_ROLE_MATURITY;
|
|
1261
1282
|
this.waitForReplicatorTimeout =
|
|
1262
|
-
options?.waitForReplicatorTimeout
|
|
1263
|
-
this.
|
|
1283
|
+
options?.waitForReplicatorTimeout ?? WAIT_FOR_REPLICATOR_TIMEOUT;
|
|
1284
|
+
this.waitForReplicatorRequestIntervalMs =
|
|
1285
|
+
options?.waitForReplicatorRequestIntervalMs ??
|
|
1286
|
+
WAIT_FOR_REPLICATOR_REQUEST_INTERVAL;
|
|
1287
|
+
this.waitForReplicatorRequestMaxAttempts =
|
|
1288
|
+
options?.waitForReplicatorRequestMaxAttempts;
|
|
1289
|
+
this.waitForPruneDelay = options?.waitForPruneDelay ?? WAIT_FOR_PRUNE_DELAY;
|
|
1264
1290
|
if (this.waitForReplicatorTimeout < this.timeUntilRoleMaturity) {
|
|
1265
1291
|
this.waitForReplicatorTimeout = this.timeUntilRoleMaturity; // does not makes sense to expect a replicator to mature faster than it is reachable
|
|
1266
1292
|
}
|
|
1293
|
+
if (this.waitForReplicatorRequestIntervalMs <= 0) {
|
|
1294
|
+
throw new Error("waitForReplicatorRequestIntervalMs must be a positive number");
|
|
1295
|
+
}
|
|
1296
|
+
if (this.waitForReplicatorRequestMaxAttempts != null &&
|
|
1297
|
+
this.waitForReplicatorRequestMaxAttempts <= 0) {
|
|
1298
|
+
throw new Error("waitForReplicatorRequestMaxAttempts must be a positive number");
|
|
1299
|
+
}
|
|
1267
1300
|
this._closeController = new AbortController();
|
|
1268
1301
|
this._isTrustedReplicator = options?.canReplicate;
|
|
1269
1302
|
this.keep = options?.keep;
|
|
@@ -1380,6 +1413,7 @@ let SharedLog = (() => {
|
|
|
1380
1413
|
rangeIndex: this._replicationRangeIndex,
|
|
1381
1414
|
rpc: this.rpc,
|
|
1382
1415
|
coordinateToHash: this.coordinateToHash,
|
|
1416
|
+
sync: options?.sync,
|
|
1383
1417
|
});
|
|
1384
1418
|
}
|
|
1385
1419
|
else {
|
|
@@ -1390,6 +1424,7 @@ let SharedLog = (() => {
|
|
|
1390
1424
|
rpc: this.rpc,
|
|
1391
1425
|
entryIndex: this.entryCoordinatesIndex,
|
|
1392
1426
|
coordinateToHash: this.coordinateToHash,
|
|
1427
|
+
sync: options?.sync,
|
|
1393
1428
|
});
|
|
1394
1429
|
}
|
|
1395
1430
|
else {
|
|
@@ -1403,6 +1438,7 @@ let SharedLog = (() => {
|
|
|
1403
1438
|
rangeIndex: this._replicationRangeIndex,
|
|
1404
1439
|
rpc: this.rpc,
|
|
1405
1440
|
coordinateToHash: this.coordinateToHash,
|
|
1441
|
+
sync: options?.sync,
|
|
1406
1442
|
});
|
|
1407
1443
|
}
|
|
1408
1444
|
}
|
|
@@ -1470,7 +1506,16 @@ let SharedLog = (() => {
|
|
|
1470
1506
|
async afterOpen() {
|
|
1471
1507
|
await super.afterOpen();
|
|
1472
1508
|
// We do this here, because these calls requires this.closed == false
|
|
1473
|
-
this.pruneOfflineReplicators()
|
|
1509
|
+
void this.pruneOfflineReplicators()
|
|
1510
|
+
.then(() => {
|
|
1511
|
+
this._replicatorsReconciled = true;
|
|
1512
|
+
})
|
|
1513
|
+
.catch((error) => {
|
|
1514
|
+
if (isNotStartedError(error)) {
|
|
1515
|
+
return;
|
|
1516
|
+
}
|
|
1517
|
+
logger.error(error);
|
|
1518
|
+
});
|
|
1474
1519
|
await this.rebalanceParticipation();
|
|
1475
1520
|
// Take into account existing subscription
|
|
1476
1521
|
(await this.node.services.pubsub.getSubscribers(this.topic))?.forEach((v, k) => {
|
|
@@ -1628,13 +1673,29 @@ let SharedLog = (() => {
|
|
|
1628
1673
|
set.add(key);
|
|
1629
1674
|
}
|
|
1630
1675
|
if (options?.reachableOnly) {
|
|
1631
|
-
|
|
1676
|
+
// Prefer the live pubsub subscriber set when filtering reachability.
|
|
1677
|
+
// `uniqueReplicators` is primarily driven by replication messages and can lag during
|
|
1678
|
+
// joins/restarts; using subscribers prevents excluding peers that are reachable but
|
|
1679
|
+
// whose replication ranges were loaded from disk or haven't been processed yet.
|
|
1680
|
+
const subscribers = (await this.node.services.pubsub.getSubscribers(this.topic)) ??
|
|
1681
|
+
undefined;
|
|
1682
|
+
const subscriberHashcodes = subscribers
|
|
1683
|
+
? new Set(subscribers.map((key) => key.hashcode()))
|
|
1684
|
+
: undefined;
|
|
1685
|
+
const reachable = [];
|
|
1686
|
+
const selfHash = this.node.identity.publicKey.hashcode();
|
|
1632
1687
|
for (const peer of set) {
|
|
1633
|
-
if (
|
|
1634
|
-
|
|
1688
|
+
if (peer === selfHash) {
|
|
1689
|
+
reachable.push(peer);
|
|
1690
|
+
continue;
|
|
1691
|
+
}
|
|
1692
|
+
if (subscriberHashcodes
|
|
1693
|
+
? subscriberHashcodes.has(peer)
|
|
1694
|
+
: this.uniqueReplicators.has(peer)) {
|
|
1695
|
+
reachable.push(peer);
|
|
1635
1696
|
}
|
|
1636
1697
|
}
|
|
1637
|
-
return
|
|
1698
|
+
return reachable;
|
|
1638
1699
|
}
|
|
1639
1700
|
return [...set];
|
|
1640
1701
|
}
|
|
@@ -1974,15 +2035,15 @@ let SharedLog = (() => {
|
|
|
1974
2035
|
await this.remoteBlocks.onMessage(msg.message, context.from.hashcode());
|
|
1975
2036
|
}
|
|
1976
2037
|
else if (msg instanceof RequestReplicationInfoMessage) {
|
|
1977
|
-
// TODO this message type is never used, should we remove it?
|
|
1978
2038
|
if (context.from.equals(this.node.identity.publicKey)) {
|
|
1979
2039
|
return;
|
|
1980
2040
|
}
|
|
1981
|
-
await this.
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
mode: new
|
|
1985
|
-
})
|
|
2041
|
+
const segments = (await this.getMyReplicationSegments()).map((x) => x.toReplicationRange());
|
|
2042
|
+
this.rpc
|
|
2043
|
+
.send(new AllReplicatingSegmentsMessage({ segments }), {
|
|
2044
|
+
mode: new SeekDelivery({ to: [context.from], redundancy: 1 }),
|
|
2045
|
+
})
|
|
2046
|
+
.catch((e) => logger.error(e.toString()));
|
|
1986
2047
|
// for backwards compatibility (v8) remove this when we are sure that all nodes are v9+
|
|
1987
2048
|
if (this.v8Behaviour) {
|
|
1988
2049
|
const role = this.getRole();
|
|
@@ -2006,38 +2067,32 @@ let SharedLog = (() => {
|
|
|
2006
2067
|
if (context.from.equals(this.node.identity.publicKey)) {
|
|
2007
2068
|
return;
|
|
2008
2069
|
}
|
|
2009
|
-
|
|
2010
|
-
//
|
|
2011
|
-
//
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
.
|
|
2017
|
-
|
|
2018
|
-
// and do them in the right order
|
|
2019
|
-
const prev = this.latestReplicationInfoMessage.get(context.from.hashcode());
|
|
2020
|
-
if (prev && prev > context.message.header.timestamp) {
|
|
2070
|
+
const replicationInfoMessage = msg;
|
|
2071
|
+
// Process replication updates even if the sender isn't yet considered "ready" by
|
|
2072
|
+
// `Program.waitFor()`. Dropping these messages can lead to missing replicator info
|
|
2073
|
+
// (and downstream `waitForReplicator()` timeouts) under timing-sensitive joins.
|
|
2074
|
+
const from = context.from;
|
|
2075
|
+
const messageTimestamp = context.message.header.timestamp;
|
|
2076
|
+
(async () => {
|
|
2077
|
+
const prev = this.latestReplicationInfoMessage.get(from.hashcode());
|
|
2078
|
+
if (prev && prev > messageTimestamp) {
|
|
2021
2079
|
return;
|
|
2022
2080
|
}
|
|
2023
|
-
this.latestReplicationInfoMessage.set(
|
|
2024
|
-
let reset = msg instanceof AllReplicatingSegmentsMessage;
|
|
2081
|
+
this.latestReplicationInfoMessage.set(from.hashcode(), messageTimestamp);
|
|
2025
2082
|
if (this.closed) {
|
|
2026
2083
|
return;
|
|
2027
2084
|
}
|
|
2028
|
-
|
|
2085
|
+
const reset = msg instanceof AllReplicatingSegmentsMessage;
|
|
2086
|
+
await this.addReplicationRange(replicationInfoMessage.segments.map((x) => x.toReplicationRangeIndexable(from)), from, {
|
|
2029
2087
|
reset,
|
|
2030
2088
|
checkDuplicates: true,
|
|
2031
|
-
timestamp: Number(
|
|
2089
|
+
timestamp: Number(messageTimestamp),
|
|
2032
2090
|
});
|
|
2033
|
-
|
|
2034
|
-
})
|
|
2035
|
-
.catch((e) => {
|
|
2091
|
+
})().catch((e) => {
|
|
2036
2092
|
if (isNotStartedError(e)) {
|
|
2037
2093
|
return;
|
|
2038
2094
|
}
|
|
2039
|
-
logger.error(
|
|
2040
|
-
e?.message);
|
|
2095
|
+
logger.error(`Failed to apply replication settings from '${from.hashcode()}': ${e?.message ?? e}`);
|
|
2041
2096
|
});
|
|
2042
2097
|
}
|
|
2043
2098
|
else if (msg instanceof StoppedReplicating) {
|
|
@@ -2178,15 +2233,17 @@ let SharedLog = (() => {
|
|
|
2178
2233
|
}
|
|
2179
2234
|
async join(entries, options) {
|
|
2180
2235
|
let entriesToReplicate = [];
|
|
2181
|
-
if (options?.replicate) {
|
|
2236
|
+
if (options?.replicate && this.log.length > 0) {
|
|
2182
2237
|
// TODO this block should perhaps be called from a callback on the this.log.join method on all the ignored element because already joined, like "onAlreadyJoined"
|
|
2183
2238
|
// check which entrise we already have but not are replicating, and replicate them
|
|
2184
2239
|
// we can not just do the 'join' call because it will ignore the already joined entries
|
|
2185
2240
|
for (const element of entries) {
|
|
2186
2241
|
if (typeof element === "string") {
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2242
|
+
if (await this.log.has(element)) {
|
|
2243
|
+
const entry = await this.log.get(element);
|
|
2244
|
+
if (entry) {
|
|
2245
|
+
entriesToReplicate.push(entry);
|
|
2246
|
+
}
|
|
2190
2247
|
}
|
|
2191
2248
|
}
|
|
2192
2249
|
else if (element instanceof Entry) {
|
|
@@ -2195,9 +2252,11 @@ let SharedLog = (() => {
|
|
|
2195
2252
|
}
|
|
2196
2253
|
}
|
|
2197
2254
|
else {
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2255
|
+
if (await this.log.has(element.hash)) {
|
|
2256
|
+
const entry = await this.log.get(element.hash);
|
|
2257
|
+
if (entry) {
|
|
2258
|
+
entriesToReplicate.push(entry);
|
|
2259
|
+
}
|
|
2201
2260
|
}
|
|
2202
2261
|
}
|
|
2203
2262
|
}
|
|
@@ -2290,6 +2349,7 @@ let SharedLog = (() => {
|
|
|
2290
2349
|
: (options?.roleAge ?? (await this.getDefaultMinRoleAge()));
|
|
2291
2350
|
let settled = false;
|
|
2292
2351
|
let timer;
|
|
2352
|
+
let requestTimer;
|
|
2293
2353
|
const clear = () => {
|
|
2294
2354
|
this.events.removeEventListener("replicator:mature", check);
|
|
2295
2355
|
this.events.removeEventListener("replication:change", check);
|
|
@@ -2298,6 +2358,10 @@ let SharedLog = (() => {
|
|
|
2298
2358
|
clearTimeout(timer);
|
|
2299
2359
|
timer = undefined;
|
|
2300
2360
|
}
|
|
2361
|
+
if (requestTimer != null) {
|
|
2362
|
+
clearTimeout(requestTimer);
|
|
2363
|
+
requestTimer = undefined;
|
|
2364
|
+
}
|
|
2301
2365
|
};
|
|
2302
2366
|
const resolve = () => {
|
|
2303
2367
|
if (settled) {
|
|
@@ -2322,6 +2386,32 @@ let SharedLog = (() => {
|
|
|
2322
2386
|
timer = setTimeout(() => {
|
|
2323
2387
|
reject(new TimeoutError(`Timeout waiting for replicator ${key.hashcode()}`));
|
|
2324
2388
|
}, timeoutMs);
|
|
2389
|
+
let requestAttempts = 0;
|
|
2390
|
+
const requestIntervalMs = this.waitForReplicatorRequestIntervalMs;
|
|
2391
|
+
const maxRequestAttempts = this.waitForReplicatorRequestMaxAttempts ??
|
|
2392
|
+
Math.max(WAIT_FOR_REPLICATOR_REQUEST_MIN_ATTEMPTS, Math.ceil(timeoutMs / requestIntervalMs));
|
|
2393
|
+
const requestReplicationInfo = () => {
|
|
2394
|
+
if (settled || this.closed) {
|
|
2395
|
+
return;
|
|
2396
|
+
}
|
|
2397
|
+
if (requestAttempts >= maxRequestAttempts) {
|
|
2398
|
+
return;
|
|
2399
|
+
}
|
|
2400
|
+
requestAttempts++;
|
|
2401
|
+
this.rpc
|
|
2402
|
+
.send(new RequestReplicationInfoMessage(), {
|
|
2403
|
+
mode: new SeekDelivery({ redundancy: 1, to: [key] }),
|
|
2404
|
+
})
|
|
2405
|
+
.catch((e) => {
|
|
2406
|
+
// Best-effort: missing peers / unopened RPC should not fail the wait logic.
|
|
2407
|
+
if (isNotStartedError(e)) {
|
|
2408
|
+
return;
|
|
2409
|
+
}
|
|
2410
|
+
});
|
|
2411
|
+
if (requestAttempts < maxRequestAttempts) {
|
|
2412
|
+
requestTimer = setTimeout(requestReplicationInfo, requestIntervalMs);
|
|
2413
|
+
}
|
|
2414
|
+
};
|
|
2325
2415
|
const check = async () => {
|
|
2326
2416
|
const iterator = this.replicationIndex?.iterate({ query: new StringMatch({ key: "hash", value: key.hashcode() }) }, { reference: true });
|
|
2327
2417
|
try {
|
|
@@ -2344,6 +2434,7 @@ let SharedLog = (() => {
|
|
|
2344
2434
|
await iterator?.close();
|
|
2345
2435
|
}
|
|
2346
2436
|
};
|
|
2437
|
+
requestReplicationInfo();
|
|
2347
2438
|
check();
|
|
2348
2439
|
this.events.addEventListener("replicator:mature", check);
|
|
2349
2440
|
this.events.addEventListener("replication:change", check);
|
|
@@ -2501,15 +2592,49 @@ let SharedLog = (() => {
|
|
|
2501
2592
|
if (this._isReplicating === false) {
|
|
2502
2593
|
return 0;
|
|
2503
2594
|
}
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2595
|
+
// Explicitly disable maturity gating (used by many tests).
|
|
2596
|
+
if (this.timeUntilRoleMaturity <= 0) {
|
|
2597
|
+
return 0;
|
|
2598
|
+
}
|
|
2599
|
+
// If we're alone (or pubsub isn't ready), a fixed maturity time is sufficient.
|
|
2600
|
+
// When there are multiple replicators we want a stable threshold that doesn't
|
|
2601
|
+
// depend on "now" (otherwise it can drift and turn into a flake).
|
|
2602
|
+
let subscribers = 1;
|
|
2603
|
+
if (!this.rpc.closed) {
|
|
2604
|
+
try {
|
|
2605
|
+
subscribers =
|
|
2606
|
+
(await this.node.services.pubsub.getSubscribers(this.rpc.topic))
|
|
2607
|
+
?.length ?? 1;
|
|
2608
|
+
}
|
|
2609
|
+
catch {
|
|
2610
|
+
// Best-effort only; fall back to 1.
|
|
2611
|
+
}
|
|
2612
|
+
}
|
|
2613
|
+
if (subscribers <= 1) {
|
|
2614
|
+
return this.timeUntilRoleMaturity;
|
|
2615
|
+
}
|
|
2616
|
+
// Use replication range timestamps to compute a stable "age gap" between the
|
|
2617
|
+
// newest and oldest known roles. This keeps the oldest role mature while
|
|
2618
|
+
// preventing newer roles from being treated as mature purely because time
|
|
2619
|
+
// passes between test steps / network events.
|
|
2620
|
+
let newestOpenTime = this.openTime;
|
|
2621
|
+
try {
|
|
2622
|
+
const newestIterator = await this.replicationIndex.iterate({
|
|
2623
|
+
sort: [new Sort({ key: "timestamp", direction: "desc" })],
|
|
2624
|
+
}, { shape: { timestamp: true }, reference: true });
|
|
2625
|
+
const newestTimestampFromDB = (await newestIterator.next(1))[0]?.value
|
|
2626
|
+
.timestamp;
|
|
2627
|
+
await newestIterator.close();
|
|
2628
|
+
if (newestTimestampFromDB != null) {
|
|
2629
|
+
newestOpenTime = Number(newestTimestampFromDB);
|
|
2630
|
+
}
|
|
2631
|
+
}
|
|
2632
|
+
catch {
|
|
2633
|
+
// Best-effort only; fall back to local open time.
|
|
2634
|
+
}
|
|
2635
|
+
const ageGapToOldest = newestOpenTime - this.oldestOpenTime;
|
|
2636
|
+
const roleAge = Math.max(this.timeUntilRoleMaturity, ageGapToOldest);
|
|
2637
|
+
return roleAge < 0 ? 0 : roleAge;
|
|
2513
2638
|
}
|
|
2514
2639
|
async findLeaders(cursors, entry, options) {
|
|
2515
2640
|
// we consume a list of coordinates in this method since if we are leader of one coordinate we want to persist all of them
|
|
@@ -2545,8 +2670,32 @@ let SharedLog = (() => {
|
|
|
2545
2670
|
}
|
|
2546
2671
|
async _findLeaders(cursors, options) {
|
|
2547
2672
|
const roleAge = options?.roleAge ?? (await this.getDefaultMinRoleAge()); // TODO -500 as is added so that i f someone else is just as new as us, then we treat them as mature as us. without -500 we might be slower syncing if two nodes starts almost at the same time
|
|
2673
|
+
const selfHash = this.node.identity.publicKey.hashcode();
|
|
2674
|
+
// Use `uniqueReplicators` (replicator cache) once we've reconciled it against the
|
|
2675
|
+
// persisted replication index. Until then, fall back to live pubsub subscribers
|
|
2676
|
+
// and avoid relying on `uniqueReplicators` being complete.
|
|
2677
|
+
let peerFilter = undefined;
|
|
2678
|
+
if (this._replicatorsReconciled && this.uniqueReplicators.size > 0) {
|
|
2679
|
+
peerFilter = this.uniqueReplicators.has(selfHash)
|
|
2680
|
+
? this.uniqueReplicators
|
|
2681
|
+
: new Set([...this.uniqueReplicators, selfHash]);
|
|
2682
|
+
}
|
|
2683
|
+
else {
|
|
2684
|
+
try {
|
|
2685
|
+
const subscribers = (await this.node.services.pubsub.getSubscribers(this.topic)) ??
|
|
2686
|
+
undefined;
|
|
2687
|
+
if (subscribers && subscribers.length > 0) {
|
|
2688
|
+
peerFilter = new Set(subscribers.map((key) => key.hashcode()));
|
|
2689
|
+
peerFilter.add(selfHash);
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
catch {
|
|
2693
|
+
// Best-effort only; if pubsub isn't ready, do a full scan.
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2548
2696
|
return getSamples(cursors, this.replicationIndex, roleAge, this.indexableDomain.numbers, {
|
|
2549
|
-
|
|
2697
|
+
peerFilter,
|
|
2698
|
+
uniqueReplicators: peerFilter,
|
|
2550
2699
|
});
|
|
2551
2700
|
}
|
|
2552
2701
|
async findLeadersFromEntry(entry, replicas, options) {
|
|
@@ -2575,7 +2724,7 @@ let SharedLog = (() => {
|
|
|
2575
2724
|
for (const [k, v] of this._requestIPruneResponseReplicatorSet) {
|
|
2576
2725
|
v.delete(publicKey.hashcode());
|
|
2577
2726
|
if (v.size === 0) {
|
|
2578
|
-
this.
|
|
2727
|
+
this._requestIPruneResponseReplicatorSet.delete(k);
|
|
2579
2728
|
}
|
|
2580
2729
|
}
|
|
2581
2730
|
this.syncronizer.onPeerDisconnected(publicKey);
|
|
@@ -2605,6 +2754,14 @@ let SharedLog = (() => {
|
|
|
2605
2754
|
.catch((e) => logger.error(e.toString()));
|
|
2606
2755
|
}
|
|
2607
2756
|
}
|
|
2757
|
+
// Request the remote peer's replication info. This makes joins resilient to
|
|
2758
|
+
// timing-sensitive delivery/order issues where we may miss their initial
|
|
2759
|
+
// replication announcement.
|
|
2760
|
+
this.rpc
|
|
2761
|
+
.send(new RequestReplicationInfoMessage(), {
|
|
2762
|
+
mode: new SeekDelivery({ redundancy: 1, to: [publicKey] }),
|
|
2763
|
+
})
|
|
2764
|
+
.catch((e) => logger.error(e.toString()));
|
|
2608
2765
|
}
|
|
2609
2766
|
else {
|
|
2610
2767
|
await this.removeReplicator(publicKey);
|
|
@@ -2725,9 +2882,19 @@ let SharedLog = (() => {
|
|
|
2725
2882
|
deferredPromise.reject(e);
|
|
2726
2883
|
};
|
|
2727
2884
|
let cursor = undefined;
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2885
|
+
// Checked prune requests can legitimately take longer than a fixed 10s:
|
|
2886
|
+
// - The remote may not have the entry yet and will wait up to `_respondToIHaveTimeout`
|
|
2887
|
+
// - Leadership/replicator information may take up to `waitForReplicatorTimeout` to settle
|
|
2888
|
+
// If we time out too early we can end up with permanently prunable heads that never
|
|
2889
|
+
// get retried (a common CI flake in "prune before join" tests).
|
|
2890
|
+
const checkedPruneTimeoutMs = options?.timeout ??
|
|
2891
|
+
Math.max(10_000, Number(this._respondToIHaveTimeout ?? 0) +
|
|
2892
|
+
this.waitForReplicatorTimeout +
|
|
2893
|
+
PRUNE_DEBOUNCE_INTERVAL * 2);
|
|
2894
|
+
const timeout = setTimeout(() => {
|
|
2895
|
+
reject(new Error(`Timeout for checked pruning after ${checkedPruneTimeoutMs}ms (closed=${this.closed})`));
|
|
2896
|
+
}, checkedPruneTimeoutMs);
|
|
2897
|
+
timeout.unref?.();
|
|
2731
2898
|
this._pendingDeletes.set(entry.hash, {
|
|
2732
2899
|
promise: deferredPromise,
|
|
2733
2900
|
clear,
|
|
@@ -2835,8 +3002,8 @@ let SharedLog = (() => {
|
|
|
2835
3002
|
return { range: x, type: "added", timestamp };
|
|
2836
3003
|
}));
|
|
2837
3004
|
}
|
|
2838
|
-
async waitForPruned() {
|
|
2839
|
-
await waitFor(() => this._pendingDeletes.size === 0);
|
|
3005
|
+
async waitForPruned(options) {
|
|
3006
|
+
await waitFor(() => this._pendingDeletes.size === 0, options);
|
|
2840
3007
|
}
|
|
2841
3008
|
async onReplicationChange(changeOrChanges) {
|
|
2842
3009
|
/**
|
|
@@ -2953,9 +3120,19 @@ let SharedLog = (() => {
|
|
|
2953
3120
|
peerCount: peersSize,
|
|
2954
3121
|
cpuUsage: this.cpuUsage?.value(),
|
|
2955
3122
|
});
|
|
2956
|
-
const
|
|
2957
|
-
|
|
2958
|
-
|
|
3123
|
+
const absoluteDifference = Math.abs(dynamicRange.widthNormalized - newFactor);
|
|
3124
|
+
const relativeDifference = absoluteDifference /
|
|
3125
|
+
Math.max(dynamicRange.widthNormalized, RECALCULATE_PARTICIPATION_RELATIVE_DENOMINATOR_FLOOR);
|
|
3126
|
+
let minRelativeChange = RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE;
|
|
3127
|
+
if (this.replicationController.maxMemoryLimit != null) {
|
|
3128
|
+
minRelativeChange =
|
|
3129
|
+
RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_MEMORY_LIMIT;
|
|
3130
|
+
}
|
|
3131
|
+
else if (this.replicationController.maxCPUUsage != null) {
|
|
3132
|
+
minRelativeChange =
|
|
3133
|
+
RECALCULATE_PARTICIPATION_MIN_RELATIVE_CHANGE_WITH_CPU_LIMIT;
|
|
3134
|
+
}
|
|
3135
|
+
if (relativeDifference > minRelativeChange) {
|
|
2959
3136
|
// TODO can not reuse old range, since it will (potentially) affect the index because of sideeffects
|
|
2960
3137
|
dynamicRange = new this.indexableDomain.constructorRange({
|
|
2961
3138
|
offset: dynamicRange.start1,
|