@peerbit/shared-log 4.1.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js +39 -28
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/pid.d.ts +11 -2
- package/lib/esm/pid.js +50 -28
- package/lib/esm/pid.js.map +1 -1
- package/lib/esm/replication.d.ts +0 -1
- package/lib/esm/replication.js.map +1 -1
- package/lib/esm/role.d.ts +5 -5
- package/lib/esm/role.js +6 -10
- package/lib/esm/role.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +58 -44
- package/src/pid.ts +57 -37
- package/src/replication.ts +0 -1
- package/src/role.ts +10 -16
package/lib/esm/index.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export type SharedLogOptions<T> = {
|
|
|
39
39
|
respondToIHaveTimeout?: number;
|
|
40
40
|
canReplicate?: (publicKey: PublicSignKey) => Promise<boolean> | boolean;
|
|
41
41
|
sync?: (entry: Entry<T>) => boolean;
|
|
42
|
+
timeUntilRoleMaturity?: number;
|
|
42
43
|
};
|
|
43
44
|
export declare const DEFAULT_MIN_REPLICAS = 2;
|
|
44
45
|
export declare const WAIT_FOR_REPLICATOR_TIMEOUT = 9000;
|
|
@@ -78,6 +79,7 @@ export declare class SharedLog<T = Uint8Array> extends Program<Args<T>, SharedLo
|
|
|
78
79
|
private sync?;
|
|
79
80
|
private rebalanceParticipationDebounced;
|
|
80
81
|
replicas: ReplicationLimits;
|
|
82
|
+
timeUntilRoleMaturity: number;
|
|
81
83
|
constructor(properties?: {
|
|
82
84
|
id?: Uint8Array;
|
|
83
85
|
});
|
|
@@ -145,5 +147,6 @@ export declare class SharedLog<T = Uint8Array> extends Program<Args<T>, SharedLo
|
|
|
145
147
|
}[];
|
|
146
148
|
addToHistory(usedMemory: number, factor: number): Promise<void>;
|
|
147
149
|
calculateTrend(): Promise<number>;
|
|
150
|
+
xxx: number;
|
|
148
151
|
rebalanceParticipation(onRoleChange?: boolean): Promise<boolean>;
|
|
149
152
|
}
|
package/lib/esm/index.js
CHANGED
|
@@ -57,7 +57,7 @@ const isAdaptiveReplicatorOption = (options) => {
|
|
|
57
57
|
export const DEFAULT_MIN_REPLICAS = 2;
|
|
58
58
|
export const WAIT_FOR_REPLICATOR_TIMEOUT = 9000;
|
|
59
59
|
export const WAIT_FOR_ROLE_MATURITY = 5000;
|
|
60
|
-
const
|
|
60
|
+
const REBALANCE_DEBOUNCE_INTERVAL = 100;
|
|
61
61
|
let SharedLog = class SharedLog extends Program {
|
|
62
62
|
log;
|
|
63
63
|
rpc;
|
|
@@ -82,6 +82,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
82
82
|
sync;
|
|
83
83
|
rebalanceParticipationDebounced;
|
|
84
84
|
replicas;
|
|
85
|
+
timeUntilRoleMaturity;
|
|
85
86
|
constructor(properties) {
|
|
86
87
|
super();
|
|
87
88
|
this.log = new Log(properties);
|
|
@@ -94,13 +95,12 @@ let SharedLog = class SharedLog extends Program {
|
|
|
94
95
|
return this._totalParticipation;
|
|
95
96
|
}
|
|
96
97
|
setupRebalanceDebounceFunction() {
|
|
97
|
-
this.rebalanceParticipationDebounced = debounce(() => this.rebalanceParticipation(), Math.max(
|
|
98
|
-
REBALANCE_DEBOUNCE_INTERAVAL));
|
|
98
|
+
this.rebalanceParticipationDebounced = debounce(() => this.rebalanceParticipation(), Math.max(REBALANCE_DEBOUNCE_INTERVAL, (this.getReplicatorsSorted()?.length || 0) * REBALANCE_DEBOUNCE_INTERVAL));
|
|
99
99
|
}
|
|
100
100
|
setupRole(options) {
|
|
101
101
|
this.rebalanceParticipationDebounced = undefined;
|
|
102
102
|
const setupDebouncedRebalancing = (options) => {
|
|
103
|
-
this.replicationController = new PIDReplicationController({
|
|
103
|
+
this.replicationController = new PIDReplicationController(this.node.identity.publicKey.hashcode(), {
|
|
104
104
|
targetMemoryLimit: options?.limits?.memory,
|
|
105
105
|
errorFunction: options?.error
|
|
106
106
|
});
|
|
@@ -123,7 +123,10 @@ let SharedLog = class SharedLog extends Program {
|
|
|
123
123
|
this._roleOptions = options;
|
|
124
124
|
}
|
|
125
125
|
else {
|
|
126
|
-
this._roleOptions = new Replicator({
|
|
126
|
+
this._roleOptions = new Replicator({
|
|
127
|
+
factor: options.factor,
|
|
128
|
+
offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
|
|
129
|
+
});
|
|
127
130
|
}
|
|
128
131
|
}
|
|
129
132
|
else {
|
|
@@ -144,12 +147,14 @@ let SharedLog = class SharedLog extends Program {
|
|
|
144
147
|
if (this._roleOptions.limits) {
|
|
145
148
|
this._role = new Replicator({
|
|
146
149
|
// initial role in a dynamic setup
|
|
147
|
-
factor: 1
|
|
150
|
+
factor: 1,
|
|
151
|
+
offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
|
|
148
152
|
});
|
|
149
153
|
}
|
|
150
154
|
else {
|
|
151
155
|
this._role = new Replicator({
|
|
152
|
-
factor: 1
|
|
156
|
+
factor: 1,
|
|
157
|
+
offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
|
|
153
158
|
});
|
|
154
159
|
}
|
|
155
160
|
}
|
|
@@ -220,6 +225,8 @@ let SharedLog = class SharedLog extends Program {
|
|
|
220
225
|
this._pendingIHave = new Map();
|
|
221
226
|
this.latestRoleMessages = new Map();
|
|
222
227
|
this.openTime = +new Date();
|
|
228
|
+
this.timeUntilRoleMaturity =
|
|
229
|
+
options?.timeUntilRoleMaturity || WAIT_FOR_ROLE_MATURITY;
|
|
223
230
|
this._gidParentCache = new Cache({ max: 1000 });
|
|
224
231
|
this._closeController = new AbortController();
|
|
225
232
|
this._canReplicate = options?.canReplicate;
|
|
@@ -243,9 +250,6 @@ let SharedLog = class SharedLog extends Program {
|
|
|
243
250
|
this._totalParticipation = 0;
|
|
244
251
|
this._sortedPeersCache = yallist.create();
|
|
245
252
|
this._gidPeersHistory = new Map();
|
|
246
|
-
await this.node.services.pubsub.addEventListener("subscribe", this._onSubscriptionFn);
|
|
247
|
-
this._onUnsubscriptionFn = this._onUnsubscription.bind(this);
|
|
248
|
-
await this.node.services.pubsub.addEventListener("unsubscribe", this._onUnsubscriptionFn);
|
|
249
253
|
const cache = await storage.sublevel("cache");
|
|
250
254
|
await this.log.open(this.remoteBlocks, this.node.identity, {
|
|
251
255
|
keychain: this.node.services.keychain,
|
|
@@ -299,6 +303,9 @@ let SharedLog = class SharedLog extends Program {
|
|
|
299
303
|
responseHandler: this._onMessage.bind(this),
|
|
300
304
|
topic: this.topic
|
|
301
305
|
});
|
|
306
|
+
await this.node.services.pubsub.addEventListener("subscribe", this._onSubscriptionFn);
|
|
307
|
+
this._onUnsubscriptionFn = this._onUnsubscription.bind(this);
|
|
308
|
+
await this.node.services.pubsub.addEventListener("unsubscribe", this._onUnsubscriptionFn);
|
|
302
309
|
await this.log.load();
|
|
303
310
|
}
|
|
304
311
|
async afterOpen() {
|
|
@@ -540,7 +547,6 @@ let SharedLog = class SharedLog extends Program {
|
|
|
540
547
|
timeout: WAIT_FOR_REPLICATOR_TIMEOUT
|
|
541
548
|
})
|
|
542
549
|
.then(async () => {
|
|
543
|
-
/* await delay(1000 * Math.random()) */
|
|
544
550
|
const prev = this.latestRoleMessages.get(context.from.hashcode());
|
|
545
551
|
if (prev && prev > context.timestamp) {
|
|
546
552
|
return;
|
|
@@ -653,7 +659,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
653
659
|
const startNode = currentNode;
|
|
654
660
|
const diffs = [];
|
|
655
661
|
while (currentNode && !done()) {
|
|
656
|
-
const start = currentNode.value.offset % width;
|
|
662
|
+
const start = currentNode.value.role.offset % width;
|
|
657
663
|
const absDelta = Math.abs(start - point());
|
|
658
664
|
const diff = Math.min(absDelta, width - absDelta);
|
|
659
665
|
if (diff < currentNode.value.role.factor / 2 + 0.00001) {
|
|
@@ -697,7 +703,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
697
703
|
numberOfLeaders = Math.min(numberOfLeaders, peers.length);
|
|
698
704
|
const t = +new Date();
|
|
699
705
|
const roleAge = options?.roleAge ??
|
|
700
|
-
Math.min(
|
|
706
|
+
Math.min(this.timeUntilRoleMaturity, +new Date() - this.openTime);
|
|
701
707
|
for (let i = 0; i < numberOfLeaders; i++) {
|
|
702
708
|
const point = ((cursor + i / numberOfLeaders) % 1) * width;
|
|
703
709
|
const currentNode = peers.head;
|
|
@@ -709,7 +715,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
709
715
|
*
|
|
710
716
|
* @returns groups where at least one in any group will have the entry you are looking for
|
|
711
717
|
*/
|
|
712
|
-
getReplicatorUnion(roleAge =
|
|
718
|
+
getReplicatorUnion(roleAge = this.timeUntilRoleMaturity) {
|
|
713
719
|
if (this.closed === true) {
|
|
714
720
|
throw new Error("Closed");
|
|
715
721
|
}
|
|
@@ -748,7 +754,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
748
754
|
if (!startNode) {
|
|
749
755
|
return [];
|
|
750
756
|
}
|
|
751
|
-
let nextPoint = startNode.value.offset;
|
|
757
|
+
let nextPoint = startNode.value.role.offset;
|
|
752
758
|
const t = +new Date();
|
|
753
759
|
this.collectNodesAroundPoint(t, roleAge, peers, walker, width, set, () => nextPoint, () => distance >= coveringWidth, (node) => {
|
|
754
760
|
distance += node.role.factor;
|
|
@@ -769,7 +775,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
769
775
|
this._closeController.signal.removeEventListener("abort", listener);
|
|
770
776
|
await this.rebalanceParticipationDebounced?.();
|
|
771
777
|
this.distribute();
|
|
772
|
-
},
|
|
778
|
+
}, this.timeUntilRoleMaturity + 2000);
|
|
773
779
|
const listener = () => {
|
|
774
780
|
clearTimeout(timer);
|
|
775
781
|
};
|
|
@@ -785,9 +791,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
785
791
|
if (update.changed === "added" || update.changed === "removed") {
|
|
786
792
|
this.setupRebalanceDebounceFunction();
|
|
787
793
|
}
|
|
788
|
-
|
|
789
|
-
await this.rebalanceParticipationDebounced?.(); /* await this.rebalanceParticipation(false); */
|
|
790
|
-
}
|
|
794
|
+
await this.rebalanceParticipationDebounced?.(); /* await this.rebalanceParticipation(false); */
|
|
791
795
|
if (update.changed === "added") {
|
|
792
796
|
await this.rpc.send(new ResponseRoleMessage({ role: this._role }), {
|
|
793
797
|
mode: new SeekDelivery({
|
|
@@ -823,10 +827,8 @@ let SharedLog = class SharedLog extends Program {
|
|
|
823
827
|
.catch(() => false));
|
|
824
828
|
if (isOnline) {
|
|
825
829
|
// insert or if already there do nothing
|
|
826
|
-
const code = hashToUniformNumber(publicKey.bytes);
|
|
827
830
|
const rect = {
|
|
828
831
|
publicKey,
|
|
829
|
-
offset: code,
|
|
830
832
|
role
|
|
831
833
|
};
|
|
832
834
|
let currentNode = sortedPeer.head;
|
|
@@ -847,7 +849,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
847
849
|
// TODO change detection and only do change stuff if diff?
|
|
848
850
|
return { prev: prev.role, changed: "updated" };
|
|
849
851
|
}
|
|
850
|
-
if (
|
|
852
|
+
if (role.offset > currentNode.value.role.offset) {
|
|
851
853
|
const next = currentNode?.next;
|
|
852
854
|
if (next) {
|
|
853
855
|
currentNode = next;
|
|
@@ -1018,7 +1020,7 @@ let SharedLog = class SharedLog extends Program {
|
|
|
1018
1020
|
_queue;
|
|
1019
1021
|
async distribute() {
|
|
1020
1022
|
if (this._queue?.size > 0) {
|
|
1021
|
-
return;
|
|
1023
|
+
return this._queue.onEmpty();
|
|
1022
1024
|
}
|
|
1023
1025
|
(this._queue || (this._queue = new PQueue({ concurrency: 1 }))).add(() => this._distribute());
|
|
1024
1026
|
}
|
|
@@ -1140,9 +1142,13 @@ let SharedLog = class SharedLog extends Program {
|
|
|
1140
1142
|
return (factorChanges.reduce((sum, change) => sum + change, 0) /
|
|
1141
1143
|
factorChanges.length);
|
|
1142
1144
|
}
|
|
1145
|
+
xxx;
|
|
1143
1146
|
async rebalanceParticipation(onRoleChange = true) {
|
|
1144
1147
|
// update more participation rate to converge to the average expected rate or bounded by
|
|
1145
1148
|
// resources such as memory and or cpu
|
|
1149
|
+
const t = +new Date();
|
|
1150
|
+
// console.log(t - this.xxx)
|
|
1151
|
+
this.xxx = t;
|
|
1146
1152
|
if (this.closed) {
|
|
1147
1153
|
return false;
|
|
1148
1154
|
}
|
|
@@ -1156,20 +1162,25 @@ let SharedLog = class SharedLog extends Program {
|
|
|
1156
1162
|
const peers = this.getReplicatorsSorted();
|
|
1157
1163
|
const usedMemory = await this.getMemoryUsage();
|
|
1158
1164
|
const newFactor = await this.replicationController.adjustReplicationFactor(usedMemory, this._role.factor, this._totalParticipation, peers?.length || 1);
|
|
1159
|
-
const
|
|
1160
|
-
factor: newFactor,
|
|
1161
|
-
timestamp: this._role.timestamp
|
|
1162
|
-
});
|
|
1163
|
-
const relativeDifference = Math.abs(this._role.factor - newRole.factor) / this._role.factor;
|
|
1165
|
+
const relativeDifference = Math.abs(this._role.factor - newFactor) / this._role.factor;
|
|
1164
1166
|
if (relativeDifference > 0.0001) {
|
|
1167
|
+
const newRole = new Replicator({
|
|
1168
|
+
factor: newFactor,
|
|
1169
|
+
timestamp: this._role.timestamp,
|
|
1170
|
+
offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
|
|
1171
|
+
});
|
|
1165
1172
|
const canReplicate = !this._canReplicate ||
|
|
1166
1173
|
(await this._canReplicate(this.node.identity.publicKey, newRole));
|
|
1167
1174
|
if (!canReplicate) {
|
|
1168
1175
|
return false;
|
|
1169
1176
|
}
|
|
1170
1177
|
await this._updateRole(newRole, onRoleChange);
|
|
1178
|
+
this.rebalanceParticipationDebounced?.();
|
|
1171
1179
|
return true;
|
|
1172
1180
|
}
|
|
1181
|
+
else {
|
|
1182
|
+
this.rebalanceParticipationDebounced?.();
|
|
1183
|
+
}
|
|
1173
1184
|
return false;
|
|
1174
1185
|
}
|
|
1175
1186
|
return false;
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/pid.d.ts
CHANGED
|
@@ -4,22 +4,31 @@ export type ReplicationErrorFunction = (objectives: {
|
|
|
4
4
|
memory: number;
|
|
5
5
|
}) => number;
|
|
6
6
|
export declare class PIDReplicationController {
|
|
7
|
+
readonly id: string;
|
|
7
8
|
integral: number;
|
|
8
9
|
prevError: number;
|
|
9
10
|
prevMemoryUsage: number;
|
|
10
|
-
|
|
11
|
+
prevTotalFactor: number;
|
|
11
12
|
kp: number;
|
|
12
13
|
ki: number;
|
|
13
14
|
kd: number;
|
|
14
15
|
errorFunction: ReplicationErrorFunction;
|
|
15
16
|
targetMemoryLimit?: number;
|
|
16
|
-
constructor(options?: {
|
|
17
|
+
constructor(id: string, options?: {
|
|
17
18
|
errorFunction?: ReplicationErrorFunction;
|
|
18
19
|
targetMemoryLimit?: number;
|
|
19
20
|
kp?: number;
|
|
20
21
|
ki?: number;
|
|
21
22
|
kd?: number;
|
|
22
23
|
});
|
|
24
|
+
/**
|
|
25
|
+
* Call this function on a period interval since it does not track time passed
|
|
26
|
+
* @param memoryUsage
|
|
27
|
+
* @param currentFactor
|
|
28
|
+
* @param totalFactor
|
|
29
|
+
* @param peerCount
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
23
32
|
adjustReplicationFactor(memoryUsage: number, currentFactor: number, totalFactor: number, peerCount: number): Promise<number>;
|
|
24
33
|
reset(): void;
|
|
25
34
|
}
|
package/lib/esm/pid.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
export class PIDReplicationController {
|
|
2
|
+
id;
|
|
2
3
|
integral;
|
|
3
4
|
prevError;
|
|
4
5
|
prevMemoryUsage;
|
|
5
|
-
|
|
6
|
+
prevTotalFactor;
|
|
6
7
|
kp;
|
|
7
8
|
ki;
|
|
8
9
|
kd;
|
|
9
10
|
errorFunction;
|
|
10
11
|
targetMemoryLimit;
|
|
11
|
-
constructor(options = {}) {
|
|
12
|
-
|
|
12
|
+
constructor(id, options = {}) {
|
|
13
|
+
this.id = id;
|
|
14
|
+
const { targetMemoryLimit, kp = 0.7, ki = 0.025, kd = 0.05, errorFunction = ({ balance, coverage, memory }) => {
|
|
15
|
+
return memory < 0
|
|
16
|
+
? memory * 0.9 + balance * 0.06 + coverage * 0.04
|
|
17
|
+
: balance * 0.6 + coverage * 0.4;
|
|
18
|
+
} } = options;
|
|
13
19
|
this.reset();
|
|
14
20
|
this.kp = kp;
|
|
15
21
|
this.ki = ki;
|
|
@@ -17,41 +23,48 @@ export class PIDReplicationController {
|
|
|
17
23
|
this.targetMemoryLimit = targetMemoryLimit;
|
|
18
24
|
this.errorFunction = errorFunction;
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Call this function on a period interval since it does not track time passed
|
|
28
|
+
* @param memoryUsage
|
|
29
|
+
* @param currentFactor
|
|
30
|
+
* @param totalFactor
|
|
31
|
+
* @param peerCount
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
20
34
|
async adjustReplicationFactor(memoryUsage, currentFactor, totalFactor, peerCount) {
|
|
35
|
+
const totalFactorDiff = totalFactor - this.prevTotalFactor;
|
|
36
|
+
this.prevTotalFactor = totalFactor;
|
|
21
37
|
this.prevMemoryUsage = memoryUsage;
|
|
22
38
|
const estimatedTotalSize = memoryUsage / currentFactor;
|
|
23
39
|
let errorMemory = 0;
|
|
24
|
-
const errorTarget = 1 / peerCount - currentFactor;
|
|
25
40
|
if (this.targetMemoryLimit != null) {
|
|
26
41
|
errorMemory =
|
|
27
42
|
currentFactor > 0 && memoryUsage > 0
|
|
28
43
|
? Math.max(Math.min(1, this.targetMemoryLimit / estimatedTotalSize), 0) - currentFactor
|
|
29
|
-
: 0
|
|
44
|
+
: 0;
|
|
30
45
|
}
|
|
31
46
|
const errorCoverageUnmodified = Math.min(1 - totalFactor, 1);
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
const errorCoverage = (this.targetMemoryLimit ? 1 - Math.sqrt(Math.abs(errorMemory)) : 1) *
|
|
48
|
+
errorCoverageUnmodified;
|
|
49
|
+
const errorFromEven = 1 / peerCount - currentFactor;
|
|
50
|
+
const balanceErrorScaler = this.targetMemoryLimit
|
|
51
|
+
? Math.abs(errorMemory)
|
|
52
|
+
: 1 - Math.abs(errorCoverage);
|
|
53
|
+
const errorBalance = (this.targetMemoryLimit ? errorMemory > -0.01 : true)
|
|
54
|
+
? errorFromEven > 0
|
|
55
|
+
? balanceErrorScaler * errorFromEven
|
|
56
|
+
: 0
|
|
57
|
+
: 0;
|
|
58
|
+
const totalError = this.errorFunction({
|
|
59
|
+
balance: errorBalance,
|
|
36
60
|
coverage: errorCoverage,
|
|
37
61
|
memory: errorMemory
|
|
38
62
|
});
|
|
39
|
-
|
|
40
|
-
totalError = this.errorFunction({
|
|
41
|
-
balance: errorTarget,
|
|
42
|
-
coverage: errorCoverageUnmodified,
|
|
43
|
-
memory: errorMemory
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
if (this.lastTs === 0) {
|
|
47
|
-
this.lastTs = +new Date();
|
|
48
|
-
}
|
|
49
|
-
const kpAdjusted = Math.min(Math.max(this.kp, (+new Date() - this.lastTs) / 100), 0.8);
|
|
50
|
-
const pTerm = kpAdjusted * totalError;
|
|
51
|
-
this.lastTs = +new Date();
|
|
63
|
+
const pTerm = this.kp * totalError;
|
|
52
64
|
// Integral term
|
|
53
65
|
this.integral += totalError;
|
|
54
|
-
|
|
66
|
+
// Beta controls how much of the accumulated error we should forget
|
|
67
|
+
const beta = 0.8;
|
|
55
68
|
this.integral = beta * totalError + (1 - beta) * this.integral;
|
|
56
69
|
const iTerm = this.ki * this.integral;
|
|
57
70
|
// Derivative term
|
|
@@ -65,19 +78,29 @@ export class PIDReplicationController {
|
|
|
65
78
|
if (newFactor < 0 || newFactor > 1) {
|
|
66
79
|
this.integral = 0;
|
|
67
80
|
}
|
|
81
|
+
// prevent drift when everone wants to do less
|
|
82
|
+
/* if (newFactor < currentFactor && totalFactorDiff < 0 && totalFactor < 0.5) {
|
|
83
|
+
newFactor = currentFactor;
|
|
84
|
+
this.integral = 0;
|
|
85
|
+
}
|
|
86
|
+
*/
|
|
68
87
|
/* console.log({
|
|
69
|
-
|
|
88
|
+
id: this.id,
|
|
70
89
|
currentFactor,
|
|
90
|
+
newFactor,
|
|
91
|
+
factorDiff: newFactor - currentFactor,
|
|
71
92
|
pTerm,
|
|
72
93
|
dTerm,
|
|
73
94
|
iTerm,
|
|
74
|
-
kpAdjusted,
|
|
75
95
|
totalError,
|
|
76
|
-
errorTarget,
|
|
96
|
+
errorTarget: errorBalance,
|
|
77
97
|
errorCoverage,
|
|
78
98
|
errorMemory,
|
|
79
99
|
peerCount,
|
|
80
|
-
totalFactor
|
|
100
|
+
totalFactor,
|
|
101
|
+
totalFactorDiff,
|
|
102
|
+
targetScaler: balanceErrorScaler,
|
|
103
|
+
estimatedTotalSize
|
|
81
104
|
}); */
|
|
82
105
|
return Math.max(Math.min(newFactor, 1), 0);
|
|
83
106
|
}
|
|
@@ -85,7 +108,6 @@ export class PIDReplicationController {
|
|
|
85
108
|
this.prevError = 0;
|
|
86
109
|
this.integral = 0;
|
|
87
110
|
this.prevMemoryUsage = 0;
|
|
88
|
-
this.lastTs = 0;
|
|
89
111
|
}
|
|
90
112
|
}
|
|
91
113
|
//# sourceMappingURL=pid.js.map
|