@peerbit/shared-log 13.2.23 → 13.2.25

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.
Files changed (175) hide show
  1. package/dist/src/checked-prune.d.ts +12 -0
  2. package/dist/src/checked-prune.d.ts.map +1 -1
  3. package/dist/src/checked-prune.js +33 -0
  4. package/dist/src/checked-prune.js.map +1 -1
  5. package/dist/src/coordinate-persistence.d.ts +211 -0
  6. package/dist/src/coordinate-persistence.d.ts.map +1 -0
  7. package/dist/src/coordinate-persistence.js +1133 -0
  8. package/dist/src/coordinate-persistence.js.map +1 -0
  9. package/dist/src/errors.d.ts +1 -0
  10. package/dist/src/errors.d.ts.map +1 -1
  11. package/dist/src/errors.js +19 -0
  12. package/dist/src/errors.js.map +1 -1
  13. package/dist/src/index.d.ts +139 -133
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +1491 -4265
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/instance-lifecycle.d.ts +117 -0
  18. package/dist/src/instance-lifecycle.d.ts.map +1 -0
  19. package/dist/src/instance-lifecycle.js +254 -0
  20. package/dist/src/instance-lifecycle.js.map +1 -0
  21. package/dist/src/join-warmup.d.ts +86 -0
  22. package/dist/src/join-warmup.d.ts.map +1 -0
  23. package/dist/src/join-warmup.js +351 -0
  24. package/dist/src/join-warmup.js.map +1 -0
  25. package/dist/src/leader-plan-cache.d.ts +33 -0
  26. package/dist/src/leader-plan-cache.d.ts.map +1 -0
  27. package/dist/src/leader-plan-cache.js +49 -0
  28. package/dist/src/leader-plan-cache.js.map +1 -0
  29. package/dist/src/native-write-through-block-store.d.ts +123 -0
  30. package/dist/src/native-write-through-block-store.d.ts.map +1 -0
  31. package/dist/src/native-write-through-block-store.js +989 -0
  32. package/dist/src/native-write-through-block-store.js.map +1 -0
  33. package/dist/src/peer-session.d.ts +117 -0
  34. package/dist/src/peer-session.d.ts.map +1 -0
  35. package/dist/src/peer-session.js +259 -0
  36. package/dist/src/peer-session.js.map +1 -0
  37. package/dist/src/ranges.d.ts +2 -2
  38. package/dist/src/ranges.d.ts.map +1 -1
  39. package/dist/src/ranges.js +10 -8
  40. package/dist/src/ranges.js.map +1 -1
  41. package/dist/src/replication-announcement.d.ts +116 -0
  42. package/dist/src/replication-announcement.d.ts.map +1 -0
  43. package/dist/src/replication-announcement.js +515 -0
  44. package/dist/src/replication-announcement.js.map +1 -0
  45. package/dist/src/replicator-liveness.d.ts +59 -0
  46. package/dist/src/replicator-liveness.d.ts.map +1 -0
  47. package/dist/src/replicator-liveness.js +304 -0
  48. package/dist/src/replicator-liveness.js.map +1 -0
  49. package/dist/src/sync/dispatch-lifecycle.d.ts +48 -0
  50. package/dist/src/sync/dispatch-lifecycle.d.ts.map +1 -0
  51. package/dist/src/sync/dispatch-lifecycle.js +141 -0
  52. package/dist/src/sync/dispatch-lifecycle.js.map +1 -0
  53. package/dist/src/sync/factory.d.ts +29 -0
  54. package/dist/src/sync/factory.d.ts.map +1 -0
  55. package/dist/src/sync/factory.js +87 -0
  56. package/dist/src/sync/factory.js.map +1 -0
  57. package/dist/src/sync/pending-sync-store.d.ts +105 -0
  58. package/dist/src/sync/pending-sync-store.d.ts.map +1 -0
  59. package/dist/src/sync/pending-sync-store.js +877 -0
  60. package/dist/src/sync/pending-sync-store.js.map +1 -0
  61. package/dist/src/sync/rateless-iblt.d.ts +4 -1
  62. package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
  63. package/dist/src/sync/rateless-iblt.js +102 -106
  64. package/dist/src/sync/rateless-iblt.js.map +1 -1
  65. package/dist/src/sync/simple.d.ts +10 -41
  66. package/dist/src/sync/simple.d.ts.map +1 -1
  67. package/dist/src/sync/simple.js +259 -952
  68. package/dist/src/sync/simple.js.map +1 -1
  69. package/dist/src/sync/sync-peer-state.d.ts +16 -0
  70. package/dist/src/sync/sync-peer-state.d.ts.map +1 -0
  71. package/dist/src/sync/sync-peer-state.js +82 -0
  72. package/dist/src/sync/sync-peer-state.js.map +1 -0
  73. package/package.json +22 -21
  74. package/src/checked-prune.ts +35 -0
  75. package/src/coordinate-persistence.ts +1796 -0
  76. package/src/errors.ts +21 -0
  77. package/src/index.ts +6367 -10052
  78. package/src/instance-lifecycle.ts +351 -0
  79. package/src/join-warmup.ts +507 -0
  80. package/src/leader-plan-cache.ts +61 -0
  81. package/src/native-write-through-block-store.ts +1170 -0
  82. package/src/peer-session.ts +336 -0
  83. package/src/ranges.ts +22 -16
  84. package/src/replication-announcement.ts +744 -0
  85. package/src/replicator-liveness.ts +439 -0
  86. package/src/sync/dispatch-lifecycle.ts +230 -0
  87. package/src/sync/factory.ts +154 -0
  88. package/src/sync/pending-sync-store.ts +1085 -0
  89. package/src/sync/rateless-iblt.ts +122 -132
  90. package/src/sync/simple.ts +334 -1144
  91. package/src/sync/sync-peer-state.ts +107 -0
  92. package/dist/benchmark/adaptive-ingest.d.ts +0 -2
  93. package/dist/benchmark/adaptive-ingest.d.ts.map +0 -1
  94. package/dist/benchmark/adaptive-ingest.js +0 -275
  95. package/dist/benchmark/adaptive-ingest.js.map +0 -1
  96. package/dist/benchmark/get-samples.d.ts +0 -2
  97. package/dist/benchmark/get-samples.d.ts.map +0 -1
  98. package/dist/benchmark/get-samples.js +0 -194
  99. package/dist/benchmark/get-samples.js.map +0 -1
  100. package/dist/benchmark/index.d.ts +0 -2
  101. package/dist/benchmark/index.d.ts.map +0 -1
  102. package/dist/benchmark/index.js +0 -224
  103. package/dist/benchmark/index.js.map +0 -1
  104. package/dist/benchmark/join-backfill-repair.d.ts +0 -2
  105. package/dist/benchmark/join-backfill-repair.d.ts.map +0 -1
  106. package/dist/benchmark/join-backfill-repair.js +0 -288
  107. package/dist/benchmark/join-backfill-repair.js.map +0 -1
  108. package/dist/benchmark/memory/child.d.ts +0 -2
  109. package/dist/benchmark/memory/child.d.ts.map +0 -1
  110. package/dist/benchmark/memory/child.js +0 -204
  111. package/dist/benchmark/memory/child.js.map +0 -1
  112. package/dist/benchmark/memory/index.d.ts +0 -2
  113. package/dist/benchmark/memory/index.d.ts.map +0 -1
  114. package/dist/benchmark/memory/index.js +0 -81
  115. package/dist/benchmark/memory/index.js.map +0 -1
  116. package/dist/benchmark/memory/utils.d.ts +0 -13
  117. package/dist/benchmark/memory/utils.d.ts.map +0 -1
  118. package/dist/benchmark/memory/utils.js +0 -2
  119. package/dist/benchmark/memory/utils.js.map +0 -1
  120. package/dist/benchmark/native-graph.d.ts +0 -2
  121. package/dist/benchmark/native-graph.d.ts.map +0 -1
  122. package/dist/benchmark/native-graph.js +0 -359
  123. package/dist/benchmark/native-graph.js.map +0 -1
  124. package/dist/benchmark/network-preset-e2e.d.ts +0 -2
  125. package/dist/benchmark/network-preset-e2e.d.ts.map +0 -1
  126. package/dist/benchmark/network-preset-e2e.js +0 -497
  127. package/dist/benchmark/network-preset-e2e.js.map +0 -1
  128. package/dist/benchmark/partial-sync.d.ts +0 -3
  129. package/dist/benchmark/partial-sync.d.ts.map +0 -1
  130. package/dist/benchmark/partial-sync.js +0 -121
  131. package/dist/benchmark/partial-sync.js.map +0 -1
  132. package/dist/benchmark/pid-convergence.d.ts +0 -2
  133. package/dist/benchmark/pid-convergence.d.ts.map +0 -1
  134. package/dist/benchmark/pid-convergence.js +0 -138
  135. package/dist/benchmark/pid-convergence.js.map +0 -1
  136. package/dist/benchmark/rateless-iblt-sender-startsync.d.ts +0 -2
  137. package/dist/benchmark/rateless-iblt-sender-startsync.d.ts.map +0 -1
  138. package/dist/benchmark/rateless-iblt-sender-startsync.js +0 -104
  139. package/dist/benchmark/rateless-iblt-sender-startsync.js.map +0 -1
  140. package/dist/benchmark/rateless-iblt-startsync-cache.d.ts +0 -2
  141. package/dist/benchmark/rateless-iblt-startsync-cache.d.ts.map +0 -1
  142. package/dist/benchmark/rateless-iblt-startsync-cache.js +0 -112
  143. package/dist/benchmark/rateless-iblt-startsync-cache.js.map +0 -1
  144. package/dist/benchmark/receive-prune.d.ts +0 -2
  145. package/dist/benchmark/receive-prune.d.ts.map +0 -1
  146. package/dist/benchmark/receive-prune.js +0 -818
  147. package/dist/benchmark/receive-prune.js.map +0 -1
  148. package/dist/benchmark/replication-prune.d.ts +0 -2
  149. package/dist/benchmark/replication-prune.d.ts.map +0 -1
  150. package/dist/benchmark/replication-prune.js +0 -105
  151. package/dist/benchmark/replication-prune.js.map +0 -1
  152. package/dist/benchmark/replication.d.ts +0 -2
  153. package/dist/benchmark/replication.d.ts.map +0 -1
  154. package/dist/benchmark/replication.js +0 -88
  155. package/dist/benchmark/replication.js.map +0 -1
  156. package/dist/benchmark/sync-batch-sweep.d.ts +0 -2
  157. package/dist/benchmark/sync-batch-sweep.d.ts.map +0 -1
  158. package/dist/benchmark/sync-batch-sweep.js +0 -353
  159. package/dist/benchmark/sync-batch-sweep.js.map +0 -1
  160. package/dist/benchmark/sync-catchup.d.ts +0 -2
  161. package/dist/benchmark/sync-catchup.d.ts.map +0 -1
  162. package/dist/benchmark/sync-catchup.js +0 -277
  163. package/dist/benchmark/sync-catchup.js.map +0 -1
  164. package/dist/benchmark/sync-phase-profile.d.ts +0 -2
  165. package/dist/benchmark/sync-phase-profile.d.ts.map +0 -1
  166. package/dist/benchmark/sync-phase-profile.js +0 -303
  167. package/dist/benchmark/sync-phase-profile.js.map +0 -1
  168. package/dist/benchmark/to-rebalance.d.ts +0 -2
  169. package/dist/benchmark/to-rebalance.d.ts.map +0 -1
  170. package/dist/benchmark/to-rebalance.js +0 -117
  171. package/dist/benchmark/to-rebalance.js.map +0 -1
  172. package/dist/benchmark/utils.d.ts +0 -24
  173. package/dist/benchmark/utils.d.ts.map +0 -1
  174. package/dist/benchmark/utils.js +0 -47
  175. package/dist/benchmark/utils.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ // Per-peer sync slot state shared by the simple and rateless synchronizers
