@peerbit/shared-log 9.0.5-a16b978 → 9.0.6-b57d808
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/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +60 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/replication.d.ts +8 -0
- package/dist/src/replication.d.ts.map +1 -1
- package/dist/src/replication.js +36 -24
- package/dist/src/replication.js.map +1 -1
- package/dist/src/role.d.ts +37 -0
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +99 -92
- package/dist/src/role.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +79 -11
- package/src/replication.ts +37 -22
- package/src/role.ts +68 -63
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,OAAO,EACP,GAAG,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAc,EAAE,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":"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"}
|
package/dist/src/role.d.ts
CHANGED
|
@@ -1,2 +1,39 @@
|
|
|
1
1
|
export declare const SEGMENT_COORDINATE_SCALE = 4294967295;
|
|
2
|
+
export declare const overlaps: (x1: number, x2: number, y1: number, y2: number) => boolean;
|
|
3
|
+
export declare abstract class Role {
|
|
4
|
+
abstract equals(other: Role): boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const NO_TYPE_VARIANT: Uint8Array;
|
|
7
|
+
export declare class NoType extends Role {
|
|
8
|
+
equals(other: Role): other is NoType;
|
|
9
|
+
}
|
|
10
|
+
export declare const OBSERVER_TYPE_VARIANT: Uint8Array;
|
|
11
|
+
export declare class Observer extends Role {
|
|
12
|
+
equals(other: Role): other is Observer;
|
|
13
|
+
}
|
|
14
|
+
export declare const REPLICATOR_TYPE_VARIANT: Uint8Array;
|
|
15
|
+
export declare class RoleReplicationSegment {
|
|
16
|
+
timestamp: bigint;
|
|
17
|
+
private factorNominator;
|
|
18
|
+
private offsetNominator;
|
|
19
|
+
constructor(properties: {
|
|
20
|
+
factor: number;
|
|
21
|
+
offset: number;
|
|
22
|
+
timestamp?: bigint;
|
|
23
|
+
});
|
|
24
|
+
get factor(): number;
|
|
25
|
+
get offset(): number;
|
|
26
|
+
}
|
|
27
|
+
export declare class Replicator extends Role {
|
|
28
|
+
segments: RoleReplicationSegment[];
|
|
29
|
+
constructor(properties: {
|
|
30
|
+
factor: number;
|
|
31
|
+
timestamp?: bigint;
|
|
32
|
+
offset: number;
|
|
33
|
+
});
|
|
34
|
+
get factor(): number;
|
|
35
|
+
get offset(): number;
|
|
36
|
+
get timestamp(): bigint;
|
|
37
|
+
equals(other: Role): boolean;
|
|
38
|
+
}
|
|
2
39
|
//# sourceMappingURL=role.d.ts.map
|
package/dist/src/role.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,wBAAwB,aAAa,CAAC;AAEnD,eAAO,MAAM,QAAQ,OAAQ,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,YAKtE,CAAC;AAEF,8BAAsB,IAAI;IACzB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;CACrC;AAED,eAAO,MAAM,eAAe,YAAsB,CAAC;AAEnD,qBACa,MAAO,SAAQ,IAAI;IAC/B,MAAM,CAAC,KAAK,EAAE,IAAI;CAGlB;AAED,eAAO,MAAM,qBAAqB,YAAsB,CAAC;AAEzD,qBACa,QAAS,SAAQ,IAAI;IACjC,MAAM,CAAC,KAAK,EAAE,IAAI;CAGlB;AAED,eAAO,MAAM,uBAAuB,YAAsB,CAAC;AAE3D,qBAAa,sBAAsB;IAElC,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,eAAe,CAAS;gBAEpB,UAAU,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB;IAeD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CAED;AAED,qBACa,UAAW,SAAQ,IAAI;IAEnC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;gBAEvB,UAAU,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KACf;IAQD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,MAAM,CAAC,KAAK,EAAE,IAAI;CAOlB"}
|
package/dist/src/role.js
CHANGED
|
@@ -1,106 +1,113 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var NoType_1, Observer_1, Replicator_1;
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated
|
|
13
|
+
* Code below is deprecated and will be removed in the future.
|
|
14
|
+
* Roles have been replaces with just replication segments.
|
|
15
|
+
*/
|
|
16
|
+
import { field, variant, vec } from "@dao-xyz/borsh";
|
|
17
|
+
export const SEGMENT_COORDINATE_SCALE = 4294967295;
|
|
18
|
+
export const overlaps = (x1, x2, y1, y2) => {
|
|
3
19
|
if (x1 <= y2 && y1 <= x2) {
|
|
4
20
|
return true;
|
|
5
21
|
}
|
|
6
22
|
return false;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
abstract equals(other: Role): boolean;
|
|
23
|
+
};
|
|
24
|
+
export class Role {
|
|
10
25
|
}
|
|
11
|
-
|
|
12
26
|
export const NO_TYPE_VARIANT = new Uint8Array([0]);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
equals(other: Role) {
|
|
17
|
-
return other instanceof NoType;
|
|
27
|
+
let NoType = NoType_1 = class NoType extends Role {
|
|
28
|
+
equals(other) {
|
|
29
|
+
return other instanceof NoType_1;
|
|
18
30
|
}
|
|
19
|
-
}
|
|
20
|
-
|
|
31
|
+
};
|
|
32
|
+
NoType = NoType_1 = __decorate([
|
|
33
|
+
variant(0)
|
|
34
|
+
], NoType);
|
|
35
|
+
export { NoType };
|
|
21
36
|
export const OBSERVER_TYPE_VARIANT = new Uint8Array([1]);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
equals(other: Role) {
|
|
26
|
-
return other instanceof Observer;
|
|
37
|
+
let Observer = Observer_1 = class Observer extends Role {
|
|
38
|
+
equals(other) {
|
|
39
|
+
return other instanceof Observer_1;
|
|
27
40
|
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
timestamp
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
constructor(properties: {
|
|
46
|
-
start: number;
|
|
47
|
-
end: number;
|
|
48
|
-
timestamp: bigint;
|
|
49
|
-
}) {
|
|
50
|
-
const { start, end, timestamp } = properties;
|
|
51
|
-
|
|
52
|
-
if (start > end) {
|
|
53
|
-
throw new Error("Range 'start' needs to be lower or equal to 'end'")
|
|
41
|
+
};
|
|
42
|
+
Observer = Observer_1 = __decorate([
|
|
43
|
+
variant(1)
|
|
44
|
+
], Observer);
|
|
45
|
+
export { Observer };
|
|
46
|
+
export const REPLICATOR_TYPE_VARIANT = new Uint8Array([2]);
|
|
47
|
+
export class RoleReplicationSegment {
|
|
48
|
+
timestamp;
|
|
49
|
+
factorNominator;
|
|
50
|
+
offsetNominator;
|
|
51
|
+
constructor(properties) {
|
|
52
|
+
const { factor, timestamp, offset } = properties;
|
|
53
|
+
if (factor > 1 || factor < 0) {
|
|
54
|
+
throw new Error("Expecting factor to be between 0 and 1, got: " + factor);
|
|
54
55
|
}
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
|
|
56
|
+
this.timestamp = timestamp ?? BigInt(+new Date());
|
|
57
|
+
this.factorNominator = Math.round(SEGMENT_COORDINATE_SCALE * factor);
|
|
58
|
+
if (offset > 1 || offset < 0) {
|
|
59
|
+
throw new Error("Expecting offset to be between 0 and 1, got: " + offset);
|
|
60
|
+
}
|
|
61
|
+
this.offsetNominator = Math.round(SEGMENT_COORDINATE_SCALE * offset);
|
|
62
|
+
}
|
|
63
|
+
get factor() {
|
|
64
|
+
return this.factorNominator / SEGMENT_COORDINATE_SCALE;
|
|
65
|
+
}
|
|
66
|
+
get offset() {
|
|
67
|
+
return this.offsetNominator / SEGMENT_COORDINATE_SCALE;
|
|
58
68
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
__decorate([
|
|
71
|
+
field({ type: "u64" }),
|
|
72
|
+
__metadata("design:type", BigInt)
|
|
73
|
+
], RoleReplicationSegment.prototype, "timestamp", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
field({ type: "u32" }),
|
|
76
|
+
__metadata("design:type", Number)
|
|
77
|
+
], RoleReplicationSegment.prototype, "factorNominator", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
field({ type: "u32" }),
|
|
80
|
+
__metadata("design:type", Number)
|
|
81
|
+
], RoleReplicationSegment.prototype, "offsetNominator", void 0);
|
|
82
|
+
let Replicator = Replicator_1 = class Replicator extends Role {
|
|
83
|
+
segments;
|
|
84
|
+
constructor(properties) {
|
|
73
85
|
super();
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
other.factor === this.factor &&
|
|
102
|
-
other.offset === this.offset
|
|
103
|
-
);
|
|
104
|
-
} */
|
|
105
|
-
/* } */
|
|
86
|
+
const segment = new RoleReplicationSegment(properties);
|
|
87
|
+
this.segments = [segment];
|
|
88
|
+
}
|
|
89
|
+
get factor() {
|
|
90
|
+
return this.segments[0].factor;
|
|
91
|
+
}
|
|
92
|
+
get offset() {
|
|
93
|
+
return this.segments[0].offset;
|
|
94
|
+
}
|
|
95
|
+
get timestamp() {
|
|
96
|
+
return this.segments[0].timestamp;
|
|
97
|
+
}
|
|
98
|
+
equals(other) {
|
|
99
|
+
return (other instanceof Replicator_1 &&
|
|
100
|
+
other.factor === this.factor &&
|
|
101
|
+
other.offset === this.offset);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
__decorate([
|
|
105
|
+
field({ type: vec(RoleReplicationSegment) }),
|
|
106
|
+
__metadata("design:type", Array)
|
|
107
|
+
], Replicator.prototype, "segments", void 0);
|
|
108
|
+
Replicator = Replicator_1 = __decorate([
|
|
109
|
+
variant(2),
|
|
110
|
+
__metadata("design:paramtypes", [Object])
|
|
111
|
+
], Replicator);
|
|
112
|
+
export { Replicator };
|
|
106
113
|
//# sourceMappingURL=role.js.map
|
package/dist/src/role.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/shared-log",
|
|
3
|
-
"version": "9.0.
|
|
3
|
+
"version": "9.0.6-b57d808",
|
|
4
4
|
"description": "Shared log",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -59,14 +59,14 @@
|
|
|
59
59
|
"license": "MIT",
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@dao-xyz/borsh": "^5.2.3",
|
|
62
|
-
"@peerbit/logger": "1.0.3-
|
|
63
|
-
"@peerbit/program": "5.0.1-
|
|
64
|
-
"@peerbit/log": "4.0.
|
|
65
|
-
"@peerbit/rpc": "5.0.
|
|
66
|
-
"@peerbit/time": "2.0.7-
|
|
62
|
+
"@peerbit/logger": "1.0.3-b57d808",
|
|
63
|
+
"@peerbit/program": "5.0.1-b57d808",
|
|
64
|
+
"@peerbit/log": "4.0.5-b57d808",
|
|
65
|
+
"@peerbit/rpc": "5.0.5-b57d808",
|
|
66
|
+
"@peerbit/time": "2.0.7-b57d808",
|
|
67
67
|
"p-debounce": "^4.0.0"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
|
-
"@peerbit/test-utils": "2.0.
|
|
70
|
+
"@peerbit/test-utils": "2.0.39-b57d808"
|
|
71
71
|
}
|
|
72
72
|
}
|
package/src/index.ts
CHANGED
|
@@ -73,6 +73,7 @@ import {
|
|
|
73
73
|
ReplicationRangeIndexable,
|
|
74
74
|
RequestReplicationInfoMessage,
|
|
75
75
|
ResponseReplicationInfoMessage,
|
|
76
|
+
ResponseRoleMessage,
|
|
76
77
|
StartedReplicating,
|
|
77
78
|
StoppedReplicating,
|
|
78
79
|
decodeReplicas,
|
|
@@ -80,7 +81,7 @@ import {
|
|
|
80
81
|
hashToUniformNumber,
|
|
81
82
|
maxReplicas,
|
|
82
83
|
} from "./replication.js";
|
|
83
|
-
import { SEGMENT_COORDINATE_SCALE } from "./role.js";
|
|
84
|
+
import { Observer, Replicator, SEGMENT_COORDINATE_SCALE } from "./role.js";
|
|
84
85
|
|
|
85
86
|
export * from "./replication.js";
|
|
86
87
|
|
|
@@ -96,10 +97,10 @@ const groupByGid = async <
|
|
|
96
97
|
const groupByGid: Map<string, T[]> = new Map();
|
|
97
98
|
for (const head of entries) {
|
|
98
99
|
const gid = await (head instanceof Entry
|
|
99
|
-
? head.
|
|
100
|
+
? (await head.getMeta()).gid
|
|
100
101
|
: head instanceof ShallowEntry
|
|
101
102
|
? head.meta.gid
|
|
102
|
-
: head.entry.
|
|
103
|
+
: (await head.entry.getMeta()).gid);
|
|
103
104
|
let value = groupByGid.get(gid);
|
|
104
105
|
if (!value) {
|
|
105
106
|
value = [];
|
|
@@ -156,6 +157,7 @@ export type SharedLogOptions<T> = {
|
|
|
156
157
|
timeUntilRoleMaturity?: number;
|
|
157
158
|
waitForReplicatorTimeout?: number;
|
|
158
159
|
distributionDebounceTime?: number;
|
|
160
|
+
compatiblity?: number;
|
|
159
161
|
};
|
|
160
162
|
|
|
161
163
|
export const DEFAULT_MIN_REPLICAS = 2;
|
|
@@ -205,7 +207,9 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
205
207
|
publicKey: PublicSignKey,
|
|
206
208
|
) => Promise<boolean> | boolean;
|
|
207
209
|
|
|
208
|
-
private _logProperties?: LogProperties<T> &
|
|
210
|
+
private _logProperties?: LogProperties<T> &
|
|
211
|
+
LogEvents<T> &
|
|
212
|
+
SharedLogOptions<T>;
|
|
209
213
|
private _closeController!: AbortController;
|
|
210
214
|
private _gidParentCache!: Cache<Entry<any>[]>;
|
|
211
215
|
private _respondToIHaveTimeout!: any;
|
|
@@ -278,6 +282,28 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
278
282
|
return this._replicationSettings;
|
|
279
283
|
}
|
|
280
284
|
|
|
285
|
+
private get v8Behaviour() {
|
|
286
|
+
return (this._logProperties?.compatiblity ?? Number.MAX_SAFE_INTEGER) < 9;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// @deprecated
|
|
290
|
+
private getRole() {
|
|
291
|
+
let isFixedReplicationSettings =
|
|
292
|
+
(this._replicationSettings as FixedReplicationOptions).factor !==
|
|
293
|
+
undefined;
|
|
294
|
+
if (isFixedReplicationSettings) {
|
|
295
|
+
const fixedSettings = this
|
|
296
|
+
._replicationSettings as FixedReplicationOptions;
|
|
297
|
+
return new Replicator({
|
|
298
|
+
factor: fixedSettings.factor,
|
|
299
|
+
offset: fixedSettings.offset ?? 0,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// TODO this is not accurate but might be good enough
|
|
304
|
+
return new Observer();
|
|
305
|
+
}
|
|
306
|
+
|
|
281
307
|
async isReplicating() {
|
|
282
308
|
if (!this._replicationSettings) {
|
|
283
309
|
return false;
|
|
@@ -596,13 +622,14 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
596
622
|
logger.warn("Not allowed to replicate by canReplicate");
|
|
597
623
|
}
|
|
598
624
|
|
|
599
|
-
added
|
|
600
|
-
|
|
625
|
+
if (added) {
|
|
626
|
+
await this.rpc.send(
|
|
601
627
|
new StartedReplicating({ segments: [range.toReplicationRange()] }),
|
|
602
628
|
{
|
|
603
629
|
priority: 1,
|
|
604
630
|
},
|
|
605
|
-
)
|
|
631
|
+
);
|
|
632
|
+
}
|
|
606
633
|
}
|
|
607
634
|
|
|
608
635
|
async append(
|
|
@@ -992,12 +1019,16 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
992
1019
|
async _onMessage(
|
|
993
1020
|
msg: TransportMessage,
|
|
994
1021
|
context: RequestContext,
|
|
995
|
-
): Promise<
|
|
1022
|
+
): Promise<void> {
|
|
996
1023
|
try {
|
|
997
1024
|
if (!context.from) {
|
|
998
1025
|
throw new Error("Missing from in update role message");
|
|
999
1026
|
}
|
|
1000
1027
|
|
|
1028
|
+
if (msg instanceof ResponseRoleMessage) {
|
|
1029
|
+
msg = msg.toReplicationInfoMessage(); // migration
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1001
1032
|
if (msg instanceof ExchangeHeadsMessage) {
|
|
1002
1033
|
/**
|
|
1003
1034
|
* I have received heads from someone else.
|
|
@@ -1105,7 +1136,7 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1105
1136
|
|
|
1106
1137
|
logger.debug(
|
|
1107
1138
|
`${this.node.identity.publicKey.hashcode()}: Dropping heads with gid: ${
|
|
1108
|
-
entry.entry.gid
|
|
1139
|
+
entry.entry.meta.gid
|
|
1109
1140
|
}. Because not leader`,
|
|
1110
1141
|
);
|
|
1111
1142
|
}
|
|
@@ -1273,6 +1304,8 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1273
1304
|
} else if (msg instanceof BlocksMessage) {
|
|
1274
1305
|
await this.remoteBlocks.onMessage(msg.message);
|
|
1275
1306
|
} else if (msg instanceof RequestReplicationInfoMessage) {
|
|
1307
|
+
// TODO this message type is never used, should we remove it?
|
|
1308
|
+
|
|
1276
1309
|
if (context.from.equals(this.node.identity.publicKey)) {
|
|
1277
1310
|
return;
|
|
1278
1311
|
}
|
|
@@ -1286,6 +1319,28 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1286
1319
|
mode: new SilentDelivery({ to: [context.from], redundancy: 1 }),
|
|
1287
1320
|
},
|
|
1288
1321
|
);
|
|
1322
|
+
|
|
1323
|
+
// for backwards compatibility (v8) remove this when we are sure that all nodes are v9+
|
|
1324
|
+
if (this.v8Behaviour) {
|
|
1325
|
+
const role = this.getRole();
|
|
1326
|
+
if (role instanceof Replicator) {
|
|
1327
|
+
const fixedSettings = this
|
|
1328
|
+
._replicationSettings as FixedReplicationOptions;
|
|
1329
|
+
if (fixedSettings.factor === 1) {
|
|
1330
|
+
await this.rpc.send(
|
|
1331
|
+
new ResponseRoleMessage({
|
|
1332
|
+
role,
|
|
1333
|
+
}),
|
|
1334
|
+
{
|
|
1335
|
+
mode: new SilentDelivery({
|
|
1336
|
+
to: [context.from],
|
|
1337
|
+
redundancy: 1,
|
|
1338
|
+
}),
|
|
1339
|
+
},
|
|
1340
|
+
);
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1289
1344
|
} else if (
|
|
1290
1345
|
msg instanceof ResponseReplicationInfoMessage ||
|
|
1291
1346
|
msg instanceof StartedReplicating
|
|
@@ -1294,6 +1349,10 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1294
1349
|
return;
|
|
1295
1350
|
}
|
|
1296
1351
|
|
|
1352
|
+
let replicationInfoMessage = msg as
|
|
1353
|
+
| ResponseReplicationInfoMessage
|
|
1354
|
+
| StartedReplicating;
|
|
1355
|
+
|
|
1297
1356
|
// we have this statement because peers might have changed/announced their role,
|
|
1298
1357
|
// but we don't know them as "subscribers" yet. i.e. they are not online
|
|
1299
1358
|
|
|
@@ -1316,7 +1375,7 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1316
1375
|
await this.removeReplicator(context.from!);
|
|
1317
1376
|
}
|
|
1318
1377
|
let addedOnce = false;
|
|
1319
|
-
for (const segment of
|
|
1378
|
+
for (const segment of replicationInfoMessage.segments) {
|
|
1320
1379
|
const added = await this.addReplicationRange(
|
|
1321
1380
|
segment.toReplicationRangeIndexable(context.from!),
|
|
1322
1381
|
context.from!,
|
|
@@ -1619,7 +1678,7 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1619
1678
|
},
|
|
1620
1679
|
) {
|
|
1621
1680
|
return this.isLeader(
|
|
1622
|
-
entry.gid,
|
|
1681
|
+
entry.meta.gid,
|
|
1623
1682
|
decodeReplicas(entry).getValue(this),
|
|
1624
1683
|
options,
|
|
1625
1684
|
);
|
|
@@ -1671,6 +1730,15 @@ export class SharedLog<T = Uint8Array> extends Program<
|
|
|
1671
1730
|
},
|
|
1672
1731
|
)
|
|
1673
1732
|
.catch((e) => logger.error(e.toString()));
|
|
1733
|
+
|
|
1734
|
+
if (this.v8Behaviour) {
|
|
1735
|
+
// for backwards compatibility
|
|
1736
|
+
this.rpc
|
|
1737
|
+
.send(new ResponseRoleMessage({ role: this.getRole() }), {
|
|
1738
|
+
mode: new SilentDelivery({ redundancy: 1, to: [publicKey] }),
|
|
1739
|
+
})
|
|
1740
|
+
.catch((e) => logger.error(e.toString()));
|
|
1741
|
+
}
|
|
1674
1742
|
}
|
|
1675
1743
|
} else {
|
|
1676
1744
|
await this.removeReplicator(publicKey);
|
package/src/replication.ts
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
BinaryReader,
|
|
3
3
|
deserialize,
|
|
4
4
|
field,
|
|
5
|
+
option,
|
|
5
6
|
serialize,
|
|
6
7
|
variant,
|
|
7
8
|
vec,
|
|
@@ -9,28 +10,14 @@ import {
|
|
|
9
10
|
import { PublicSignKey, equals, randomBytes } from "@peerbit/crypto";
|
|
10
11
|
import { type Index, id } from "@peerbit/indexer-interface";
|
|
11
12
|
import { TransportMessage } from "./message.js";
|
|
12
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
Observer,
|
|
15
|
+
Replicator,
|
|
16
|
+
Role,
|
|
17
|
+
SEGMENT_COORDINATE_SCALE,
|
|
18
|
+
} from "./role.js";
|
|
13
19
|
|
|
14
20
|
export type ReplicationLimits = { min: MinReplicas; max?: MinReplicas };
|
|
15
|
-
/*
|
|
16
|
-
export class ReplicatorRect {
|
|
17
|
-
|
|
18
|
-
@id({ type: Uint8Array })
|
|
19
|
-
id: Uint8Array;
|
|
20
|
-
|
|
21
|
-
@field({ type: 'string' })
|
|
22
|
-
hash: string;
|
|
23
|
-
|
|
24
|
-
@field({ type: vec(ReplicationSegment) })
|
|
25
|
-
segments: ReplicationSegment[];
|
|
26
|
-
|
|
27
|
-
constructor(properties: { hash: string; segments: ReplicationSegment[] }) {
|
|
28
|
-
this.id = randomBytes(32);
|
|
29
|
-
this.hash = properties.hash;
|
|
30
|
-
this.segments = properties.segments;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
*/
|
|
34
21
|
|
|
35
22
|
export enum ReplicationIntent {
|
|
36
23
|
Explicit = 0,
|
|
@@ -280,7 +267,35 @@ export class RequestReplicationInfoMessage extends TransportMessage {
|
|
|
280
267
|
}
|
|
281
268
|
}
|
|
282
269
|
|
|
270
|
+
// @deprecated remove when possible
|
|
283
271
|
@variant([1, 1])
|
|
272
|
+
export class ResponseRoleMessage extends TransportMessage {
|
|
273
|
+
@field({ type: option(Role) })
|
|
274
|
+
role: Observer | Replicator;
|
|
275
|
+
|
|
276
|
+
constructor(properties: { role: Observer | Replicator }) {
|
|
277
|
+
super();
|
|
278
|
+
this.role = properties.role;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
toReplicationInfoMessage(): ResponseReplicationInfoMessage {
|
|
282
|
+
return new ResponseReplicationInfoMessage({
|
|
283
|
+
segments:
|
|
284
|
+
this.role instanceof Replicator
|
|
285
|
+
? this.role.segments.map((x) => {
|
|
286
|
+
return new ReplicationRange({
|
|
287
|
+
id: randomBytes(32),
|
|
288
|
+
offset: x.offset,
|
|
289
|
+
factor: x.factor,
|
|
290
|
+
timestamp: x.timestamp,
|
|
291
|
+
});
|
|
292
|
+
})
|
|
293
|
+
: [],
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@variant([1, 2])
|
|
284
299
|
export class ResponseReplicationInfoMessage extends TransportMessage {
|
|
285
300
|
@field({ type: vec(ReplicationRange) })
|
|
286
301
|
segments: ReplicationRange[];
|
|
@@ -291,7 +306,7 @@ export class ResponseReplicationInfoMessage extends TransportMessage {
|
|
|
291
306
|
}
|
|
292
307
|
}
|
|
293
308
|
|
|
294
|
-
@variant([1,
|
|
309
|
+
@variant([1, 3])
|
|
295
310
|
export class StartedReplicating extends TransportMessage {
|
|
296
311
|
@field({ type: vec(ReplicationRange) })
|
|
297
312
|
segments: ReplicationRange[];
|
|
@@ -302,7 +317,7 @@ export class StartedReplicating extends TransportMessage {
|
|
|
302
317
|
}
|
|
303
318
|
}
|
|
304
319
|
|
|
305
|
-
@variant([1,
|
|
320
|
+
@variant([1, 4])
|
|
306
321
|
export class StoppedReplicating extends TransportMessage {
|
|
307
322
|
@field({ type: vec(Uint8Array) })
|
|
308
323
|
segmentIds: Uint8Array[];
|