@peerbit/shared-log 4.0.11 → 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.
@@ -33,18 +33,21 @@ type ObserverType = {
33
33
  type: "observer";
34
34
  };
35
35
  export type RoleOptions = StringRoleOptions | ObserverType | FixedReplicatorOptions | AdaptiveReplicatorOptions;
36
- export type SharedLogOptions = {
36
+ export type SharedLogOptions<T> = {
37
37
  role?: RoleOptions;
38
38
  replicas?: ReplicationLimitsOptions;
39
39
  respondToIHaveTimeout?: number;
40
40
  canReplicate?: (publicKey: PublicSignKey) => Promise<boolean> | boolean;
41
+ sync?: (entry: Entry<T>) => boolean;
42
+ timeUntilRoleMaturity?: number;
41
43
  };
42
44
  export declare const DEFAULT_MIN_REPLICAS = 2;
43
45
  export declare const WAIT_FOR_REPLICATOR_TIMEOUT = 9000;
44
46
  export declare const WAIT_FOR_ROLE_MATURITY = 5000;
45
- export type Args<T> = LogProperties<T> & LogEvents<T> & SharedLogOptions;
47
+ export type Args<T> = LogProperties<T> & LogEvents<T> & SharedLogOptions<T>;
46
48
  export type SharedAppendOptions<T> = AppendOptions<T> & {
47
49
  replicas?: AbsoluteReplicas | number;
50
+ target?: "all" | "replicators";
48
51
  };
49
52
  type UpdateRoleEvent = {
50
53
  publicKey: PublicSignKey;
@@ -73,8 +76,10 @@ export declare class SharedLog<T = Uint8Array> extends Program<Args<T>, SharedLo
73
76
  private latestRoleMessages;
74
77
  private remoteBlocks;
75
78
  private openTime;
79
+ private sync?;
76
80
  private rebalanceParticipationDebounced;
77
81
  replicas: ReplicationLimits;
82
+ timeUntilRoleMaturity: number;
78
83
  constructor(properties?: {
79
84
  id?: Uint8Array;
80
85
  });
@@ -142,5 +147,6 @@ export declare class SharedLog<T = Uint8Array> extends Program<Args<T>, SharedLo
142
147
  }[];
143
148
  addToHistory(usedMemory: number, factor: number): Promise<void>;
144
149
  calculateTrend(): Promise<number>;
150
+ xxx: number;
145
151
  rebalanceParticipation(onRoleChange?: boolean): Promise<boolean>;
146
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 REBALANCE_DEBOUNCE_INTERAVAL = 30;
60
+ const REBALANCE_DEBOUNCE_INTERVAL = 100;
61
61
  let SharedLog = class SharedLog extends Program {
62
62
  log;
63
63
  rpc;
@@ -79,8 +79,10 @@ let SharedLog = class SharedLog extends Program {
79
79
  latestRoleMessages;
80
80
  remoteBlocks;
81
81
  openTime;
82
+ sync;
82
83
  rebalanceParticipationDebounced;
83
84
  replicas;
85
+ timeUntilRoleMaturity;
84
86
  constructor(properties) {
85
87
  super();
86
88
  this.log = new Log(properties);
@@ -93,13 +95,12 @@ let SharedLog = class SharedLog extends Program {
93
95
  return this._totalParticipation;
94
96
  }
95
97
  setupRebalanceDebounceFunction() {
96
- this.rebalanceParticipationDebounced = debounce(() => this.rebalanceParticipation(), Math.max(REBALANCE_DEBOUNCE_INTERAVAL, (this.getReplicatorsSorted()?.length || 0) *
97
- REBALANCE_DEBOUNCE_INTERAVAL));
98
+ this.rebalanceParticipationDebounced = debounce(() => this.rebalanceParticipation(), Math.max(REBALANCE_DEBOUNCE_INTERVAL, (this.getReplicatorsSorted()?.length || 0) * REBALANCE_DEBOUNCE_INTERVAL));
98
99
  }
99
100
  setupRole(options) {
100
101
  this.rebalanceParticipationDebounced = undefined;
101
102
  const setupDebouncedRebalancing = (options) => {
102
- this.replicationController = new PIDReplicationController({
103
+ this.replicationController = new PIDReplicationController(this.node.identity.publicKey.hashcode(), {
103
104
  targetMemoryLimit: options?.limits?.memory,
104
105
  errorFunction: options?.error
105
106
  });
@@ -122,7 +123,10 @@ let SharedLog = class SharedLog extends Program {
122
123
  this._roleOptions = options;
123
124
  }
124
125
  else {
125
- this._roleOptions = new Replicator({ factor: options.factor });
126
+ this._roleOptions = new Replicator({
127
+ factor: options.factor,
128
+ offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
129
+ });
126
130
  }
127
131
  }
128
132
  else {
@@ -143,12 +147,14 @@ let SharedLog = class SharedLog extends Program {
143
147
  if (this._roleOptions.limits) {
144
148
  this._role = new Replicator({
145
149
  // initial role in a dynamic setup
146
- factor: 1
150
+ factor: 1,
151
+ offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
147
152
  });
148
153
  }
149
154
  else {
150
155
  this._role = new Replicator({
151
- factor: 1
156
+ factor: 1,
157
+ offset: hashToUniformNumber(this.node.identity.publicKey.bytes)
152
158
  });
153
159
  }
154
160
  }
@@ -187,12 +193,16 @@ let SharedLog = class SharedLog extends Program {
187
193
  appendOptions.meta.data = minReplicasData;
188
194
  }
189
195
  const result = await this.log.append(data, appendOptions);
190
- const leaders = await this.findLeaders(result.entry.meta.gid, decodeReplicas(result.entry).getValue(this));
191
- const isLeader = leaders.includes(this.node.identity.publicKey.hashcode());
192
- await this.rpc.send(await createExchangeHeadsMessage(this.log, [result.entry], this._gidParentCache), {
193
- mode: isLeader
196
+ let mode = undefined;
197
+ if (options?.target === "replicators" || !options?.target) {
198
+ const leaders = await this.findLeaders(result.entry.meta.gid, decodeReplicas(result.entry).getValue(this));
199
+ const isLeader = leaders.includes(this.node.identity.publicKey.hashcode());
200
+ mode = isLeader
194
201
  ? new SilentDelivery({ redundancy: 1, to: leaders })
195
- : new AcknowledgeDelivery({ redundancy: 1, to: leaders })
202
+ : new AcknowledgeDelivery({ redundancy: 1, to: leaders });
203
+ }
204
+ await this.rpc.send(await createExchangeHeadsMessage(this.log, [result.entry], this._gidParentCache), {
205
+ mode
196
206
  });
197
207
  this.rebalanceParticipationDebounced?.();
198
208
  return result;
@@ -215,9 +225,12 @@ let SharedLog = class SharedLog extends Program {
215
225
  this._pendingIHave = new Map();
216
226
  this.latestRoleMessages = new Map();
217
227
  this.openTime = +new Date();
228
+ this.timeUntilRoleMaturity =
229
+ options?.timeUntilRoleMaturity || WAIT_FOR_ROLE_MATURITY;
218
230
  this._gidParentCache = new Cache({ max: 1000 });
219
231
  this._closeController = new AbortController();
220
232
  this._canReplicate = options?.canReplicate;
233
+ this.sync = options?.sync;
221
234
  this._logProperties = options;
222
235
  this.setupRole(options?.role);
223
236
  const id = sha256Base64Sync(this.log.id);
@@ -237,9 +250,6 @@ let SharedLog = class SharedLog extends Program {
237
250
  this._totalParticipation = 0;
238
251
  this._sortedPeersCache = yallist.create();
239
252
  this._gidPeersHistory = new Map();
240
- await this.node.services.pubsub.addEventListener("subscribe", this._onSubscriptionFn);
241
- this._onUnsubscriptionFn = this._onUnsubscription.bind(this);
242
- await this.node.services.pubsub.addEventListener("unsubscribe", this._onUnsubscriptionFn);
243
253
  const cache = await storage.sublevel("cache");
244
254
  await this.log.open(this.remoteBlocks, this.node.identity, {
245
255
  keychain: this.node.services.keychain,
@@ -293,6 +303,9 @@ let SharedLog = class SharedLog extends Program {
293
303
  responseHandler: this._onMessage.bind(this),
294
304
  topic: this.topic
295
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);
296
309
  await this.log.load();
297
310
  }
298
311
  async afterOpen() {
@@ -385,7 +398,6 @@ let SharedLog = class SharedLog extends Program {
385
398
  let maybeDelete = undefined;
386
399
  const groupedByGid = await groupByGid(filteredHeads);
387
400
  const promises = [];
388
- /// console.log("ADD CACHE", this.node.identity.publicKey.hashcode(), context.from!.hashcode(), groupedByGid.size)
389
401
  for (const [gid, entries] of groupedByGid) {
390
402
  const fn = async () => {
391
403
  const headsWithGid = this.log.headsIndex.gids.get(gid);
@@ -393,7 +405,9 @@ let SharedLog = class SharedLog extends Program {
393
405
  ? maxReplicas(this, [...headsWithGid.values()])
394
406
  : this.replicas.min.getValue(this);
395
407
  const maxReplicasFromNewEntries = maxReplicas(this, entries.map((x) => x.entry));
396
- const leaders = await this.waitForIsLeader(gid, Math.max(maxReplicasFromHead, maxReplicasFromNewEntries));
408
+ const leaders = await (this.role instanceof Observer
409
+ ? this.findLeaders(gid, Math.max(maxReplicasFromHead, maxReplicasFromNewEntries))
410
+ : this.waitForIsLeader(gid, Math.max(maxReplicasFromHead, maxReplicasFromNewEntries)));
397
411
  const isLeader = !!leaders;
398
412
  if (isLeader) {
399
413
  if (leaders.find((x) => x === context.from.hashcode())) {
@@ -409,7 +423,7 @@ let SharedLog = class SharedLog extends Program {
409
423
  }
410
424
  }
411
425
  outer: for (const entry of entries) {
412
- if (isLeader) {
426
+ if (isLeader || this.sync?.(entry.entry)) {
413
427
  toMerge.push(entry);
414
428
  }
415
429
  else {
@@ -533,7 +547,6 @@ let SharedLog = class SharedLog extends Program {
533
547
  timeout: WAIT_FOR_REPLICATOR_TIMEOUT
534
548
  })
535
549
  .then(async () => {
536
- /* await delay(1000 * Math.random()) */
537
550
  const prev = this.latestRoleMessages.get(context.from.hashcode());
538
551
  if (prev && prev > context.timestamp) {
539
552
  return;
@@ -646,7 +659,7 @@ let SharedLog = class SharedLog extends Program {
646
659
  const startNode = currentNode;
647
660
  const diffs = [];
648
661
  while (currentNode && !done()) {
649
- const start = currentNode.value.offset % width;
662
+ const start = currentNode.value.role.offset % width;
650
663
  const absDelta = Math.abs(start - point());
651
664
  const diff = Math.min(absDelta, width - absDelta);
652
665
  if (diff < currentNode.value.role.factor / 2 + 0.00001) {
@@ -690,7 +703,7 @@ let SharedLog = class SharedLog extends Program {
690
703
  numberOfLeaders = Math.min(numberOfLeaders, peers.length);
691
704
  const t = +new Date();
692
705
  const roleAge = options?.roleAge ??
693
- Math.min(WAIT_FOR_ROLE_MATURITY, +new Date() - this.openTime);
706
+ Math.min(this.timeUntilRoleMaturity, +new Date() - this.openTime);
694
707
  for (let i = 0; i < numberOfLeaders; i++) {
695
708
  const point = ((cursor + i / numberOfLeaders) % 1) * width;
696
709
  const currentNode = peers.head;
@@ -702,7 +715,7 @@ let SharedLog = class SharedLog extends Program {
702
715
  *
703
716
  * @returns groups where at least one in any group will have the entry you are looking for
704
717
  */
705
- getReplicatorUnion(roleAge = WAIT_FOR_ROLE_MATURITY) {
718
+ getReplicatorUnion(roleAge = this.timeUntilRoleMaturity) {
706
719
  if (this.closed === true) {
707
720
  throw new Error("Closed");
708
721
  }
@@ -741,7 +754,7 @@ let SharedLog = class SharedLog extends Program {
741
754
  if (!startNode) {
742
755
  return [];
743
756
  }
744
- let nextPoint = startNode.value.offset;
757
+ let nextPoint = startNode.value.role.offset;
745
758
  const t = +new Date();
746
759
  this.collectNodesAroundPoint(t, roleAge, peers, walker, width, set, () => nextPoint, () => distance >= coveringWidth, (node) => {
747
760
  distance += node.role.factor;
@@ -762,7 +775,7 @@ let SharedLog = class SharedLog extends Program {
762
775
  this._closeController.signal.removeEventListener("abort", listener);
763
776
  await this.rebalanceParticipationDebounced?.();
764
777
  this.distribute();
765
- }, WAIT_FOR_ROLE_MATURITY + 2000);
778
+ }, this.timeUntilRoleMaturity + 2000);
766
779
  const listener = () => {
767
780
  clearTimeout(timer);
768
781
  };
@@ -778,9 +791,7 @@ let SharedLog = class SharedLog extends Program {
778
791
  if (update.changed === "added" || update.changed === "removed") {
779
792
  this.setupRebalanceDebounceFunction();
780
793
  }
781
- if (this.rebalanceParticipationDebounced) {
782
- await this.rebalanceParticipationDebounced?.(); /* await this.rebalanceParticipation(false); */
783
- }
794
+ await this.rebalanceParticipationDebounced?.(); /* await this.rebalanceParticipation(false); */
784
795
  if (update.changed === "added") {
785
796
  await this.rpc.send(new ResponseRoleMessage({ role: this._role }), {
786
797
  mode: new SeekDelivery({
@@ -816,10 +827,8 @@ let SharedLog = class SharedLog extends Program {
816
827
  .catch(() => false));
817
828
  if (isOnline) {
818
829
  // insert or if already there do nothing
819
- const code = hashToUniformNumber(publicKey.bytes);
820
830
  const rect = {
821
831
  publicKey,
822
- offset: code,
823
832
  role
824
833
  };
825
834
  let currentNode = sortedPeer.head;
@@ -840,7 +849,7 @@ let SharedLog = class SharedLog extends Program {
840
849
  // TODO change detection and only do change stuff if diff?
841
850
  return { prev: prev.role, changed: "updated" };
842
851
  }
843
- if (code > currentNode.value.offset) {
852
+ if (role.offset > currentNode.value.role.offset) {
844
853
  const next = currentNode?.next;
845
854
  if (next) {
846
855
  currentNode = next;
@@ -884,28 +893,27 @@ let SharedLog = class SharedLog extends Program {
884
893
  }
885
894
  }
886
895
  async handleSubscriptionChange(publicKey, changes, subscribed) {
896
+ for (const topic of changes) {
897
+ if (this.log.idString !== topic) {
898
+ continue;
899
+ }
900
+ }
901
+ if (!subscribed) {
902
+ for (const [_a, b] of this._gidPeersHistory) {
903
+ b.delete(publicKey.hashcode());
904
+ }
905
+ }
887
906
  if (subscribed) {
888
907
  if (this.role instanceof Replicator) {
889
- for (const subscription of changes) {
890
- if (this.log.idString !== subscription) {
891
- continue;
892
- }
893
- this.rpc
894
- .send(new ResponseRoleMessage({ role: this._role }), {
895
- mode: new SeekDelivery({ redundancy: 1, to: [publicKey] })
896
- })
897
- .catch((e) => logger.error(e.toString()));
898
- }
908
+ this.rpc
909
+ .send(new ResponseRoleMessage({ role: this._role }), {
910
+ mode: new SeekDelivery({ redundancy: 1, to: [publicKey] })
911
+ })
912
+ .catch((e) => logger.error(e.toString()));
899
913
  }
900
- //if(evt.detail.subscriptions.map((x) => x.topic).includes())
901
914
  }
902
915
  else {
903
- for (const topic of changes) {
904
- if (this.log.idString !== topic) {
905
- continue;
906
- }
907
- await this.modifyReplicators(new Observer(), publicKey);
908
- }
916
+ await this.modifyReplicators(new Observer(), publicKey);
909
917
  }
910
918
  }
911
919
  prune(entries, options) {
@@ -1012,7 +1020,7 @@ let SharedLog = class SharedLog extends Program {
1012
1020
  _queue;
1013
1021
  async distribute() {
1014
1022
  if (this._queue?.size > 0) {
1015
- return;
1023
+ return this._queue.onEmpty();
1016
1024
  }
1017
1025
  (this._queue || (this._queue = new PQueue({ concurrency: 1 }))).add(() => this._distribute());
1018
1026
  }
@@ -1078,7 +1086,6 @@ let SharedLog = class SharedLog extends Program {
1078
1086
  }
1079
1087
  }
1080
1088
  for (const [target, entries] of uncheckedDeliver) {
1081
- const promise = Promise.resolve();
1082
1089
  // TODO better choice of step size
1083
1090
  for (let i = 0; i < entries.length; i += 100) {
1084
1091
  const message = await createExchangeHeadsMessage(this.log, entries.slice(i, i + 100), this._gidParentCache);
@@ -1135,9 +1142,13 @@ let SharedLog = class SharedLog extends Program {
1135
1142
  return (factorChanges.reduce((sum, change) => sum + change, 0) /
1136
1143
  factorChanges.length);
1137
1144
  }
1145
+ xxx;
1138
1146
  async rebalanceParticipation(onRoleChange = true) {
1139
1147
  // update more participation rate to converge to the average expected rate or bounded by
1140
1148
  // resources such as memory and or cpu
1149
+ const t = +new Date();
1150
+ // console.log(t - this.xxx)
1151
+ this.xxx = t;
1141
1152
  if (this.closed) {
1142
1153
  return false;
1143
1154
  }
@@ -1151,20 +1162,25 @@ let SharedLog = class SharedLog extends Program {
1151
1162
  const peers = this.getReplicatorsSorted();
1152
1163
  const usedMemory = await this.getMemoryUsage();
1153
1164
  const newFactor = await this.replicationController.adjustReplicationFactor(usedMemory, this._role.factor, this._totalParticipation, peers?.length || 1);
1154
- const newRole = new Replicator({
1155
- factor: newFactor,
1156
- timestamp: this._role.timestamp
1157
- });
1158
- const relativeDifference = Math.abs(this._role.factor - newRole.factor) / this._role.factor;
1165
+ const relativeDifference = Math.abs(this._role.factor - newFactor) / this._role.factor;
1159
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
+ });
1160
1172
  const canReplicate = !this._canReplicate ||
1161
1173
  (await this._canReplicate(this.node.identity.publicKey, newRole));
1162
1174
  if (!canReplicate) {
1163
1175
  return false;
1164
1176
  }
1165
1177
  await this._updateRole(newRole, onRoleChange);
1178
+ this.rebalanceParticipationDebounced?.();
1166
1179
  return true;
1167
1180
  }
1181
+ else {
1182
+ this.rebalanceParticipationDebounced?.();
1183
+ }
1168
1184
  return false;
1169
1185
  }
1170
1186
  return false;
@@ -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
- lastTs: number;
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
  }