2
+ // (stage-4 sync unification). One row per peer carries the response/lookup
3
+ // slot accounting whose release closures may settle long after the peer is
4
+ // gone; both synchronizers use the same registry and the same
5
+ // capture-the-row identity pattern.
6
+ //
7
+ // Per-field lifetime policy (review this table when adding fields):
8
+ //
9
+ // | field | created | cleared |
10
+ // |------------------------------|--------------------|----------------------------|
11
+ // | lookups / responses / active | first slot acquire | physical release settles; |
12
+ // | | | row DETACH only removes |
13
+ // | | | current peer-generation |
14
+ // | | | quota (global quota stays |
15
+ // | | | charged until settlement) |
16
+ // | pendingResponseHashes | consume accepts an | lease release settles |
17
+ // | (simple synchronizer only) | authorization | while attached; row |
18
+ // | | (custody moves | DETACHES at peer |
19
+ // | | batch -> row) | disconnect (budget returns |
20
+ // | | | in aggregate) |
21
+ // | activeReleases | active-response or | logical release settles |
22
+ // | | coordinate | (self-removal); detach |
23
+ // | | dispatch starts | invokes outstanding |
24
+ // | | | logical releases so |
25
+ // | | | retained work drains |
26
+ //
27
+ // Global physical-work accounting deliberately SURVIVES both close()/open()
28
+ // generation rotation and peer disconnect: the underlying storage resolvers
29
+ // and transport sends are not universally abortable, so cross-generation
30
+ // work stays charged until it settles. Disconnect only detaches the row from
31
+ // the current peer generation and releases logical lifecycle ownership.
32
+ //
33
+ // Deliberately host-side this stage (stage-5 folds them into the host peer
34
+ // sessions): dispatch epochs and dispatch-target sets (benchmark-gated hot
35
+ // path), pending-claim rows (owned by the pending-sync record store),
36
+ // admission per-peer indexes (owned by the record store's reservation
37
+ // objects) and the recently-sent exchange-head dedupe rows.
38
+
39
+ export type SyncPeerSlotRow = {
40
+ peer: string;
41
+ attached: boolean;
42
+ lookups: number;
43
+ responses: number;
44
+ active: number;
45
+ // Portion of the simple synchronizer's global pending-response hash budget
46
+ // held by this peer's ACTIVE (consumed) authorizations. Batch-resident
47
+ // hashes stay charged against the batch; consume moves custody here so a
48
+ // disconnect can return the budget even when the response ship never
49
+ // settles. Always 0 on rateless rows.
50
+ pendingResponseHashes: number;
51
+ // Outstanding disconnect-time LOGICAL releases. Both synchronizers put
52
+ // active-response lifecycle cleanup here; Simple also puts coordinate
53
+ // dispatch completion here. Detach invokes the remainder so retained work
54
+ // and dispatch listeners drain. Each eventual async completion separately
55
+ // returns its global physical permit exactly once.
56
+ activeReleases: Set<() => void>;
57
+ };
58
+
59
+ export class SyncPeerSlotRegistry {
60
+ readonly rows = new Map<string, SyncPeerSlotRow>();
61
+
62
+ ensure(peer: string): SyncPeerSlotRow {
63
+ let row = this.rows.get(peer);
64
+ if (!row) {
65
+ row = {
66
+ peer,
67
+ attached: true,
68
+ lookups: 0,
69
+ responses: 0,
70
+ active: 0,
71
+ pendingResponseHashes: 0,
72
+ activeReleases: new Set(),
73
+ };
74
+ this.rows.set(peer, row);
75
+ }
76
+ return row;
77
+ }
78
+
79
+ // Detaches and returns the peer's row (or undefined when the peer holds no
80
+ // slots). The caller drops only current-generation/per-peer accounting and
81
+ // logical ownership. Physical release closures retain this row by identity
82
+ // and return global quota only when the underlying work actually settles.
83
+ detach(peer: string): SyncPeerSlotRow | undefined {
84
+ const row = this.rows.get(peer);
85
+ if (!row) {
86
+ return undefined;
87
+ }
88
+ row.attached = false;
89
+ this.rows.delete(peer);
90
+ return row;
91
+ }
92
+
93
+ // Rows whose slots all settled while attached are dropped eagerly so the
94
+ // registry never accumulates idle peers between disconnects.
95
+ maybeDropIdle(row: SyncPeerSlotRow): void {
96
+ if (
97
+ row.attached &&
98
+ row.lookups === 0 &&
99
+ row.responses === 0 &&
100
+ row.active === 0 &&
101
+ row.pendingResponseHashes === 0 &&
102
+ row.activeReleases.size === 0
103
+ ) {
104
+ this.rows.delete(row.peer);
105
+ }
106
+ }
107
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=adaptive-ingest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adaptive-ingest.d.ts","sourceRoot":"","sources":["../../benchmark/adaptive-ingest.ts"],"names":[],"mappings":""}
@@ -1,275 +0,0 @@
1
- // @ts-nocheck
2
- import { TestSession } from "@peerbit/test-utils";
3
- import { waitForResolved } from "@peerbit/time";
4
- import { EventStore } from "../test/utils/stores/event-store.js";
5
- const defaults = {
6
- mode: "both",
7
- entries: 200,
8
- payloadBytes: 4 * 1024,
9
- runs: 3,
10
- adaptiveIntervalMs: 50,
11
- burstIdleMs: 500,
12
- settleTimeoutMs: 10_000,
13
- target: "replicators",
14
- json: false,
15
- };
16
- const usage = () => {
17
- console.log(`Run with "node --loader ts-node/esm ./benchmark/adaptive-ingest.ts [options]"
18
-
19
- Options:
20
- --mode adaptive|fixed|both benchmark mode (default: both)
21
- --entries N entries per run (default: ${defaults.entries})
22
- --payloadBytes N payload bytes per entry (default: ${defaults.payloadBytes})
23
- --runs N runs per mode (default: ${defaults.runs})
24
- --adaptiveIntervalMs N adaptive controller interval (default: ${defaults.adaptiveIntervalMs})
25
- --burstIdleMs N override burst idle window for local runs (default: ${defaults.burstIdleMs})
26
- --settleTimeoutMs N max wait for deferred work to flush (default: ${defaults.settleTimeoutMs})
27
- --target replicators|none append target (default: ${defaults.target})
28
- --json emit JSON instead of tables
29
- --help show this message
30
- `);
31
- };
32
- const parseArgs = (argv) => {
33
- const out = { ...defaults };
34
- const consume = (index) => {
35
- const value = argv[index + 1];
36
- if (value == null) {
37
- throw new Error(`Missing value for ${argv[index]}`);
38
- }
39
- return value;
40
- };
41
- for (let i = 0; i < argv.length; i++) {
42
- if (argv[i] === "--") {
43
- continue;
44
- }
45
- switch (argv[i]) {
46
- case "--mode":
47
- out.mode = consume(i);
48
- i++;
49
- break;
50
- case "--entries":
51
- out.entries = Number.parseInt(consume(i), 10);
52
- i++;
53
- break;
54
- case "--payloadBytes":
55
- out.payloadBytes = Number.parseInt(consume(i), 10);
56
- i++;
57
- break;
58
- case "--runs":
59
- out.runs = Number.parseInt(consume(i), 10);
60
- i++;
61
- break;
62
- case "--adaptiveIntervalMs":
63
- out.adaptiveIntervalMs = Number.parseInt(consume(i), 10);
64
- i++;
65
- break;
66
- case "--burstIdleMs":
67
- out.burstIdleMs = Number.parseInt(consume(i), 10);
68
- i++;
69
- break;
70
- case "--settleTimeoutMs":
71
- out.settleTimeoutMs = Number.parseInt(consume(i), 10);
72
- i++;
73
- break;
74
- case "--target":
75
- out.target = consume(i);
76
- i++;
77
- break;
78
- case "--json":
79
- out.json = true;
80
- break;
81
- case "--help":
82
- usage();
83
- process.exit(0);
84
- default:
85
- if (argv[i].startsWith("--")) {
86
- throw new Error(`Unknown argument: ${argv[i]}`);
87
- }
88
- }
89
- }
90
- if (!["adaptive", "fixed", "both"].includes(out.mode)) {
91
- throw new Error(`Expected --mode adaptive|fixed|both, got '${out.mode}'`);
92
- }
93
- if (!Number.isFinite(out.entries) || out.entries <= 0) {
94
- throw new Error(`Expected --entries > 0, got '${out.entries}'`);
95
- }
96
- if (!Number.isFinite(out.payloadBytes) || out.payloadBytes <= 0) {
97
- throw new Error(`Expected --payloadBytes > 0, got '${out.payloadBytes}'`);
98
- }
99
- if (!Number.isFinite(out.runs) || out.runs <= 0) {
100
- throw new Error(`Expected --runs > 0, got '${out.runs}'`);
101
- }
102
- if (!Number.isFinite(out.adaptiveIntervalMs) || out.adaptiveIntervalMs <= 0) {
103
- throw new Error(`Expected --adaptiveIntervalMs > 0, got '${out.adaptiveIntervalMs}'`);
104
- }
105
- if (out.burstIdleMs != null &&
106
- (!Number.isFinite(out.burstIdleMs) || out.burstIdleMs <= 0)) {
107
- throw new Error(`Expected --burstIdleMs > 0, got '${out.burstIdleMs}'`);
108
- }
109
- if (!Number.isFinite(out.settleTimeoutMs) ||
110
- out.settleTimeoutMs <= 0) {
111
- throw new Error(`Expected --settleTimeoutMs > 0, got '${out.settleTimeoutMs}'`);
112
- }
113
- if (!["replicators", "none"].includes(out.target)) {
114
- throw new Error(`Expected --target replicators|none, got '${out.target}'`);
115
- }
116
- return out;
117
- };
118
- const getReplicateArgs = (mode, adaptiveIntervalMs) => {
119
- return mode === "adaptive"
120
- ? {
121
- limits: {
122
- interval: adaptiveIntervalMs,
123
- },
124
- }
125
- : { factor: 1 };
126
- };
127
- const average = (values) => values.reduce((sum, value) => sum + value, 0) / values.length;
128
- const summarize = (results) => {
129
- const byMode = new Map();
130
- for (const result of results) {
131
- const arr = byMode.get(result.mode) ?? [];
132
- arr.push(result);
133
- byMode.set(result.mode, arr);
134
- }
135
- return [...byMode.entries()].map(([mode, modeResults]) => ({
136
- mode,
137
- runs: modeResults.length,
138
- appendMsAvg: Number(average(modeResults.map((x) => x.appendMs)).toFixed(1)),
139
- settleMsAvg: Number(average(modeResults.map((x) => x.settleMs)).toFixed(1)),
140
- rebalanceScheduledAvg: Number(average(modeResults.map((x) => x.rebalanceScheduled)).toFixed(1)),
141
- rebalanceExecutedAvg: Number(average(modeResults.map((x) => x.rebalanceExecuted)).toFixed(1)),
142
- announceCallsAvg: Number(average(modeResults.map((x) => x.announceCalls)).toFixed(1)),
143
- pruneQueueAddsAvg: Number(average(modeResults.map((x) => x.pruneQueueAdds)).toFixed(1)),
144
- pruneCallsAvg: Number(average(modeResults.map((x) => x.pruneCalls)).toFixed(1)),
145
- writerEntriesAvg: Number(average(modeResults.map((x) => x.writerEntries)).toFixed(1)),
146
- followerEntriesAvg: Number(average(modeResults.map((x) => x.followerEntries)).toFixed(1)),
147
- settleTimeouts: modeResults.filter((x) => x.settleTimedOut).length,
148
- }));
149
- };
150
- const runScenario = async (mode, run, args) => {
151
- const session = await TestSession.connected(2);
152
- const replicate = getReplicateArgs(mode, args.adaptiveIntervalMs);
153
- const payload = "x".repeat(args.payloadBytes);
154
- let writer;
155
- let follower;
156
- try {
157
- writer = await session.peers[0].open(new EventStore(), {
158
- args: {
159
- replicate,
160
- },
161
- });
162
- follower = (await EventStore.open(writer.address, session.peers[1], {
163
- args: {
164
- replicate,
165
- },
166
- }));
167
- await writer.waitFor(session.peers[1].peerId);
168
- await follower.waitFor(session.peers[0].peerId);
169
- if (args.burstIdleMs != null) {
170
- writer.log.adaptiveRebalanceIdleMs = args.burstIdleMs;
171
- follower.log.adaptiveRebalanceIdleMs = args.burstIdleMs;
172
- }
173
- const rebalanceScheduled = sinonSpy(writer.log.rebalanceParticipationDebounced, "call");
174
- const rebalanceExecuted = sinonSpy(writer.log, "rebalanceParticipation");
175
- const announceCalls = sinonSpy(writer.log, "startAnnounceReplicating");
176
- const pruneQueueAdds = sinonSpy(writer.log.pruneDebouncedFn, "add");
177
- const pruneCalls = sinonSpy(writer.log, "prune");
178
- const appendStart = performance.now();
179
- for (let i = 0; i < args.entries; i++) {
180
- await writer.add(`${i}:${payload}`, { target: args.target });
181
- }
182
- const appendMs = performance.now() - appendStart;
183
- const settleStart = performance.now();
184
- let settleTimedOut = false;
185
- try {
186
- await waitForResolved(() => {
187
- const writerLog = writer.log;
188
- const shouldDelayAdaptiveRebalance = typeof writerLog.shouldDelayAdaptiveRebalance === "function"
189
- ? writerLog.shouldDelayAdaptiveRebalance()
190
- : false;
191
- return !shouldDelayAdaptiveRebalance && writerLog._pendingDeletes.size === 0;
192
- }, {
193
- timeout: args.settleTimeoutMs,
194
- delayInterval: 25,
195
- });
196
- }
197
- catch {
198
- settleTimedOut = true;
199
- }
200
- const settleMs = performance.now() - settleStart;
201
- return {
202
- mode,
203
- run,
204
- appendMs: Number(appendMs.toFixed(1)),
205
- settleMs: Number(settleMs.toFixed(1)),
206
- rebalanceScheduled: rebalanceScheduled.callCount,
207
- rebalanceExecuted: rebalanceExecuted.callCount,
208
- announceCalls: announceCalls.callCount,
209
- pruneQueueAdds: pruneQueueAdds.callCount,
210
- pruneCalls: pruneCalls.callCount,
211
- writerEntries: writer.log.log.length,
212
- followerEntries: follower.log.log.length,
213
- settleTimedOut,
214
- };
215
- }
216
- finally {
217
- await Promise.allSettled([
218
- writer?.close?.(),
219
- follower?.close?.(),
220
- ]);
221
- await session.stop();
222
- }
223
- };
224
- const sinonSpy = (target, method) => {
225
- if (!target || typeof target[method] !== "function") {
226
- return {
227
- get callCount() {
228
- return 0;
229
- },
230
- };
231
- }
232
- const original = target[method];
233
- let callCount = 0;
234
- target[method] = ((...params) => {
235
- callCount++;
236
- return original.apply(target, params);
237
- });
238
- return {
239
- get callCount() {
240
- return callCount;
241
- },
242
- };
243
- };
244
- const main = async () => {
245
- const args = parseArgs(process.argv.slice(2));
246
- const modes = args.mode === "both" ? ["adaptive", "fixed"] : [args.mode];
247
- const results = [];
248
- for (const mode of modes) {
249
- for (let run = 1; run <= args.runs; run++) {
250
- console.log(`Running ${mode} (${run}/${args.runs}) with ${args.entries} entries of ${args.payloadBytes} bytes`);
251
- results.push(await runScenario(mode, run, args));
252
- }
253
- }
254
- if (args.json) {
255
- console.log(JSON.stringify({
256
- args,
257
- results,
258
- summary: summarize(results),
259
- }, null, 2));
260
- return;
261
- }
262
- console.log("\nPer-run results");
263
- console.table(results);
264
- console.log("\nSummary");
265
- console.table(summarize(results));
266
- };
267
- main()
268
- .then(() => {
269
- process.exit(process.exitCode ?? 0);
270
- })
271
- .catch((error) => {
272
- console.error(error);
273
- process.exit(1);
274
- });
275
- //# sourceMappingURL=adaptive-ingest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adaptive-ingest.js","sourceRoot":"","sources":["../../benchmark/adaptive-ingest.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=get-samples.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-samples.d.ts","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":""}
@@ -1,194 +0,0 @@
1
- import { Ed25519Keypair, PublicSignKey } from "@peerbit/crypto";
2
- import { create as createIndex } from "@peerbit/indexer-sqlite3";
3
- import * as B from "tinybench";
4
- import { createNumbers, denormalizer } from "../src/integers.js";
5
- import { ReplicationIntent, ReplicationRangeIndexableU32, ReplicationRangeIndexableU64, getSamples, } from "../src/ranges.js";
6
- // Run with "node --loader ts-node/esm ./benchmark/get-samples.ts"
7
- const resolutions = ["u32", "u64"];
8
- for (const resolution of resolutions) {
9
- const rangeClass = resolution === "u32"
10
- ? ReplicationRangeIndexableU32
11
- : ReplicationRangeIndexableU64;
12
- const numbers = createNumbers(resolution);
13
- const denormalizeFn = denormalizer(resolution);
14
- const createReplicationRangeFromNormalized = (properties) => {
15
- return new rangeClass({
16
- id: properties.id,
17
- publicKey: properties.publicKey,
18
- mode: properties.mode,
19
- // @ts-ignore
20
- width: denormalizeFn(properties.length),
21
- // @ts-ignore
22
- offset: denormalizeFn(properties.offset),
23
- timestamp: properties.timestamp,
24
- });
25
- };
26
- let create = async (...rects) => {
27
- const indices = await createIndex();
28
- const index = await indices.init({ schema: rangeClass });
29
- await indices.start();
30
- for (const rect of rects) {
31
- await index.put(rect);
32
- }
33
- return [index, indices];
34
- };
35
- let a = (await Ed25519Keypair.create()).publicKey;
36
- let b = (await Ed25519Keypair.create()).publicKey;
37
- let c = (await Ed25519Keypair.create()).publicKey;
38
- const suite = new B.Bench({ name: resolution, warmupIterations: 1000 });
39
- let index;
40
- let indices = undefined;
41
- let sampleSize = 2;
42
- let rangeCount = 1e4;
43
- // this bench tests that the getSamples function can handle overlapping ranges in a more performant way than the sparse ranges
44
- suite.add("get samples one range - " + resolution, async () => {
45
- const samples = await getSamples(numbers.getGrid(numbers.denormalize(Math.random()), sampleSize), index, 0, numbers);
46
- if (samples.size !== 1) {
47
- throw new Error("Expected at least " + 1 + " samples, got " + samples.size);
48
- }
49
- }, {
50
- beforeAll: async () => {
51
- const out = await create(createReplicationRangeFromNormalized({
52
- publicKey: a,
53
- length: 1,
54
- offset: Math.random(),
55
- timestamp: 0n,
56
- }));
57
- index = out[0];
58
- indices = out[1];
59
- },
60
- afterAll: async () => {
61
- await indices.stop();
62
- },
63
- });
64
- suite.add("get samples one range unique replicators provided - " + resolution, async () => {
65
- const samples = await getSamples(numbers.getGrid(numbers.denormalize(Math.random()), sampleSize), index, 0, numbers, {
66
- uniqueReplicators: new Set([a.hashcode()]),
67
- });
68
- if (samples.size !== 1) {
69
- throw new Error("Expected at least " + 1 + " samples, got " + samples.size);
70
- }
71
- }, {
72
- beforeAll: async () => {
73
- const out = await create(createReplicationRangeFromNormalized({
74
- publicKey: a,
75
- length: 1,
76
- offset: Math.random(),
77
- timestamp: 0n,
78
- }));
79
- index = out[0];
80
- indices = out[1];
81
- },
82
- afterAll: async () => {
83
- await indices.stop();
84
- },
85
- });
86
- suite.add("get samples overlapping - " + resolution, async () => {
87
- const point = numbers.denormalize(Math.random());
88
- const samples = await getSamples(numbers.getGrid(point, sampleSize), index, 0, numbers, {
89
- onlyIntersecting: true,
90
- });
91
- if (samples.size < sampleSize) {
92
- throw new Error("Expected at least " + sampleSize + " samples, got " + samples.size);
93
- }
94
- }, {
95
- beforeAll: async () => {
96
- let ranges = [];
97
- // add 2 overlapping ranges
98
- ranges.push(createReplicationRangeFromNormalized({
99
- publicKey: a,
100
- length: 1,
101
- offset: 0.1 % 1,
102
- timestamp: 0n,
103
- }));
104
- ranges.push(createReplicationRangeFromNormalized({
105
- publicKey: b,
106
- length: 1,
107
- offset: 0.7 % 1,
108
- timestamp: 0n,
109
- }));
110
- // add sparse ranges
111
- for (let i = 0; i < rangeCount; i++) {
112
- ranges.push(...[
113
- createReplicationRangeFromNormalized({
114
- publicKey: a,
115
- length: 0.2 / rangeCount,
116
- offset: Math.random(),
117
- timestamp: 0n,
118
- }),
119
- createReplicationRangeFromNormalized({
120
- publicKey: b,
121
- length: 0.4 / rangeCount,
122
- offset: Math.random(),
123
- timestamp: 0n,
124
- }),
125
- createReplicationRangeFromNormalized({
126
- publicKey: c,
127
- length: 0.6 / rangeCount,
128
- offset: Math.random(),
129
- timestamp: 0n,
130
- }),
131
- createReplicationRangeFromNormalized({
132
- publicKey: c,
133
- length: 0.6 / rangeCount,
134
- offset: Math.random(),
135
- timestamp: 0n,
136
- }),
137
- ]);
138
- }
139
- const out = await create(...ranges);
140
- index = out[0];
141
- indices = out[1];
142
- },
143
- afterAll: async () => {
144
- await indices.stop();
145
- },
146
- });
147
- suite.add("get samples sparse - " + resolution, async () => {
148
- const samples = await getSamples(numbers.getGrid(numbers.denormalize(Math.random()), sampleSize), index, 0, numbers);
149
- if (samples.size < sampleSize) {
150
- throw new Error("Expected at least " + sampleSize + " samples, got " + samples.size);
151
- }
152
- }, {
153
- beforeAll: async () => {
154
- let ranges = [];
155
- for (let i = 0; i < rangeCount; i++) {
156
- ranges.push(...[
157
- createReplicationRangeFromNormalized({
158
- publicKey: a,
159
- length: 0.2 / rangeCount,
160
- offset: Math.random(),
161
- timestamp: 0n,
162
- }),
163
- createReplicationRangeFromNormalized({
164
- publicKey: b,
165
- length: 0.4 / rangeCount,
166
- offset: Math.random(),
167
- timestamp: 0n,
168
- }),
169
- createReplicationRangeFromNormalized({
170
- publicKey: c,
171
- length: 0.6 / rangeCount,
172
- offset: Math.random(),
173
- timestamp: 0n,
174
- }),
175
- createReplicationRangeFromNormalized({
176
- publicKey: c,
177
- length: 0.6 / rangeCount,
178
- offset: Math.random(),
179
- timestamp: 0n,
180
- }),
181
- ]);
182
- }
183
- const out = await create(...ranges);
184
- index = out[0];
185
- indices = out[1];
186
- },
187
- afterAll: async () => {
188
- await indices.stop();
189
- },
190
- });
191
- await suite.run();
192
- console.table(suite.table());
193
- }
194
- //# sourceMappingURL=get-samples.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-samples.js","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":""}