@peerbit/shared-log 8.0.7-efee9d3 → 9.0.0-2bc15a6
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/get-samples.d.ts +2 -0
- package/dist/benchmark/get-samples.d.ts.map +1 -0
- package/dist/benchmark/get-samples.js +69 -0
- package/dist/benchmark/get-samples.js.map +1 -0
- package/dist/benchmark/index.js +15 -16
- package/dist/benchmark/index.js.map +1 -1
- package/dist/benchmark/replication-prune.d.ts +2 -0
- package/dist/benchmark/replication-prune.d.ts.map +1 -0
- package/dist/benchmark/replication-prune.js +103 -0
- package/dist/benchmark/replication-prune.js.map +1 -0
- package/dist/benchmark/replication.d.ts +2 -0
- package/dist/benchmark/replication.d.ts.map +1 -0
- package/dist/benchmark/replication.js +91 -0
- package/dist/benchmark/replication.js.map +1 -0
- package/dist/src/blocks.js +1 -1
- package/dist/src/blocks.js.map +1 -1
- package/dist/src/cpu.js.map +1 -1
- package/dist/src/exchange-heads.d.ts +1 -1
- package/dist/src/exchange-heads.d.ts.map +1 -1
- package/dist/src/exchange-heads.js +8 -8
- package/dist/src/exchange-heads.js.map +1 -1
- package/dist/src/index.d.ts +53 -47
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +513 -365
- package/dist/src/index.js.map +1 -1
- package/dist/src/pid.d.ts.map +1 -1
- package/dist/src/pid.js +20 -20
- package/dist/src/pid.js.map +1 -1
- package/dist/src/ranges.d.ts +9 -12
- package/dist/src/ranges.d.ts.map +1 -1
- package/dist/src/ranges.js +528 -133
- package/dist/src/ranges.js.map +1 -1
- package/dist/src/replication.d.ts +70 -12
- package/dist/src/replication.d.ts.map +1 -1
- package/dist/src/replication.js +258 -17
- package/dist/src/replication.js.map +1 -1
- package/dist/src/role.d.ts +1 -38
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +92 -116
- package/dist/src/role.js.map +1 -1
- package/package.json +11 -10
- package/src/blocks.ts +1 -1
- package/src/cpu.ts +4 -4
- package/src/exchange-heads.ts +18 -18
- package/src/index.ts +797 -550
- package/src/pid.ts +23 -22
- package/src/ranges.ts +693 -147
- package/src/replication.ts +271 -19
- package/src/role.ts +63 -83
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-samples.d.ts","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
2
|
+
import { create as createIndex } from "@peerbit/indexer-sqlite3";
|
|
3
|
+
import B from "benchmark";
|
|
4
|
+
import { getSamples } from "../src/ranges.js";
|
|
5
|
+
import { ReplicationRangeIndexable } from "../src/replication.js";
|
|
6
|
+
// Run with "node --loader ts-node/esm ./benchmark/get-samples.ts"
|
|
7
|
+
let create = async (...rects) => {
|
|
8
|
+
const indices = await createIndex();
|
|
9
|
+
const index = await indices.init({ schema: ReplicationRangeIndexable });
|
|
10
|
+
await indices.start();
|
|
11
|
+
for (const rect of rects) {
|
|
12
|
+
await index.put(rect);
|
|
13
|
+
}
|
|
14
|
+
return [index, indices];
|
|
15
|
+
};
|
|
16
|
+
let a = (await Ed25519Keypair.create()).publicKey;
|
|
17
|
+
let b = (await Ed25519Keypair.create()).publicKey;
|
|
18
|
+
let c = (await Ed25519Keypair.create()).publicKey;
|
|
19
|
+
let ranges = [];
|
|
20
|
+
let rangeCount = 1000;
|
|
21
|
+
for (let i = 0; i < rangeCount; i++) {
|
|
22
|
+
ranges.push(...[
|
|
23
|
+
new ReplicationRangeIndexable({
|
|
24
|
+
publicKey: a,
|
|
25
|
+
length: 0.2 / rangeCount,
|
|
26
|
+
offset: (0 + rangeCount / i) % 1,
|
|
27
|
+
timestamp: 0n,
|
|
28
|
+
}),
|
|
29
|
+
new ReplicationRangeIndexable({
|
|
30
|
+
publicKey: b,
|
|
31
|
+
length: 0.4 / rangeCount,
|
|
32
|
+
offset: (0.333 + rangeCount / i) % 1,
|
|
33
|
+
timestamp: 0n,
|
|
34
|
+
}),
|
|
35
|
+
new ReplicationRangeIndexable({
|
|
36
|
+
publicKey: c,
|
|
37
|
+
length: 0.6 / rangeCount,
|
|
38
|
+
offset: (0.666 + rangeCount / i) % 1,
|
|
39
|
+
timestamp: 0n,
|
|
40
|
+
}),
|
|
41
|
+
new ReplicationRangeIndexable({
|
|
42
|
+
publicKey: c,
|
|
43
|
+
length: 0.6 / rangeCount,
|
|
44
|
+
offset: (0.666 + rangeCount / i) % 1,
|
|
45
|
+
timestamp: 0n,
|
|
46
|
+
}),
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
const [index, indices] = await create(...ranges);
|
|
50
|
+
const suite = new B.Suite();
|
|
51
|
+
suite
|
|
52
|
+
.add("getSamples", {
|
|
53
|
+
fn: async (deferred) => {
|
|
54
|
+
await getSamples(Math.random(), index, 2, 0);
|
|
55
|
+
deferred.resolve();
|
|
56
|
+
},
|
|
57
|
+
defer: true,
|
|
58
|
+
})
|
|
59
|
+
.on("cycle", (event) => {
|
|
60
|
+
console.log(String(event.target));
|
|
61
|
+
})
|
|
62
|
+
.on("error", (err) => {
|
|
63
|
+
throw err;
|
|
64
|
+
})
|
|
65
|
+
.on("complete", async function () {
|
|
66
|
+
await indices.drop();
|
|
67
|
+
})
|
|
68
|
+
.run();
|
|
69
|
+
//# sourceMappingURL=get-samples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-samples.js","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,CAAC,MAAM,WAAW,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,kEAAkE;AAElE,IAAI,MAAM,GAAG,KAAK,EACjB,GAAG,KAAkC,EACuB,EAAE;IAC9D,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACxE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,IAAI,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AAClD,IAAI,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AAClD,IAAI,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AAElD,IAAI,MAAM,GAAgC,EAAE,CAAC;AAC7C,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,MAAM,CAAC,IAAI,CACV,GAAG;QACF,IAAI,yBAAyB,CAAC;YAC7B,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,GAAG,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;YAChC,SAAS,EAAE,EAAE;SACb,CAAC;QACF,IAAI,yBAAyB,CAAC;YAC7B,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,GAAG,UAAU;YACxB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;YACpC,SAAS,EAAE,EAAE;SACb,CAAC;QACF,IAAI,yBAAyB,CAAC;YAC7B,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,GAAG,UAAU;YACxB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;YACpC,SAAS,EAAE,EAAE;SACb,CAAC;QACF,IAAI,yBAAyB,CAAC;YAC7B,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,GAAG,UAAU;YACxB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;YACpC,SAAS,EAAE,EAAE;SACb,CAAC;KACF,CACD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AACjD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;KACH,GAAG,CAAC,YAAY,EAAE;IAClB,EAAE,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE;QAC3B,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IACD,KAAK,EAAE,IAAI;CACX,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;IACzB,MAAM,GAAG,CAAC;AACX,CAAC,CAAC;KACD,EAAE,CAAC,UAAU,EAAE,KAAK;IACpB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC;KACD,GAAG,EAAE,CAAC"}
|
package/dist/benchmark/index.js
CHANGED
|
@@ -7,15 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import B from "benchmark";
|
|
11
10
|
import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
|
|
12
|
-
import { TestSession } from "@peerbit/test-utils";
|
|
13
11
|
import {} from "@peerbit/program";
|
|
14
|
-
import { v4 as uuid } from "uuid";
|
|
15
|
-
import crypto from "crypto";
|
|
16
12
|
import { Program } from "@peerbit/program";
|
|
13
|
+
import { TestSession } from "@peerbit/test-utils";
|
|
14
|
+
import B from "benchmark";
|
|
15
|
+
import crypto from "crypto";
|
|
16
|
+
import { v4 as uuid } from "uuid";
|
|
17
17
|
import { SharedLog } from "../src/index.js";
|
|
18
|
-
// Run with "node --loader ts-node/esm ./
|
|
18
|
+
// Run with "node --loader ts-node/esm ./benchmark/index.ts"
|
|
19
19
|
// put x 5,843 ops/sec ±4.50% (367 runs sampled)
|
|
20
20
|
let Document = class Document {
|
|
21
21
|
id;
|
|
@@ -62,8 +62,8 @@ let TestStore = class TestStore extends Program {
|
|
|
62
62
|
...options,
|
|
63
63
|
encoding: {
|
|
64
64
|
decoder: (bytes) => deserialize(bytes, Document),
|
|
65
|
-
encoder: (data) => serialize(data)
|
|
66
|
-
}
|
|
65
|
+
encoder: (data) => serialize(data),
|
|
66
|
+
},
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
};
|
|
@@ -79,15 +79,14 @@ const peersCount = 1;
|
|
|
79
79
|
const session = await TestSession.connected(peersCount);
|
|
80
80
|
const store = new TestStore({
|
|
81
81
|
logs: new SharedLog({
|
|
82
|
-
id: new Uint8Array(32)
|
|
83
|
-
})
|
|
82
|
+
id: new Uint8Array(32),
|
|
83
|
+
}),
|
|
84
84
|
});
|
|
85
85
|
const client = session.peers[0];
|
|
86
86
|
await client.open(store, {
|
|
87
87
|
args: {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
factor: 1
|
|
88
|
+
replicate: {
|
|
89
|
+
factor: 1,
|
|
91
90
|
},
|
|
92
91
|
trim: { type: "length", to: 100 },
|
|
93
92
|
onChange: (change) => {
|
|
@@ -96,8 +95,8 @@ await client.open(store, {
|
|
|
96
95
|
resolver.get(doc.id)();
|
|
97
96
|
resolver.delete(doc.id);
|
|
98
97
|
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
98
|
+
},
|
|
99
|
+
},
|
|
101
100
|
});
|
|
102
101
|
const resolver = new Map();
|
|
103
102
|
const suite = new B.Suite();
|
|
@@ -108,7 +107,7 @@ suite
|
|
|
108
107
|
id: uuid(),
|
|
109
108
|
name: "hello",
|
|
110
109
|
number: 1n,
|
|
111
|
-
bytes: crypto.randomBytes(1200)
|
|
110
|
+
bytes: crypto.randomBytes(1200),
|
|
112
111
|
});
|
|
113
112
|
resolver.set(doc.id, () => {
|
|
114
113
|
deferred.resolve();
|
|
@@ -116,7 +115,7 @@ suite
|
|
|
116
115
|
await store.logs.append(doc, { meta: { next: [] } });
|
|
117
116
|
},
|
|
118
117
|
minSamples: 300,
|
|
119
|
-
defer: true
|
|
118
|
+
defer: true,
|
|
120
119
|
})
|
|
121
120
|
.on("cycle", (event) => {
|
|
122
121
|
console.log(String(event.target));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replication-prune.d.ts","sourceRoot":"","sources":["../../benchmark/replication-prune.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { deserialize } from "@dao-xyz/borsh";
|
|
2
|
+
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
3
|
+
import { TestSession } from "@peerbit/test-utils";
|
|
4
|
+
import { waitForResolved } from "@peerbit/time";
|
|
5
|
+
import { expect } from "chai";
|
|
6
|
+
import { AbsoluteReplicas } from "../src/replication.js";
|
|
7
|
+
import { EventStore } from "../test/utils/stores/event-store.js";
|
|
8
|
+
// Run with "node --loader ts-node/esm ./benchmark/replication-prune.ts"
|
|
9
|
+
let session = await TestSession.connected(3, [
|
|
10
|
+
{
|
|
11
|
+
libp2p: {
|
|
12
|
+
peerId: await deserialize(new Uint8Array([
|
|
13
|
+
0, 0, 235, 231, 83, 185, 72, 206, 24, 154, 182, 109, 204, 158, 45, 46,
|
|
14
|
+
27, 15, 0, 173, 134, 194, 249, 74, 80, 151, 42, 219, 238, 163, 44, 6,
|
|
15
|
+
244, 93, 0, 136, 33, 37, 186, 9, 233, 46, 16, 89, 240, 71, 145, 18,
|
|
16
|
+
244, 158, 62, 37, 199, 0, 28, 223, 185, 206, 109, 168, 112, 65, 202,
|
|
17
|
+
154, 27, 63, 15,
|
|
18
|
+
]), Ed25519Keypair).toPeerId(),
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
libp2p: {
|
|
23
|
+
peerId: await deserialize(new Uint8Array([
|
|
24
|
+
0, 0, 132, 56, 63, 72, 241, 115, 159, 73, 215, 187, 97, 34, 23, 12,
|
|
25
|
+
215, 160, 74, 43, 159, 235, 35, 84, 2, 7, 71, 15, 5, 210, 231, 155,
|
|
26
|
+
75, 37, 0, 15, 85, 72, 252, 153, 251, 89, 18, 236, 54, 84, 137, 152,
|
|
27
|
+
227, 77, 127, 108, 252, 59, 138, 246, 221, 120, 187, 239, 56, 174,
|
|
28
|
+
184, 34, 141, 45, 242,
|
|
29
|
+
]), Ed25519Keypair).toPeerId(),
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
libp2p: {
|
|
34
|
+
peerId: await deserialize(new Uint8Array([
|
|
35
|
+
0, 0, 193, 202, 95, 29, 8, 42, 238, 188, 32, 59, 103, 187, 192, 93,
|
|
36
|
+
202, 183, 249, 50, 240, 175, 84, 87, 239, 94, 92, 9, 207, 165, 88, 38,
|
|
37
|
+
234, 216, 0, 183, 243, 219, 11, 211, 12, 61, 235, 154, 68, 205, 124,
|
|
38
|
+
143, 217, 234, 222, 254, 15, 18, 64, 197, 13, 62, 84, 62, 133, 97, 57,
|
|
39
|
+
150, 187, 247, 215,
|
|
40
|
+
]), Ed25519Keypair).toPeerId(),
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
let db1, db2, db3;
|
|
45
|
+
const init = async (min, max) => {
|
|
46
|
+
db1 = await session.peers[0].open(new EventStore(), {
|
|
47
|
+
args: {
|
|
48
|
+
replicas: {
|
|
49
|
+
min,
|
|
50
|
+
max,
|
|
51
|
+
},
|
|
52
|
+
replicate: false,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
db2 = (await EventStore.open(db1.address, session.peers[1], {
|
|
56
|
+
args: {
|
|
57
|
+
replicas: {
|
|
58
|
+
min,
|
|
59
|
+
max,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
}));
|
|
63
|
+
db3 = (await EventStore.open(db1.address, session.peers[2], {
|
|
64
|
+
args: {
|
|
65
|
+
replicas: {
|
|
66
|
+
min,
|
|
67
|
+
max,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
}));
|
|
71
|
+
await db1.waitFor(session.peers[1].peerId);
|
|
72
|
+
await db2.waitFor(session.peers[0].peerId);
|
|
73
|
+
await db2.waitFor(session.peers[2].peerId);
|
|
74
|
+
await db3.waitFor(session.peers[0].peerId);
|
|
75
|
+
};
|
|
76
|
+
let minReplicas = 1;
|
|
77
|
+
let maxReplicas = 1;
|
|
78
|
+
await init(minReplicas, maxReplicas);
|
|
79
|
+
const entryCount = 1e3;
|
|
80
|
+
for (let i = 0; i < entryCount; i++) {
|
|
81
|
+
await db1.add("hello", {
|
|
82
|
+
replicas: new AbsoluteReplicas(100), // will be overriden by 'maxReplicas' above
|
|
83
|
+
meta: { next: [] },
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
await waitForResolved(() => {
|
|
88
|
+
expect(db1.log.log.length).equal(0); // because db1 is not replicating at all, but just pruning once it knows entries are replicated elsewhere
|
|
89
|
+
let total = db2.log.log.length + db3.log.log.length;
|
|
90
|
+
expect(total).greaterThanOrEqual(entryCount);
|
|
91
|
+
expect(total).lessThan(entryCount * 2);
|
|
92
|
+
expect(db2.log.log.length).greaterThan(entryCount * 0.2);
|
|
93
|
+
expect(db3.log.log.length).greaterThan(entryCount * 0.2);
|
|
94
|
+
}, { timeout: 2e4 });
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.log("Failed to assert replication done");
|
|
98
|
+
console.log([db1, db2, db3].map((x) => x.log.log.length));
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
await session.stop();
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=replication-prune.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replication-prune.js","sourceRoot":"","sources":["../../benchmark/replication-prune.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { deserialize } from "@dao-xyz/borsh";
|
|
2
|
+
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
3
|
+
import { TestSession } from "@peerbit/test-utils";
|
|
4
|
+
import { AbortError,
|
|
5
|
+
/* waitFor */
|
|
6
|
+
} from "@peerbit/time";
|
|
7
|
+
import B from "benchmark";
|
|
8
|
+
import { v4 as uuid } from "uuid";
|
|
9
|
+
import { EventStore } from "../test/utils/stores/event-store.js";
|
|
10
|
+
// Run with "node --loader ts-node/esm ./benchmark/replication.ts"
|
|
11
|
+
let session = await TestSession.connected(2, [
|
|
12
|
+
{
|
|
13
|
+
libp2p: {
|
|
14
|
+
peerId: await deserialize(new Uint8Array([
|
|
15
|
+
0, 0, 235, 231, 83, 185, 72, 206, 24, 154, 182, 109, 204, 158, 45, 46,
|
|
16
|
+
27, 15, 0, 173, 134, 194, 249, 74, 80, 151, 42, 219, 238, 163, 44, 6,
|
|
17
|
+
244, 93, 0, 136, 33, 37, 186, 9, 233, 46, 16, 89, 240, 71, 145, 18,
|
|
18
|
+
244, 158, 62, 37, 199, 0, 28, 223, 185, 206, 109, 168, 112, 65, 202,
|
|
19
|
+
154, 27, 63, 15,
|
|
20
|
+
]), Ed25519Keypair).toPeerId(),
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
libp2p: {
|
|
25
|
+
peerId: await deserialize(new Uint8Array([
|
|
26
|
+
0, 0, 132, 56, 63, 72, 241, 115, 159, 73, 215, 187, 97, 34, 23, 12,
|
|
27
|
+
215, 160, 74, 43, 159, 235, 35, 84, 2, 7, 71, 15, 5, 210, 231, 155,
|
|
28
|
+
75, 37, 0, 15, 85, 72, 252, 153, 251, 89, 18, 236, 54, 84, 137, 152,
|
|
29
|
+
227, 77, 127, 108, 252, 59, 138, 246, 221, 120, 187, 239, 56, 174,
|
|
30
|
+
184, 34, 141, 45, 242,
|
|
31
|
+
]), Ed25519Keypair).toPeerId(),
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
let db1, db2;
|
|
36
|
+
let abortController = new AbortController();
|
|
37
|
+
let resolvers = new Map();
|
|
38
|
+
db1 = await session.peers[0].open(new EventStore(), {
|
|
39
|
+
args: {
|
|
40
|
+
replicate: {
|
|
41
|
+
factor: 1,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
db2 = (await EventStore.open(db1.address, session.peers[1], {
|
|
46
|
+
args: {
|
|
47
|
+
replicate: {
|
|
48
|
+
factor: 1,
|
|
49
|
+
},
|
|
50
|
+
onChange: async (change) => {
|
|
51
|
+
for (const entry of change.added) {
|
|
52
|
+
try {
|
|
53
|
+
resolvers
|
|
54
|
+
.get(entry.hash) /* || await waitFor(() => resolvers.get(entry.hash), { signal: abortController.signal }))? */
|
|
55
|
+
.resolve();
|
|
56
|
+
resolvers.delete(entry.hash);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof AbortError) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
/* throw error; */
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
}));
|
|
69
|
+
await db1.waitFor(session.peers[1].peerId);
|
|
70
|
+
await db2.waitFor(session.peers[0].peerId);
|
|
71
|
+
const suite = new B.Suite();
|
|
72
|
+
suite
|
|
73
|
+
.add("replication", {
|
|
74
|
+
fn: async (deferred) => {
|
|
75
|
+
const { entry } = await db1.add(uuid(), { meta: { next: [] } });
|
|
76
|
+
resolvers.set(entry.hash, deferred);
|
|
77
|
+
},
|
|
78
|
+
defer: true,
|
|
79
|
+
})
|
|
80
|
+
.on("cycle", (event) => {
|
|
81
|
+
console.log(String(event.target));
|
|
82
|
+
})
|
|
83
|
+
.on("error", (err) => {
|
|
84
|
+
throw err;
|
|
85
|
+
})
|
|
86
|
+
.on("complete", async function () {
|
|
87
|
+
await abortController.abort();
|
|
88
|
+
await session.stop();
|
|
89
|
+
})
|
|
90
|
+
.run();
|
|
91
|
+
//# sourceMappingURL=replication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":"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"}
|
package/dist/src/blocks.js
CHANGED
|
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { field, variant } from "@dao-xyz/borsh";
|
|
11
|
-
import { BlockRequest, BlockResponse, BlockMessage as IBlockMessage } from "@peerbit/blocks";
|
|
11
|
+
import { BlockRequest, BlockResponse, BlockMessage as IBlockMessage, } from "@peerbit/blocks";
|
|
12
12
|
import { TransportMessage } from "./message.js";
|
|
13
13
|
let BlocksMessage = class BlocksMessage extends TransportMessage {
|
|
14
14
|
message;
|
package/dist/src/blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,YAAY,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,YAAY,IAAI,aAAa,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGzC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gBAAgB;IAElD,OAAO,CAA+B;IAEtC,YAAY,OAAqC;QAChD,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD,CAAA;AAPA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;8CACO;AAF1B,aAAa;IADzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,aAAa,CASzB"}
|
package/dist/src/cpu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/cpu.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,OAAO,mBAAmB;IAMrB;IALV,EAAE,GAAa,EAAE,CAAC;IAClB,QAAQ,CAAkC;IAC1C,GAAG,GAAW,CAAC,CAAC;IAEhB,YACU,aAIL,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;QAJrD,eAAU,GAAV,UAAU,CAI2C;
|
|
1
|
+
{"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/cpu.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,OAAO,mBAAmB;IAMrB;IALV,EAAE,GAAa,EAAE,CAAC;IAClB,QAAQ,CAAkC;IAC1C,GAAG,GAAW,CAAC,CAAC;IAEhB,YACU,aAIL,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;QAJrD,eAAU,GAAV,UAAU,CAI2C;IAC5D,CAAC;IACI,IAAI;QACX,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,KAAK;QACJ,OAAO,CACN,IAAI,CAAC,GAAG,CACP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAC7B,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CACjC,CAAC,CAAC,8CAA8C;IAClD,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAC5B,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAErE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAG,CAAC;YAC7B,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,GAAG,GAAG,CAAC;QACV,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,IAAI;QACH,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Cache } from "@peerbit/cache";
|
|
1
2
|
import { Entry } from "@peerbit/log";
|
|
2
3
|
import { Log } from "@peerbit/log";
|
|
3
4
|
import { TransportMessage } from "./message.js";
|
|
4
|
-
import { Cache } from "@peerbit/cache";
|
|
5
5
|
/**
|
|
6
6
|
* This thing allows use to faster sync since we can provide
|
|
7
7
|
* references that can be read concurrently to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAgC,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD;;;;GAIG;AACH,qBACa,aAAa,CAAC,CAAC;IAE3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;CAInE;AAED,qBACa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;gBAE7B,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE;CAIhD;AAED,qBACa,gBAAiB,SAAQ,gBAAgB;IAErD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,iBAAkB,SAAQ,gBAAgB;IAEtD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,aAAc,SAAQ,gBAAgB;IAGlD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,cAAe,SAAQ,gBAAgB;IAGnD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAID,eAAO,MAAM,2BAA2B,QAClC,GAAG,CAAC,GAAG,CAAC,SACN,KAAK,CAAC,GAAG,CAAC,EAAE,kBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KACjC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAiDrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAC/B,GAAG,CAAC,GAAG,CAAC,SACN,KAAK,CAAC,GAAG,CAAC,kBACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KACjC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAsCtB,CAAC"}
|
|
@@ -7,12 +7,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { field, fixedArray, variant, vec } from "@dao-xyz/borsh";
|
|
11
|
+
import { Cache } from "@peerbit/cache";
|
|
11
12
|
import { Entry, EntryType } from "@peerbit/log";
|
|
12
13
|
import { Log } from "@peerbit/log";
|
|
13
14
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
14
15
|
import { TransportMessage } from "./message.js";
|
|
15
|
-
import { Cache } from "@peerbit/cache";
|
|
16
16
|
const logger = loggerFn({ module: "exchange-heads" });
|
|
17
17
|
/**
|
|
18
18
|
* This thing allows use to faster sync since we can provide
|
|
@@ -149,13 +149,13 @@ export const createExchangeHeadsMessages = async (log, heads, gidParentCache) =>
|
|
|
149
149
|
}
|
|
150
150
|
current.push(new EntryWithRefs({
|
|
151
151
|
entry: fromHead,
|
|
152
|
-
gidRefrences: refs.map((x) => x.meta.gid)
|
|
152
|
+
gidRefrences: refs.map((x) => x.meta.gid),
|
|
153
153
|
}));
|
|
154
154
|
size += fromHead.size;
|
|
155
155
|
if (size > MAX_EXCHANGE_MESSAGE_SIZE) {
|
|
156
156
|
size = 0;
|
|
157
157
|
messages.push(new ExchangeHeadsMessage({
|
|
158
|
-
heads: current
|
|
158
|
+
heads: current,
|
|
159
159
|
}));
|
|
160
160
|
current = [];
|
|
161
161
|
continue;
|
|
@@ -163,7 +163,7 @@ export const createExchangeHeadsMessages = async (log, heads, gidParentCache) =>
|
|
|
163
163
|
}
|
|
164
164
|
if (current.length > 0) {
|
|
165
165
|
messages.push(new ExchangeHeadsMessage({
|
|
166
|
-
heads: current
|
|
166
|
+
heads: current,
|
|
167
167
|
}));
|
|
168
168
|
}
|
|
169
169
|
return messages;
|
|
@@ -183,13 +183,13 @@ export const allEntriesWithUniqueGids = async (log, entry, gidParentCache) => {
|
|
|
183
183
|
map.set(element.meta.gid, element);
|
|
184
184
|
if (element.meta.type === EntryType.APPEND) {
|
|
185
185
|
for (const next of element.meta.next) {
|
|
186
|
-
const indexedEntry = log.entryIndex.getShallow(next);
|
|
186
|
+
const indexedEntry = await log.entryIndex.getShallow(next);
|
|
187
187
|
if (!indexedEntry) {
|
|
188
188
|
logger.error("Failed to find indexed entry for hash when fetching references: " +
|
|
189
189
|
next);
|
|
190
190
|
}
|
|
191
191
|
else {
|
|
192
|
-
nexts.push(indexedEntry);
|
|
192
|
+
nexts.push(indexedEntry.value);
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
}
|
|
@@ -198,7 +198,7 @@ export const allEntriesWithUniqueGids = async (log, entry, gidParentCache) => {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
const value = [
|
|
201
|
-
...(await Promise.all([...map.values()].map((x) => log.entryIndex.get(x.hash))))
|
|
201
|
+
...(await Promise.all([...map.values()].map((x) => log.entryIndex.get(x.hash)))),
|
|
202
202
|
].filter((x) => !!x);
|
|
203
203
|
gidParentCache.add(entry.hash, value);
|
|
204
204
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange-heads.js","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"exchange-heads.js","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"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"}
|