@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-batch-sweep.js","sourceRoot":"","sources":["../../benchmark/sync-batch-sweep.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sync-catchup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-catchup.d.ts","sourceRoot":"","sources":["../../benchmark/sync-catchup.ts"],"names":[],"mappings":""}
@@ -1,277 +0,0 @@
1
- // Benchmarks full catch-up sync time: one peer has N entries, the other starts empty.
2
- //
3
- // Run with:
4
- // cd packages/programs/data/shared-log
5
- // CATCHUP_COUNT=5000 CATCHUP_TIMEOUT=60000 node --loader ts-node/esm ./benchmark/sync-catchup.ts
6
- // CATCHUP_SETUPS=u32-simple-native-graph,u32-simple-raw CATCHUP_COUNT=1000 node --loader ts-node/esm ./benchmark/sync-catchup.ts
7
- // CATCHUP_SETUPS=u32-simple-raw-native-backbone-coordinate-wal CATCHUP_COUNT=10000 CATCHUP_PROFILE=1 BENCH_JSON=1 node --loader ts-node/esm ./benchmark/sync-catchup.ts
8
- // CATCHUP_PROFILE=1 CATCHUP_POLL_INTERVAL=10 CATCHUP_SETUPS=u32-simple-raw CATCHUP_COUNT=1000 BENCH_JSON=1 node --loader ts-node/esm ./benchmark/sync-catchup.ts
9
- //
10
- // Notes:
11
- // - This is an integration benchmark (network + sync + indexing). It is more variable than pure
12
- // algorithmic benches; prefer running it a few times and comparing medians.
13
- // - For CI regression tracking, consider smaller `CATCHUP_COUNT` values and low run counts.
14
- import { keys } from "@libp2p/crypto";
15
- import { NativeBackboneCoordinatePersistence, NativeBackboneMemoryCoordinatePersistenceStore, } from "@peerbit/native-backbone";
16
- import { TestSession } from "@peerbit/test-utils";
17
- import { waitForResolved } from "@peerbit/time";
18
- import { expect } from "chai";
19
- import { performance } from "node:perf_hooks";
20
- import { v4 as uuid } from "uuid";
21
- import { ExchangeHeadsMessage, RawExchangeHeadsMessage, } from "../src/exchange-heads.js";
22
- import { createReplicationDomainHash } from "../src/replication-domain-hash.js";
23
- import { RatelessIBLTSynchronizer } from "../src/sync/rateless-iblt.js";
24
- import { SimpleSyncronizer } from "../src/sync/simple.js";
25
- import { EventStore } from "../test/utils/stores/event-store.js";
26
- const entryCount = Number.parseInt(process.env.CATCHUP_COUNT || "5000", 10);
27
- const timeoutMs = Number.parseInt(process.env.CATCHUP_TIMEOUT || "60000", 10);
28
- const runs = Number.parseInt(process.env.CATCHUP_RUNS || "1", 10);
29
- const pollIntervalMs = Number.parseInt(process.env.CATCHUP_POLL_INTERVAL || "250", 10);
30
- const captureProfile = process.env.CATCHUP_PROFILE === "1";
31
- const allSetups = [
32
- {
33
- domain: createReplicationDomainHash("u32"),
34
- type: "u32",
35
- syncronizer: SimpleSyncronizer,
36
- name: "u32-simple",
37
- },
38
- {
39
- domain: createReplicationDomainHash("u32"),
40
- type: "u32",
41
- syncronizer: SimpleSyncronizer,
42
- name: "u32-simple-native-graph",
43
- nativeGraph: true,
44
- },
45
- {
46
- domain: createReplicationDomainHash("u32"),
47
- type: "u32",
48
- syncronizer: SimpleSyncronizer,
49
- name: "u32-simple-raw",
50
- nativeGraph: true,
51
- rawExchangeHeads: true,
52
- },
53
- {
54
- domain: createReplicationDomainHash("u32"),
55
- type: "u32",
56
- syncronizer: SimpleSyncronizer,
57
- name: "u32-simple-raw-native-backbone-coordinate-wal",
58
- nativeGraph: true,
59
- rawExchangeHeads: true,
60
- nativeBackboneCoordinateWal: true,
61
- },
62
- {
63
- domain: createReplicationDomainHash("u64"),
64
- type: "u64",
65
- syncronizer: RatelessIBLTSynchronizer,
66
- name: "u64-iblt",
67
- },
68
- ];
69
- const selectedSetupNames = process.env.CATCHUP_SETUPS?.split(",")
70
- .map((x) => x.trim())
71
- .filter(Boolean);
72
- const defaultSetupNames = ["u32-simple", "u64-iblt"];
73
- const testSetups = selectedSetupNames && selectedSetupNames.length > 0
74
- ? selectedSetupNames.map((name) => {
75
- const setup = allSetups.find((candidate) => candidate.name === name);
76
- if (!setup) {
77
- throw new Error(`Unknown catchup setup '${name}'`);
78
- }
79
- return setup;
80
- })
81
- : allSetups.filter((setup) => defaultSetupNames.includes(setup.name));
82
- const fixedKeys = [
83
- {
84
- libp2p: {
85
- privateKey: keys.privateKeyFromRaw(new Uint8Array([
86
- 204, 234, 187, 172, 226, 232, 70, 175, 62, 211, 147, 91, 229, 157,
87
- 168, 15, 45, 242, 144, 98, 75, 58, 208, 9, 223, 143, 251, 52, 252,
88
- 159, 64, 83, 52, 197, 24, 246, 24, 234, 141, 183, 151, 82, 53, 142,
89
- 57, 25, 148, 150, 26, 209, 223, 22, 212, 40, 201, 6, 191, 72, 148, 82,
90
- 66, 138, 199, 185,
91
- ])),
92
- },
93
- },
94
- {
95
- libp2p: {
96
- privateKey: keys.privateKeyFromRaw(new Uint8Array([
97
- 237, 55, 205, 86, 40, 44, 73, 169, 196, 118, 36, 69, 214, 122, 28,
98
- 157, 208, 163, 15, 215, 104, 193, 151, 177, 62, 231, 253, 120, 122,
99
- 222, 174, 242, 120, 50, 165, 97, 8, 235, 97, 186, 148, 251, 100, 168,
100
- 49, 10, 119, 71, 246, 246, 174, 163, 198, 54, 224, 6, 174, 212, 159,
101
- 187, 2, 137, 47, 192,
102
- ])),
103
- },
104
- },
105
- ];
106
- const wrapSendCounters = (db) => {
107
- const counters = {
108
- exchangeHeads: 0,
109
- rawExchangeHeads: 0,
110
- };
111
- const send = db.log.rpc.send.bind(db.log.rpc);
112
- db.log.rpc.send = async (message, options) => {
113
- if (message instanceof RawExchangeHeadsMessage) {
114
- counters.rawExchangeHeads += 1;
115
- }
116
- else if (message instanceof ExchangeHeadsMessage) {
117
- counters.exchangeHeads += 1;
118
- }
119
- return send(message, options);
120
- };
121
- return counters;
122
- };
123
- const summarizeProfileEvents = (events) => {
124
- const summaries = new Map();
125
- for (const event of events) {
126
- let summary = summaries.get(event.name);
127
- if (!summary) {
128
- summary = {
129
- name: event.name,
130
- count: 0,
131
- totalMs: 0,
132
- maxMs: 0,
133
- entries: 0,
134
- bytes: 0,
135
- messages: 0,
136
- };
137
- summaries.set(event.name, summary);
138
- }
139
- const durationMs = event.durationMs ?? 0;
140
- summary.count += 1;
141
- summary.totalMs += durationMs;
142
- summary.maxMs = Math.max(summary.maxMs, durationMs);
143
- summary.entries += event.entries ?? 0;
144
- summary.bytes += event.bytes ?? 0;
145
- summary.messages += event.messages ?? 0;
146
- }
147
- return [...summaries.values()].sort((a, b) => b.totalMs - a.totalMs);
148
- };
149
- const mergeProfileSummaries = (target, summaries) => {
150
- for (const summary of summaries) {
151
- let merged = target.get(summary.name);
152
- if (!merged) {
153
- merged = {
154
- name: summary.name,
155
- count: 0,
156
- totalMs: 0,
157
- maxMs: 0,
158
- entries: 0,
159
- bytes: 0,
160
- messages: 0,
161
- };
162
- target.set(summary.name, merged);
163
- }
164
- merged.count += summary.count;
165
- merged.totalMs += summary.totalMs;
166
- merged.maxMs = Math.max(merged.maxMs, summary.maxMs);
167
- merged.entries += summary.entries;
168
- merged.bytes += summary.bytes;
169
- merged.messages += summary.messages;
170
- }
171
- };
172
- const runOnce = async (setup) => {
173
- const session = await TestSession.disconnected(2, fixedKeys);
174
- const store = new EventStore();
175
- const profileEvents = [];
176
- const createNativeBackboneOptions = () => setup.nativeBackboneCoordinateWal
177
- ? {
178
- optional: false,
179
- coordinatePersistence: new NativeBackboneCoordinatePersistence(new NativeBackboneMemoryCoordinatePersistenceStore()),
180
- }
181
- : undefined;
182
- const syncOptions = setup.rawExchangeHeads || captureProfile
183
- ? {
184
- rawExchangeHeads: setup.rawExchangeHeads || undefined,
185
- profile: captureProfile
186
- ? (event) => profileEvents.push(event)
187
- : undefined,
188
- }
189
- : undefined;
190
- const db1 = await session.peers[0].open(store.clone(), {
191
- args: {
192
- replicate: { factor: 1 },
193
- setup,
194
- nativeGraph: setup.nativeGraph,
195
- nativeBackbone: createNativeBackboneOptions(),
196
- sync: syncOptions,
197
- },
198
- });
199
- const db2 = await session.peers[1].open(store.clone(), {
200
- args: {
201
- replicate: { factor: 1 },
202
- setup,
203
- nativeGraph: setup.nativeGraph,
204
- nativeBackbone: createNativeBackboneOptions(),
205
- sync: syncOptions,
206
- },
207
- });
208
- const db1Counters = wrapSendCounters(db1);
209
- const db2Counters = wrapSendCounters(db2);
210
- for (let i = 0; i < entryCount; i++) {
211
- await db1.add(uuid(), { meta: { next: [] } });
212
- }
213
- expect(db1.log.log.length).to.equal(entryCount);
214
- await waitForResolved(() => session.peers[0].dial(session.peers[1].getMultiaddrs()));
215
- const t0 = performance.now();
216
- await waitForResolved(() => {
217
- expect(db2.log.log.length).to.equal(entryCount);
218
- }, { timeout: timeoutMs, delayInterval: pollIntervalMs });
219
- const dt = performance.now() - t0;
220
- await session.stop();
221
- return {
222
- dt,
223
- exchangeHeads: db1Counters.exchangeHeads + db2Counters.exchangeHeads,
224
- rawExchangeHeads: db1Counters.rawExchangeHeads + db2Counters.rawExchangeHeads,
225
- profile: summarizeProfileEvents(profileEvents),
226
- };
227
- };
228
- const tasks = [];
229
- for (const setup of testSetups) {
230
- const samples = [];
231
- let exchangeHeads = 0;
232
- let rawExchangeHeads = 0;
233
- const profileSummaries = new Map();
234
- for (let i = 0; i < runs; i++) {
235
- const result = await runOnce(setup);
236
- samples.push(result.dt);
237
- exchangeHeads += result.exchangeHeads;
238
- rawExchangeHeads += result.rawExchangeHeads;
239
- mergeProfileSummaries(profileSummaries, result.profile);
240
- }
241
- const mean_ms = samples.reduce((acc, x) => acc + x, 0) / samples.length;
242
- tasks.push({
243
- name: `${setup.name} catchup (n=${entryCount})`,
244
- mean_ms,
245
- hz: mean_ms > 0 ? 1000 / mean_ms : 0,
246
- rme: null,
247
- samples: samples.length,
248
- exchangeHeads,
249
- rawExchangeHeads,
250
- profile: captureProfile
251
- ? [...profileSummaries.values()].sort((a, b) => b.totalMs - a.totalMs)
252
- : undefined,
253
- });
254
- }
255
- if (process.env.BENCH_JSON === "1") {
256
- process.stdout.write(JSON.stringify({
257
- name: "shared-log-sync-catchup",
258
- tasks,
259
- meta: {
260
- entryCount,
261
- timeoutMs,
262
- pollIntervalMs,
263
- runs,
264
- setups: testSetups.map((setup) => setup.name),
265
- },
266
- }, null, 2));
267
- }
268
- else {
269
- console.table(tasks);
270
- if (captureProfile) {
271
- for (const task of tasks) {
272
- console.log(`\n${task.name} profile`);
273
- console.table(task.profile);
274
- }
275
- }
276
- }
277
- //# sourceMappingURL=sync-catchup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-catchup.js","sourceRoot":"","sources":["../../benchmark/sync-catchup.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sync-phase-profile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-phase-profile.d.ts","sourceRoot":"","sources":["../../benchmark/sync-phase-profile.ts"],"names":[],"mappings":""}
@@ -1,303 +0,0 @@
1
- // Profiles where catch-up sync spends time across simple and rateless phases.
2
- //
3
- // Run with:
4
- // cd packages/programs/data/shared-log
5
- // node --loader ts-node/esm ./benchmark/sync-phase-profile.ts --entries 20000 --seededEntries 10000 --runs 1
6
- //
7
- // JSON output:
8
- // node --loader ts-node/esm ./benchmark/sync-phase-profile.ts --json
9
- import { TestSession } from "@peerbit/test-utils";
10
- import { waitForResolved } from "@peerbit/time";
11
- import { expect } from "chai";
12
- import { performance } from "node:perf_hooks";
13
- import { createReplicationDomainHash, } from "../src/index.js";
14
- import { MoreSymbols, RatelessIBLTSynchronizer, RequestAll, StartSync, } from "../src/sync/rateless-iblt.js";
15
- import { RequestMaybeSync, RequestMaybeSyncCoordinate, } from "../src/sync/simple.js";
16
- import { EventStore } from "../test/utils/stores/event-store.js";
17
- const parseArgs = () => {
18
- const args = process.argv.slice(2);
19
- const readNumber = (name, fallback) => {
20
- const index = args.indexOf(`--${name}`);
21
- const raw = index >= 0
22
- ? args[index + 1]
23
- : process.env[`SYNC_PROFILE_${name.toUpperCase()}`];
24
- if (!raw) {
25
- return fallback;
26
- }
27
- const parsed = Number.parseInt(raw, 10);
28
- if (!Number.isFinite(parsed) || parsed <= 0) {
29
- throw new Error(`Expected --${name} to be a positive integer`);
30
- }
31
- return parsed;
32
- };
33
- const readNonNegativeNumber = (name, fallback) => {
34
- const index = args.indexOf(`--${name}`);
35
- const raw = index >= 0
36
- ? args[index + 1]
37
- : process.env[`SYNC_PROFILE_${name.toUpperCase()}`];
38
- if (!raw) {
39
- return fallback;
40
- }
41
- const parsed = Number.parseInt(raw, 10);
42
- if (!Number.isFinite(parsed) || parsed < 0) {
43
- throw new Error(`Expected --${name} to be a non-negative integer`);
44
- }
45
- return parsed;
46
- };
47
- return {
48
- entryCount: readNumber("entries", 10_000),
49
- seededEntries: readNonNegativeNumber("seededEntries", 1_000),
50
- batchSize: readNumber("batchSize", 16_384),
51
- timeoutMs: readNumber("timeoutMs", 120_000),
52
- drainMs: readNonNegativeNumber("drainMs", 250),
53
- runs: readNumber("runs", 1),
54
- warmupRuns: readNonNegativeNumber("warmupRuns", 0),
55
- json: args.includes("--json") || process.env.BENCH_JSON === "1",
56
- };
57
- };
58
- const writeStdout = (text) => new Promise((resolve, reject) => {
59
- process.stdout.write(text, (error) => {
60
- if (error) {
61
- reject(error);
62
- return;
63
- }
64
- resolve();
65
- });
66
- });
67
- const createEmptyCounters = () => ({
68
- startSync: 0,
69
- moreSymbols: 0,
70
- requestAll: 0,
71
- requestMaybeSync: 0,
72
- requestMaybeSyncCoordinate: 0,
73
- });
74
- const mergeCounters = (left, right) => ({
75
- startSync: left.startSync + right.startSync,
76
- moreSymbols: left.moreSymbols + right.moreSymbols,
77
- requestAll: left.requestAll + right.requestAll,
78
- requestMaybeSync: left.requestMaybeSync + right.requestMaybeSync,
79
- requestMaybeSyncCoordinate: left.requestMaybeSyncCoordinate + right.requestMaybeSyncCoordinate,
80
- });
81
- const attachMessageCounter = (store) => {
82
- const counters = createEmptyCounters();
83
- const original = store.log.onMessage.bind(store.log);
84
- store.log.onMessage = async (msg, context) => {
85
- if (msg instanceof StartSync)
86
- counters.startSync += 1;
87
- else if (msg instanceof MoreSymbols)
88
- counters.moreSymbols += 1;
89
- else if (msg instanceof RequestAll)
90
- counters.requestAll += 1;
91
- else if (msg instanceof RequestMaybeSync)
92
- counters.requestMaybeSync += 1;
93
- else if (msg instanceof RequestMaybeSyncCoordinate)
94
- counters.requestMaybeSyncCoordinate += 1;
95
- return original(msg, context);
96
- };
97
- return {
98
- read: () => ({ ...counters }),
99
- restore: () => {
100
- store.log.onMessage = original;
101
- },
102
- };
103
- };
104
- class SyncProfileCollector {
105
- records = [];
106
- profile(peer) {
107
- return (event) => {
108
- this.records.push({
109
- ...event,
110
- peer,
111
- atMs: performance.now(),
112
- });
113
- };
114
- }
115
- }
116
- const summarizeRecords = (records) => {
117
- const summaries = new Map();
118
- for (const record of records) {
119
- let summary = summaries.get(record.name);
120
- if (!summary) {
121
- summary = {
122
- count: 0,
123
- totalMs: 0,
124
- maxMs: 0,
125
- entries: 0,
126
- symbols: 0,
127
- messages: 0,
128
- bytes: 0,
129
- peers: new Map(),
130
- };
131
- summaries.set(record.name, summary);
132
- }
133
- const durationMs = record.durationMs ?? 0;
134
- summary.count += 1;
135
- summary.totalMs += durationMs;
136
- summary.maxMs = Math.max(summary.maxMs, durationMs);
137
- summary.entries += record.entries ?? 0;
138
- summary.symbols += record.symbols ?? 0;
139
- summary.messages += record.messages ?? 0;
140
- summary.bytes += record.bytes ?? 0;
141
- summary.peers.set(record.peer, (summary.peers.get(record.peer) ?? 0) + 1);
142
- }
143
- return [...summaries.entries()]
144
- .map(([phase, summary]) => ({
145
- phase,
146
- count: summary.count,
147
- totalMs: summary.totalMs,
148
- meanMs: summary.count > 0 ? summary.totalMs / summary.count : 0,
149
- maxMs: summary.maxMs,
150
- entries: summary.entries,
151
- symbols: summary.symbols,
152
- messages: summary.messages,
153
- bytes: summary.bytes,
154
- peers: Object.fromEntries(summary.peers),
155
- }))
156
- .sort((a, b) => b.totalMs - a.totalMs || b.count - a.count);
157
- };
158
- const setup = {
159
- domain: createReplicationDomainHash("u64"),
160
- type: "u64",
161
- syncronizer: RatelessIBLTSynchronizer,
162
- name: "u64-iblt",
163
- };
164
- const runCatchup = async (properties) => {
165
- const collector = new SyncProfileCollector();
166
- const session = await TestSession.disconnected(2);
167
- const store = new EventStore();
168
- let db1;
169
- let db2;
170
- let counter1;
171
- let counter2;
172
- let catchupMs = 0;
173
- let counters = createEmptyCounters();
174
- try {
175
- db1 = await session.peers[0].open(store.clone(), {
176
- args: {
177
- replicate: { factor: 2 },
178
- setup,
179
- sync: {
180
- repairSweepTargetBufferSize: properties.batchSize,
181
- profile: collector.profile("source"),
182
- },
183
- },
184
- });
185
- db2 = await session.peers[1].open(store.clone(), {
186
- args: {
187
- replicate: { factor: 2 },
188
- setup,
189
- sync: {
190
- repairSweepTargetBufferSize: properties.batchSize,
191
- profile: collector.profile("joiner"),
192
- },
193
- },
194
- });
195
- for (let i = 0; i < properties.seededEntries; i++) {
196
- const out = await db1.add(`seed-${i}`, { meta: { next: [] } });
197
- await db2.log.join([out.entry]);
198
- }
199
- for (let i = 0; i < properties.entryCount; i++) {
200
- await db1.add(`entry-${i}`, { meta: { next: [] } });
201
- }
202
- const expectedLength = properties.seededEntries + properties.entryCount;
203
- expect(db1.log.log.length).to.equal(expectedLength);
204
- expect(db2.log.log.length).to.equal(properties.seededEntries);
205
- counter1 = attachMessageCounter(db1);
206
- counter2 = attachMessageCounter(db2);
207
- await waitForResolved(() => session.peers[0].dial(session.peers[1].getMultiaddrs()));
208
- const t0 = performance.now();
209
- await waitForResolved(() => expect(db2.log.log.length).to.equal(expectedLength), { timeout: properties.timeoutMs, delayInterval: 250 });
210
- catchupMs = performance.now() - t0;
211
- if (properties.drainMs > 0) {
212
- await new Promise((resolve) => setTimeout(resolve, properties.drainMs));
213
- }
214
- counters = mergeCounters(counter1.read(), counter2.read());
215
- }
216
- finally {
217
- counter1?.restore();
218
- counter2?.restore();
219
- await session.stop();
220
- }
221
- const records = [...collector.records];
222
- return {
223
- run: properties.run,
224
- catchupMs,
225
- counters,
226
- records,
227
- phases: summarizeRecords(records),
228
- };
229
- };
230
- const options = parseArgs();
231
- const measuredRuns = [];
232
- const allMeasuredRecords = [];
233
- let counterTotals = createEmptyCounters();
234
- const totalRuns = options.warmupRuns + options.runs;
235
- for (let run = 0; run < totalRuns; run++) {
236
- const result = await runCatchup({
237
- batchSize: options.batchSize,
238
- entryCount: options.entryCount,
239
- seededEntries: options.seededEntries,
240
- timeoutMs: options.timeoutMs,
241
- drainMs: options.drainMs,
242
- run,
243
- });
244
- if (run < options.warmupRuns) {
245
- continue;
246
- }
247
- measuredRuns.push({
248
- run: result.run,
249
- catchupMs: result.catchupMs,
250
- counters: result.counters,
251
- phases: result.phases,
252
- });
253
- counterTotals = mergeCounters(counterTotals, result.counters);
254
- allMeasuredRecords.push(...result.records);
255
- }
256
- const catchupSamples = measuredRuns.map((run) => run.catchupMs);
257
- const meanCatchupMs = catchupSamples.reduce((sum, value) => sum + value, 0) / catchupSamples.length;
258
- const aggregatePhases = summarizeRecords(allMeasuredRecords);
259
- const output = {
260
- name: "shared-log-sync-phase-profile",
261
- meta: {
262
- entryCount: options.entryCount,
263
- seededEntries: options.seededEntries,
264
- batchSize: options.batchSize,
265
- timeoutMs: options.timeoutMs,
266
- drainMs: options.drainMs,
267
- warmupRuns: options.warmupRuns,
268
- measuredRuns: options.runs,
269
- },
270
- task: {
271
- name: "rateless-catchup",
272
- mean_ms: meanCatchupMs,
273
- hz: meanCatchupMs > 0 ? 1000 / meanCatchupMs : 0,
274
- rme: null,
275
- samples: catchupSamples.length,
276
- counters: counterTotals,
277
- phases: aggregatePhases,
278
- },
279
- runs: measuredRuns,
280
- };
281
- if (options.json) {
282
- await writeStdout(`${JSON.stringify(output, null, 2)}\n`);
283
- }
284
- else {
285
- console.log(`shared-log sync phase profile: entries=${options.entryCount} seededEntries=${options.seededEntries} batchSize=${options.batchSize} drainMs=${options.drainMs} runs=${options.runs}`);
286
- console.log(`catchup mean=${meanCatchupMs.toFixed(2)}ms hz=${output.task.hz.toFixed(2)}`);
287
- console.table(counterTotals);
288
- console.table(aggregatePhases.map((phase) => ({
289
- phase: phase.phase,
290
- count: phase.count,
291
- total_ms: phase.totalMs.toFixed(2),
292
- mean_ms: phase.meanMs.toFixed(2),
293
- max_ms: phase.maxMs.toFixed(2),
294
- entries: phase.entries,
295
- symbols: phase.symbols,
296
- messages: phase.messages,
297
- peers: Object.entries(phase.peers)
298
- .map(([peer, count]) => `${peer}:${count}`)
299
- .join(","),
300
- })));
301
- }
302
- process.exit(process.exitCode ?? 0);
303
- //# sourceMappingURL=sync-phase-profile.js.map