cojson 0.13.0 → 0.13.5

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > cojson@0.13.0 build /home/runner/_work/jazz/jazz/packages/cojson
2
+ > cojson@0.13.5 build /home/runner/_work/jazz/jazz/packages/cojson
3
3
  > rm -rf ./dist && tsc --sourceMap --outDir dist
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # cojson
2
2
 
3
+ ## 0.13.5
4
+
5
+ ### Patch Changes
6
+
7
+ - e090b39: Bump crypto version to remove WASM init warning
8
+
9
+ ## 0.13.2
10
+
11
+ ### Patch Changes
12
+
13
+ - c551839: Add jazz.messagequeue.pushed/pulled counters, remove jazz.messagequeue.size gauge
14
+
3
15
  ## 0.13.0
4
16
 
5
17
  ### Minor Changes
@@ -4,6 +4,7 @@ import { RawCoID } from "./ids.js";
4
4
  import { Peer, SyncMessage } from "./sync.js";
5
5
  export declare class PeerState {
6
6
  private peer;
7
+ private queue;
7
8
  constructor(peer: Peer, knownStates: PeerKnownStates | undefined);
8
9
  /**
9
10
  * Here we to collect all the known states that a given peer has told us about.
@@ -28,13 +29,6 @@ export declare class PeerState {
28
29
  get crashOnClose(): boolean;
29
30
  shouldRetryUnavailableCoValues(): boolean;
30
31
  isServerOrStoragePeer(): boolean;
31
- /**
32
- * We set as default priority HIGH to handle all the messages without a
33
- * priority property as HIGH priority.
34
- *
35
- * This way we consider all the non-content messsages as HIGH priority.
36
- */
37
- private queue;
38
32
  private processing;
39
33
  closed: boolean;
40
34
  processQueue(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAS;IAElB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,eAAe,GAAG,SAAS;IAa1C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAElD,qBAAqB,CAAC,MAAM,EAAE,qBAAqB;IAQnD,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAa;IAE5E,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,6CAEP;IAED,IAAI,QAAQ,uBAEX;IAED,IAAI,YAAY,YAEf;IAED,8BAA8B;IAI9B,qBAAqB;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,UAAU,CAAS;IACpB,MAAM,UAAS;IAEhB,YAAY;IAqBlB,mBAAmB,CAAC,GAAG,EAAE,WAAW;IAYpC,IAAI,QAAQ,2CAQX;IAED,OAAO,CAAC,UAAU;IAQlB,gBAAgB;CASjB"}
1
+ {"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAS;IAIlB,OAAO,CAAC,IAAI;IAHd,OAAO,CAAC,KAAK,CAA4B;gBAG/B,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,eAAe,GAAG,SAAS;IAsB1C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAElD,qBAAqB,CAAC,MAAM,EAAE,qBAAqB;IAQnD,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAa;IAE5E,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,6CAEP;IAED,IAAI,QAAQ,uBAEX;IAED,IAAI,YAAY,YAEf;IAED,8BAA8B;IAI9B,qBAAqB;IAIrB,OAAO,CAAC,UAAU,CAAS;IACpB,MAAM,UAAS;IAEhB,YAAY;IAqBlB,mBAAmB,CAAC,GAAG,EAAE,WAAW;IAYpC,IAAI,QAAQ,2CAQX;IAED,OAAO,CAAC,UAAU;IAQlB,gBAAgB;CASjB"}
package/dist/PeerState.js CHANGED
@@ -7,15 +7,17 @@ export class PeerState {
7
7
  this.peer = peer;
8
8
  this.toldKnownState = new Set();
9
9
  this.erroredCoValues = new Map();
10
+ this.processing = false;
11
+ this.closed = false;
10
12
  /**
11
13
  * We set as default priority HIGH to handle all the messages without a
12
14
  * priority property as HIGH priority.
13
15
  *
14
16
  * This way we consider all the non-content messsages as HIGH priority.
15
17
  */
16
- this.queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.HIGH);
17
- this.processing = false;
18
- this.closed = false;
18
+ this.queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.HIGH, {
19
+ peerRole: peer.role,
20
+ });
19
21
  this.optimisticKnownStates = knownStates?.clone() ?? new PeerKnownStates();
20
22
  // We assume that exchanges with storage peers are always successful
21
23
  // hence we don't need to differentiate between knownStates and optimisticKnownStates
@@ -1 +1 @@
1
- {"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PeerState.js","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CoValuePriority } from "./priority.js";
1
+ import { type CoValuePriority } from "./priority.js";
2
2
  import type { SyncMessage } from "./sync.js";
3
3
  export type QueueEntry = {
4
4
  msg: SyncMessage;
@@ -15,18 +15,32 @@ type LinkedListNode<T> = {
15
15
  * as our queues can grow very large when the system is under pressure.
16
16
  */
17
17
  export declare class LinkedList<T> {
18
+ private meter?;
19
+ constructor(meter?: QueueMeter | undefined);
18
20
  head: LinkedListNode<T> | undefined;
19
21
  tail: LinkedListNode<T> | undefined;
20
22
  length: number;
21
23
  push(value: T): void;
22
24
  shift(): T | undefined;
23
25
  }
26
+ declare class QueueMeter {
27
+ private attrs?;
28
+ private pullCounter;
29
+ private pushCounter;
30
+ constructor(prefix: string, attrs?: Record<string, string | number> | undefined);
31
+ pull(): void;
32
+ push(): void;
33
+ }
24
34
  export declare class PriorityBasedMessageQueue {
25
35
  private defaultPriority;
26
36
  private queues;
27
- queueSizeCounter: import("@opentelemetry/api").UpDownCounter<import("@opentelemetry/api").Attributes>;
37
+ constructor(defaultPriority: CoValuePriority,
38
+ /**
39
+ * Optional attributes to be added to the generated metrics.
40
+ * By default the metrics will have the priority as an attribute.
41
+ */
42
+ attrs?: Record<string, string | number>);
28
43
  private getQueue;
29
- constructor(defaultPriority: CoValuePriority);
30
44
  push(msg: SyncMessage): Promise<void>;
31
45
  pull(): QueueEntry | undefined;
32
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PriorityBasedMessageQueue.d.ts","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkB7C,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9B,CAAC;AAaF,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU,CAAC,CAAC;IACvB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAgBb,KAAK;CAkBN;AAED,qBAAa,yBAAyB;IAuBxB,OAAO,CAAC,eAAe;IAtBnC,OAAO,CAAC,MAAM,CASZ;IACF,gBAAgB,sFAMX;IAEL,OAAO,CAAC,QAAQ;gBAII,eAAe,EAAE,eAAe;IAE7C,IAAI,CAAC,GAAG,EAAE,WAAW;IAerB,IAAI;CAaZ"}
1
+ {"version":3,"file":"PriorityBasedMessageQueue.d.ts","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkB7C,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9B,CAAC;AAaF,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAiBb,KAAK;CAmBN;AAED,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AAYD,qBAAa,yBAAyB;IAIlC,OAAO,CAAC,eAAe;IAHzB,OAAO,CAAC,MAAM,CAAa;gBAGjB,eAAe,EAAE,eAAe;IACxC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IASzC,OAAO,CAAC,QAAQ;IAIT,IAAI,CAAC,GAAG,EAAE,WAAW;IAWrB,IAAI;CAKZ"}
@@ -1,4 +1,5 @@
1
1
  import { ValueType, metrics } from "@opentelemetry/api";
2
+ import { CO_VALUE_PRIORITY } from "./priority.js";
2
3
  function promiseWithResolvers() {
3
4
  let resolve = (_) => { };
4
5
  let reject = (_) => { };
@@ -17,7 +18,8 @@ function promiseWithResolvers() {
17
18
  * as our queues can grow very large when the system is under pressure.
18
19
  */
19
20
  export class LinkedList {
20
- constructor() {
21
+ constructor(meter) {
22
+ this.meter = meter;
21
23
  this.head = undefined;
22
24
  this.tail = undefined;
23
25
  this.length = 0;
@@ -36,6 +38,7 @@ export class LinkedList {
36
38
  throw new Error("LinkedList is corrupted");
37
39
  }
38
40
  this.length++;
41
+ this.meter?.push();
39
42
  }
40
43
  shift() {
41
44
  if (!this.head) {
@@ -49,51 +52,76 @@ export class LinkedList {
49
52
  this.tail = undefined;
50
53
  }
51
54
  this.length--;
55
+ this.meter?.pull();
52
56
  return value;
53
57
  }
54
58
  }
55
- export class PriorityBasedMessageQueue {
56
- getQueue(priority) {
57
- return this.queues[priority];
59
+ class QueueMeter {
60
+ constructor(prefix, attrs) {
61
+ this.attrs = attrs;
62
+ this.pullCounter = metrics
63
+ .getMeter("cojosn")
64
+ .createCounter(`${prefix}.pulled`, {
65
+ description: "Number of messages pulled from the queue",
66
+ valueType: ValueType.INT,
67
+ unit: "1",
68
+ });
69
+ this.pushCounter = metrics
70
+ .getMeter("cojosn")
71
+ .createCounter(`${prefix}.pushed`, {
72
+ description: "Number of messages pushed to the queue",
73
+ valueType: ValueType.INT,
74
+ unit: "1",
75
+ });
76
+ /**
77
+ * This makes sure that those metrics are generated (and emitted) as soon as the queue is created.
78
+ * This is to avoid edge cases where one series reset is delayed, which would cause spikes or dips
79
+ * when queried - and it also more correctly represents the actual state of the queue after a restart.
80
+ */
81
+ this.pullCounter.add(0, this.attrs);
82
+ this.pushCounter.add(0, this.attrs);
83
+ }
84
+ pull() {
85
+ this.pullCounter.add(1, this.attrs);
58
86
  }
59
- constructor(defaultPriority) {
87
+ push() {
88
+ this.pushCounter.add(1, this.attrs);
89
+ }
90
+ }
91
+ function meteredList(attrs) {
92
+ return new LinkedList(new QueueMeter("jazz.messagequeue", attrs));
93
+ }
94
+ const PRIORITY_TO_QUEUE_INDEX = {
95
+ [CO_VALUE_PRIORITY.HIGH]: 0,
96
+ [CO_VALUE_PRIORITY.MEDIUM]: 1,
97
+ [CO_VALUE_PRIORITY.LOW]: 2,
98
+ };
99
+ export class PriorityBasedMessageQueue {
100
+ constructor(defaultPriority,
101
+ /**
102
+ * Optional attributes to be added to the generated metrics.
103
+ * By default the metrics will have the priority as an attribute.
104
+ */
105
+ attrs) {
60
106
  this.defaultPriority = defaultPriority;
61
107
  this.queues = [
62
- new LinkedList(),
63
- new LinkedList(),
64
- new LinkedList(),
65
- new LinkedList(),
66
- new LinkedList(),
67
- new LinkedList(),
68
- new LinkedList(),
69
- new LinkedList(),
108
+ meteredList({ priority: CO_VALUE_PRIORITY.HIGH, ...attrs }),
109
+ meteredList({ priority: CO_VALUE_PRIORITY.MEDIUM, ...attrs }),
110
+ meteredList({ priority: CO_VALUE_PRIORITY.LOW, ...attrs }),
70
111
  ];
71
- this.queueSizeCounter = metrics
72
- .getMeter("cojson")
73
- .createUpDownCounter("jazz.messagequeue.size", {
74
- description: "Size of the message queue",
75
- valueType: ValueType.INT,
76
- unit: "entry",
77
- });
112
+ }
113
+ getQueue(priority) {
114
+ return this.queues[PRIORITY_TO_QUEUE_INDEX[priority]];
78
115
  }
79
116
  push(msg) {
80
117
  const { promise, resolve, reject } = promiseWithResolvers();
81
118
  const entry = { msg, promise, resolve, reject };
82
119
  const priority = "priority" in msg ? msg.priority : this.defaultPriority;
83
120
  this.getQueue(priority).push(entry);
84
- this.queueSizeCounter.add(1, {
85
- priority,
86
- });
87
121
  return promise;
88
122
  }
89
123
  pull() {
90
124
  const priority = this.queues.findIndex((queue) => queue.length > 0);
91
- if (priority === -1) {
92
- return;
93
- }
94
- this.queueSizeCounter.add(-1, {
95
- priority,
96
- });
97
125
  return this.queues[priority]?.shift();
98
126
  }
99
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PriorityBasedMessageQueue.js","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PriorityBasedMessageQueue.js","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto/crypto.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- import { randomBytes } from "@noble/ciphers/webcrypto/utils";
2
1
  import { base58 } from "@scure/base";
3
2
  import { parseJSON, stableStringify } from "../jsonStringify.js";
4
3
  import { logger } from "../logger.js";
4
+ function randomBytes(bytesLength = 32) {
5
+ return crypto.getRandomValues(new Uint8Array(bytesLength));
6
+ }
5
7
  export const textEncoder = new TextEncoder();
6
8
  export const textDecoder = new TextDecoder();
7
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,SAAS,WAAW,CAAC,WAAW,GAAG,EAAE;IACnC,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,CAAC;AAYD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,8DAA8D;AAC9D,MAAM,OAAgB,cAAc;IAClC,WAAW,CAAC,MAAc;QACxB,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAID,eAAe;QACb,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,mBAAmB,CAAC,MAAoB;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,qBAAqB,CAAC,KAAiB;QACrC,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACjD,CAAC;IAcD,eAAe;QACb,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,mBAAmB,CAAC,MAAoB;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,qBAAqB,CAAC,KAAiB;QACrC,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACjD,CAAC;IAID,oBAAoB;QAClB,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;IAC/D,CAAC;IAED,kBAAkB,CAAC,MAAmB;QACpC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,IAAI,UAAU,CAAC;YACpB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAA4B,CAAC;YACzD,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAA4B,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,KAAiB;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,GAAG,YAAY,IAAI,YAAY,EAAE,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,MAAmB;QAC5B,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC,WAAW,CACxB,YAA4B,CAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,YAA4B,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAC/B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAa,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAAC,WAAwB;QAC3C,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAiB,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAC/B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAa,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAAC,WAAwB;QAC3C,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAiB,CAAC;IACnD,CAAC;IAeD,UAAU,CAAC,KAAgB;QACzB,OAAO,SAAS,MAAM,CAAC,MAAM,CAC3B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAChE,EAAE,CAAC;IACN,CAAC;IAED,SAAS,CAAC,KAAgB;QACxB,OAAO,cAAc,MAAM,CAAC,MAAM,CAChC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACnE,CAAC,EACD,eAAe,CAChB,CACF,EAAE,CAAC;IACN,CAAC;IAQD,qBAAqB,CACnB,KAAQ,EACR,SAAoB,EACpB,aAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAQD,OAAO,CACL,SAA0B,EAC1B,SAAoB,EACpB,aAAgB;QAEhB,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,MAAM,EAAE,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE;YAC3D,EAAE,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,wBAAwB,CACtB,SAA2D,EAC3D,SAAoB,EACpB,aAAiD;QAEjD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED,qBAAqB,CACnB,SAA2D,EAC3D,SAAoB,EACpB,aAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB,CAAC,IAGhB;QAQC,MAAM,aAAa,GAAG;YACpB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YAC9B,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;SACjC,CAAC;QAEF,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YAC9B,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YAChC,SAAS,EAAE,IAAI,CAAC,OAAO,CACrB,IAAI,CAAC,SAAS,CAAC,MAAM,EACrB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,aAAa,CACd;SACF,CAAC;IACJ,CAAC;IAED,gBAAgB,CACd,aAOC,EACD,aAAwB;QAExB,MAAM,aAAa,GAAG;YACpB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,YAAY,EAAE,aAAa,CAAC,YAAY;SACzC,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAqBD,mBAAmB;QACjB,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,gBAAgB;QAId,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAkB,CAAC;QAC3D,OAAO;YACL,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,yBAAyB,CAAC,UAAsB;QAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,gBAAgB,aAAa,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,iBAAiB,MAAM,CAAC,MAAM,CACnC,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE;YACzC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;SACpC,CAAC,CACH,kBAAkB,MAAM,CAAC,MAAM,CAC9B,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE;YACzC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;SACpC,CAAC,CACH,EAAE,CAAC;IACN,CAAC;IAED,kBAAkB,CAAC,SAAiC;QAClD,OAAO,GAAG,SAAS,aAAa,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;CACF;AAID,MAAM,OAAO,aAAa;IAIxB,YAAY,MAAsB,EAAE,SAAsB;QACxD,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CACzC,CAAC;IACJ,CAAC;CACF;AAGD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAUlC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC"}
@@ -6,7 +6,7 @@ import { type CoValueHeader } from "./coValueCore.js";
6
6
  * The priority value is handled as weight in the weighed round robin algorithm
7
7
  * used to determine the order in which messages are sent.
8
8
  *
9
- * Follows the HTTP urgency range and order:
9
+ * Loosely follows the HTTP urgency range and order, but limited to 3 values:
10
10
  * - https://www.rfc-editor.org/rfc/rfc9218.html#name-urgency
11
11
  */
12
12
  export declare const CO_VALUE_PRIORITY: {
@@ -14,6 +14,6 @@ export declare const CO_VALUE_PRIORITY: {
14
14
  readonly MEDIUM: 3;
15
15
  readonly LOW: 6;
16
16
  };
17
- export type CoValuePriority = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
17
+ export type CoValuePriority = 0 | 3 | 6;
18
18
  export declare function getPriorityFromHeader(header: CoValueHeader | undefined | boolean): CoValuePriority;
19
19
  //# sourceMappingURL=priority.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"priority.d.ts","sourceRoot":"","sources":["../src/priority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE5D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,GAC1C,eAAe,CAkBjB"}
1
+ {"version":3,"file":"priority.d.ts","sourceRoot":"","sources":["../src/priority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,GAC1C,eAAe,CAkBjB"}
package/dist/priority.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * The priority value is handled as weight in the weighed round robin algorithm
6
6
  * used to determine the order in which messages are sent.
7
7
  *
8
- * Follows the HTTP urgency range and order:
8
+ * Loosely follows the HTTP urgency range and order, but limited to 3 values:
9
9
  * - https://www.rfc-editor.org/rfc/rfc9218.html#name-urgency
10
10
  */
11
11
  export const CO_VALUE_PRIORITY = {
@@ -2,19 +2,101 @@ import { afterEach, describe, expect, test } from "vitest";
2
2
  import { PriorityBasedMessageQueue } from "../PriorityBasedMessageQueue.js";
3
3
  import { CO_VALUE_PRIORITY } from "../priority.js";
4
4
  import { createTestMetricReader, tearDownTestMetricReader, } from "./testUtils.js";
5
- function setup() {
5
+ function setup(attrs) {
6
6
  const metricReader = createTestMetricReader();
7
- const queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.MEDIUM);
7
+ const queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.MEDIUM, attrs);
8
8
  return { queue, metricReader };
9
9
  }
10
10
  describe("PriorityBasedMessageQueue", () => {
11
11
  afterEach(() => {
12
12
  tearDownTestMetricReader();
13
13
  });
14
+ describe("meteredQueue", () => {
15
+ test("should corretly count pushes", async () => {
16
+ const { queue, metricReader } = setup();
17
+ const message = {
18
+ action: "load",
19
+ id: "co_ztest-id",
20
+ header: false,
21
+ sessions: {},
22
+ };
23
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
24
+ priority: CO_VALUE_PRIORITY.MEDIUM,
25
+ })).toBe(0);
26
+ void queue.push(message);
27
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
28
+ priority: CO_VALUE_PRIORITY.MEDIUM,
29
+ })).toBe(1);
30
+ void queue.push(message);
31
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
32
+ priority: CO_VALUE_PRIORITY.MEDIUM,
33
+ })).toBe(2);
34
+ });
35
+ test("should corretly count pulls", async () => {
36
+ const { queue, metricReader } = setup();
37
+ const message = {
38
+ action: "load",
39
+ id: "co_ztest-id",
40
+ header: false,
41
+ sessions: {},
42
+ };
43
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pulled", {
44
+ priority: CO_VALUE_PRIORITY.MEDIUM,
45
+ })).toBe(0);
46
+ void queue.push(message);
47
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pulled", {
48
+ priority: CO_VALUE_PRIORITY.MEDIUM,
49
+ })).toBe(0);
50
+ void queue.pull();
51
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pulled", {
52
+ priority: CO_VALUE_PRIORITY.MEDIUM,
53
+ })).toBe(1);
54
+ // We only have one item in the queue, so this should not change the metric value
55
+ void queue.pull();
56
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pulled", {
57
+ priority: CO_VALUE_PRIORITY.MEDIUM,
58
+ })).toBe(1);
59
+ });
60
+ test("should corretly set custom attributes to the metrics", async () => {
61
+ const { queue, metricReader } = setup({ role: "server" });
62
+ const message = {
63
+ action: "load",
64
+ id: "co_ztest-id",
65
+ header: false,
66
+ sessions: {},
67
+ };
68
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
69
+ priority: CO_VALUE_PRIORITY.MEDIUM,
70
+ role: "server",
71
+ })).toBe(0);
72
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
73
+ priority: CO_VALUE_PRIORITY.MEDIUM,
74
+ role: "client",
75
+ })).toBeUndefined();
76
+ void queue.push(message);
77
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
78
+ priority: CO_VALUE_PRIORITY.MEDIUM,
79
+ role: "server",
80
+ })).toBe(1);
81
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pulled", {
82
+ priority: CO_VALUE_PRIORITY.MEDIUM,
83
+ role: "server",
84
+ })).toBe(0);
85
+ void queue.pull();
86
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pushed", {
87
+ priority: CO_VALUE_PRIORITY.MEDIUM,
88
+ role: "server",
89
+ })).toBe(1);
90
+ expect(await metricReader.getMetricValue("jazz.messagequeue.pulled", {
91
+ priority: CO_VALUE_PRIORITY.MEDIUM,
92
+ role: "server",
93
+ })).toBe(1);
94
+ });
95
+ });
14
96
  test("should initialize with correct properties", () => {
15
97
  const { queue } = setup();
16
98
  expect(queue["defaultPriority"]).toBe(CO_VALUE_PRIORITY.MEDIUM);
17
- expect(queue["queues"].length).toBe(8);
99
+ expect(queue["queues"].length).toBe(3);
18
100
  expect(queue["queues"].every((q) => !q.length)).toBe(true);
19
101
  });
20
102
  test("should push message with default priority", async () => {
@@ -42,7 +124,7 @@ describe("PriorityBasedMessageQueue", () => {
42
124
  expect(pulledEntry?.msg).toEqual(message);
43
125
  });
44
126
  test("should pull messages in priority order", async () => {
45
- const { queue, metricReader } = setup();
127
+ const { queue } = setup();
46
128
  const lowPriorityMsg = {
47
129
  action: "content",
48
130
  id: "co_zlow",
@@ -62,29 +144,11 @@ describe("PriorityBasedMessageQueue", () => {
62
144
  priority: CO_VALUE_PRIORITY.HIGH,
63
145
  };
64
146
  void queue.push(lowPriorityMsg);
65
- expect(await metricReader.getMetricValue("jazz.messagequeue.size", {
66
- priority: lowPriorityMsg.priority,
67
- })).toBe(1);
68
147
  void queue.push(mediumPriorityMsg);
69
- expect(await metricReader.getMetricValue("jazz.messagequeue.size", {
70
- priority: mediumPriorityMsg.priority,
71
- })).toBe(1);
72
148
  void queue.push(highPriorityMsg);
73
- expect(await metricReader.getMetricValue("jazz.messagequeue.size", {
74
- priority: highPriorityMsg.priority,
75
- })).toBe(1);
76
149
  expect(queue.pull()?.msg).toEqual(highPriorityMsg);
77
- expect(await metricReader.getMetricValue("jazz.messagequeue.size", {
78
- priority: highPriorityMsg.priority,
79
- })).toBe(0);
80
150
  expect(queue.pull()?.msg).toEqual(mediumPriorityMsg);
81
- expect(await metricReader.getMetricValue("jazz.messagequeue.size", {
82
- priority: mediumPriorityMsg.priority,
83
- })).toBe(0);
84
151
  expect(queue.pull()?.msg).toEqual(lowPriorityMsg);
85
- expect(await metricReader.getMetricValue("jazz.messagequeue.size", {
86
- priority: lowPriorityMsg.priority,
87
- })).toBe(0);
88
152
  });
89
153
  test("should return undefined when pulling from empty queue", () => {
90
154
  const { queue } = setup();
@@ -1 +1 @@
1
- {"version":3,"file":"PriorityBasedMessageQueue.test.js","sourceRoot":"","sources":["../../src/tests/PriorityBasedMessageQueue.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PriorityBasedMessageQueue.test.js","sourceRoot":"","sources":["../../src/tests/PriorityBasedMessageQueue.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -25,11 +25,10 @@
25
25
  },
26
26
  "type": "module",
27
27
  "license": "MIT",
28
- "version": "0.13.0",
28
+ "version": "0.13.5",
29
29
  "devDependencies": {
30
30
  "@opentelemetry/sdk-metrics": "^2.0.0",
31
- "typescript": "~5.6.2",
32
- "vitest": "3.0.5"
31
+ "typescript": "~5.6.2"
33
32
  },
34
33
  "dependencies": {
35
34
  "@noble/ciphers": "^0.1.3",
@@ -37,7 +36,7 @@
37
36
  "@noble/hashes": "^1.4.0",
38
37
  "@opentelemetry/api": "^1.9.0",
39
38
  "@scure/base": "1.2.1",
40
- "jazz-crypto-rs": "0.0.6",
39
+ "jazz-crypto-rs": "0.0.7",
41
40
  "neverthrow": "^7.0.1",
42
41
  "queueueue": "^4.1.2"
43
42
  },
package/src/PeerState.ts CHANGED
@@ -10,10 +10,21 @@ import { CO_VALUE_PRIORITY } from "./priority.js";
10
10
  import { Peer, SyncMessage } from "./sync.js";
11
11
 
12
12
  export class PeerState {
13
+ private queue: PriorityBasedMessageQueue;
14
+
13
15
  constructor(
14
16
  private peer: Peer,
15
17
  knownStates: PeerKnownStates | undefined,
16
18
  ) {
19
+ /**
20
+ * We set as default priority HIGH to handle all the messages without a
21
+ * priority property as HIGH priority.
22
+ *
23
+ * This way we consider all the non-content messsages as HIGH priority.
24
+ */
25
+ this.queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.HIGH, {
26
+ peerRole: peer.role,
27
+ });
17
28
  this.optimisticKnownStates = knownStates?.clone() ?? new PeerKnownStates();
18
29
 
19
30
  // We assume that exchanges with storage peers are always successful
@@ -76,13 +87,6 @@ export class PeerState {
76
87
  return this.peer.role === "server" || this.peer.role === "storage";
77
88
  }
78
89
 
79
- /**
80
- * We set as default priority HIGH to handle all the messages without a
81
- * priority property as HIGH priority.
82
- *
83
- * This way we consider all the non-content messsages as HIGH priority.
84
- */
85
- private queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.HIGH);
86
90
  private processing = false;
87
91
  public closed = false;
88
92
 
@@ -1,5 +1,5 @@
1
- import { ValueType, metrics } from "@opentelemetry/api";
2
- import type { CoValuePriority } from "./priority.js";
1
+ import { Counter, ValueType, metrics } from "@opentelemetry/api";
2
+ import { CO_VALUE_PRIORITY, type CoValuePriority } from "./priority.js";
3
3
  import type { SyncMessage } from "./sync.js";
4
4
 
5
5
  function promiseWithResolvers<R>() {
@@ -34,7 +34,7 @@ type Tuple<T, N extends number, A extends unknown[] = []> = A extends {
34
34
  ? A
35
35
  : Tuple<T, N, [...A, T]>;
36
36
 
37
- type QueueTuple = Tuple<LinkedList<QueueEntry>, 8>;
37
+ type QueueTuple = Tuple<LinkedList<QueueEntry>, 3>;
38
38
 
39
39
  type LinkedListNode<T> = {
40
40
  value: T;
@@ -46,6 +46,8 @@ type LinkedListNode<T> = {
46
46
  * as our queues can grow very large when the system is under pressure.
47
47
  */
48
48
  export class LinkedList<T> {
49
+ constructor(private meter?: QueueMeter) {}
50
+
49
51
  head: LinkedListNode<T> | undefined = undefined;
50
52
  tail: LinkedListNode<T> | undefined = undefined;
51
53
  length = 0;
@@ -64,6 +66,7 @@ export class LinkedList<T> {
64
66
  }
65
67
 
66
68
  this.length++;
69
+ this.meter?.push();
67
70
  }
68
71
 
69
72
  shift() {
@@ -82,35 +85,84 @@ export class LinkedList<T> {
82
85
 
83
86
  this.length--;
84
87
 
88
+ this.meter?.pull();
85
89
  return value;
86
90
  }
87
91
  }
88
92
 
93
+ class QueueMeter {
94
+ private pullCounter: Counter;
95
+ private pushCounter: Counter;
96
+
97
+ constructor(
98
+ prefix: string,
99
+ private attrs?: Record<string, string | number>,
100
+ ) {
101
+ this.pullCounter = metrics
102
+ .getMeter("cojosn")
103
+ .createCounter(`${prefix}.pulled`, {
104
+ description: "Number of messages pulled from the queue",
105
+ valueType: ValueType.INT,
106
+ unit: "1",
107
+ });
108
+ this.pushCounter = metrics
109
+ .getMeter("cojosn")
110
+ .createCounter(`${prefix}.pushed`, {
111
+ description: "Number of messages pushed to the queue",
112
+ valueType: ValueType.INT,
113
+ unit: "1",
114
+ });
115
+
116
+ /**
117
+ * This makes sure that those metrics are generated (and emitted) as soon as the queue is created.
118
+ * This is to avoid edge cases where one series reset is delayed, which would cause spikes or dips
119
+ * when queried - and it also more correctly represents the actual state of the queue after a restart.
120
+ */
121
+ this.pullCounter.add(0, this.attrs);
122
+ this.pushCounter.add(0, this.attrs);
123
+ }
124
+
125
+ public pull() {
126
+ this.pullCounter.add(1, this.attrs);
127
+ }
128
+
129
+ public push() {
130
+ this.pushCounter.add(1, this.attrs);
131
+ }
132
+ }
133
+
134
+ function meteredList<T>(attrs?: Record<string, string | number>) {
135
+ return new LinkedList<T>(new QueueMeter("jazz.messagequeue", attrs));
136
+ }
137
+
138
+ const PRIORITY_TO_QUEUE_INDEX = {
139
+ [CO_VALUE_PRIORITY.HIGH]: 0,
140
+ [CO_VALUE_PRIORITY.MEDIUM]: 1,
141
+ [CO_VALUE_PRIORITY.LOW]: 2,
142
+ } as const;
143
+
89
144
  export class PriorityBasedMessageQueue {
90
- private queues: QueueTuple = [
91
- new LinkedList<QueueEntry>(),
92
- new LinkedList<QueueEntry>(),
93
- new LinkedList<QueueEntry>(),
94
- new LinkedList<QueueEntry>(),
95
- new LinkedList<QueueEntry>(),
96
- new LinkedList<QueueEntry>(),
97
- new LinkedList<QueueEntry>(),
98
- new LinkedList<QueueEntry>(),
99
- ];
100
- queueSizeCounter = metrics
101
- .getMeter("cojson")
102
- .createUpDownCounter("jazz.messagequeue.size", {
103
- description: "Size of the message queue",
104
- valueType: ValueType.INT,
105
- unit: "entry",
106
- });
145
+ private queues: QueueTuple;
146
+
147
+ constructor(
148
+ private defaultPriority: CoValuePriority,
149
+ /**
150
+ * Optional attributes to be added to the generated metrics.
151
+ * By default the metrics will have the priority as an attribute.
152
+ */
153
+ attrs?: Record<string, string | number>,
154
+ ) {
155
+ this.queues = [
156
+ meteredList({ priority: CO_VALUE_PRIORITY.HIGH, ...attrs }),
157
+ meteredList({ priority: CO_VALUE_PRIORITY.MEDIUM, ...attrs }),
158
+ meteredList({ priority: CO_VALUE_PRIORITY.LOW, ...attrs }),
159
+ ];
160
+ }
107
161
 
108
162
  private getQueue(priority: CoValuePriority) {
109
- return this.queues[priority];
163
+ return this.queues[PRIORITY_TO_QUEUE_INDEX[priority]];
110
164
  }
111
165
 
112
- constructor(private defaultPriority: CoValuePriority) {}
113
-
114
166
  public push(msg: SyncMessage) {
115
167
  const { promise, resolve, reject } = promiseWithResolvers<void>();
116
168
  const entry: QueueEntry = { msg, promise, resolve, reject };
@@ -119,24 +171,12 @@ export class PriorityBasedMessageQueue {
119
171
 
120
172
  this.getQueue(priority).push(entry);
121
173
 
122
- this.queueSizeCounter.add(1, {
123
- priority,
124
- });
125
-
126
174
  return promise;
127
175
  }
128
176
 
129
177
  public pull() {
130
178
  const priority = this.queues.findIndex((queue) => queue.length > 0);
131
179
 
132
- if (priority === -1) {
133
- return;
134
- }
135
-
136
- this.queueSizeCounter.add(-1, {
137
- priority,
138
- });
139
-
140
180
  return this.queues[priority]?.shift();
141
181
  }
142
182
  }
@@ -1,4 +1,3 @@
1
- import { randomBytes } from "@noble/ciphers/webcrypto/utils";
2
1
  import { base58 } from "@scure/base";
3
2
  import { RawAccountID } from "../coValues/account.js";
4
3
  import { AgentID, RawCoID, TransactionID } from "../ids.js";
@@ -7,6 +6,10 @@ import { Stringified, parseJSON, stableStringify } from "../jsonStringify.js";
7
6
  import { JsonValue } from "../jsonValue.js";
8
7
  import { logger } from "../logger.js";
9
8
 
9
+ function randomBytes(bytesLength = 32): Uint8Array {
10
+ return crypto.getRandomValues(new Uint8Array(bytesLength));
11
+ }
12
+
10
13
  export type SignerSecret = `signerSecret_z${string}`;
11
14
  export type SignerID = `signer_z${string}`;
12
15
  export type Signature = `signature_z${string}`;
package/src/priority.ts CHANGED
@@ -7,7 +7,7 @@ import { type CoValueHeader } from "./coValueCore.js";
7
7
  * The priority value is handled as weight in the weighed round robin algorithm
8
8
  * used to determine the order in which messages are sent.
9
9
  *
10
- * Follows the HTTP urgency range and order:
10
+ * Loosely follows the HTTP urgency range and order, but limited to 3 values:
11
11
  * - https://www.rfc-editor.org/rfc/rfc9218.html#name-urgency
12
12
  */
13
13
  export const CO_VALUE_PRIORITY = {
@@ -16,7 +16,7 @@ export const CO_VALUE_PRIORITY = {
16
16
  LOW: 6,
17
17
  } as const;
18
18
 
19
- export type CoValuePriority = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
19
+ export type CoValuePriority = 0 | 3 | 6;
20
20
 
21
21
  export function getPriorityFromHeader(
22
22
  header: CoValueHeader | undefined | boolean,
@@ -7,9 +7,9 @@ import {
7
7
  tearDownTestMetricReader,
8
8
  } from "./testUtils.js";
9
9
 
10
- function setup() {
10
+ function setup(attrs?: Record<string, string | number>) {
11
11
  const metricReader = createTestMetricReader();
12
- const queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.MEDIUM);
12
+ const queue = new PriorityBasedMessageQueue(CO_VALUE_PRIORITY.MEDIUM, attrs);
13
13
  return { queue, metricReader };
14
14
  }
15
15
 
@@ -18,10 +18,133 @@ describe("PriorityBasedMessageQueue", () => {
18
18
  tearDownTestMetricReader();
19
19
  });
20
20
 
21
+ describe("meteredQueue", () => {
22
+ test("should corretly count pushes", async () => {
23
+ const { queue, metricReader } = setup();
24
+ const message: SyncMessage = {
25
+ action: "load",
26
+ id: "co_ztest-id",
27
+ header: false,
28
+ sessions: {},
29
+ };
30
+
31
+ expect(
32
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
33
+ priority: CO_VALUE_PRIORITY.MEDIUM,
34
+ }),
35
+ ).toBe(0);
36
+
37
+ void queue.push(message);
38
+ expect(
39
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
40
+ priority: CO_VALUE_PRIORITY.MEDIUM,
41
+ }),
42
+ ).toBe(1);
43
+
44
+ void queue.push(message);
45
+ expect(
46
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
47
+ priority: CO_VALUE_PRIORITY.MEDIUM,
48
+ }),
49
+ ).toBe(2);
50
+ });
51
+
52
+ test("should corretly count pulls", async () => {
53
+ const { queue, metricReader } = setup();
54
+ const message: SyncMessage = {
55
+ action: "load",
56
+ id: "co_ztest-id",
57
+ header: false,
58
+ sessions: {},
59
+ };
60
+
61
+ expect(
62
+ await metricReader.getMetricValue("jazz.messagequeue.pulled", {
63
+ priority: CO_VALUE_PRIORITY.MEDIUM,
64
+ }),
65
+ ).toBe(0);
66
+
67
+ void queue.push(message);
68
+ expect(
69
+ await metricReader.getMetricValue("jazz.messagequeue.pulled", {
70
+ priority: CO_VALUE_PRIORITY.MEDIUM,
71
+ }),
72
+ ).toBe(0);
73
+
74
+ void queue.pull();
75
+
76
+ expect(
77
+ await metricReader.getMetricValue("jazz.messagequeue.pulled", {
78
+ priority: CO_VALUE_PRIORITY.MEDIUM,
79
+ }),
80
+ ).toBe(1);
81
+
82
+ // We only have one item in the queue, so this should not change the metric value
83
+ void queue.pull();
84
+ expect(
85
+ await metricReader.getMetricValue("jazz.messagequeue.pulled", {
86
+ priority: CO_VALUE_PRIORITY.MEDIUM,
87
+ }),
88
+ ).toBe(1);
89
+ });
90
+
91
+ test("should corretly set custom attributes to the metrics", async () => {
92
+ const { queue, metricReader } = setup({ role: "server" });
93
+ const message: SyncMessage = {
94
+ action: "load",
95
+ id: "co_ztest-id",
96
+ header: false,
97
+ sessions: {},
98
+ };
99
+
100
+ expect(
101
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
102
+ priority: CO_VALUE_PRIORITY.MEDIUM,
103
+ role: "server",
104
+ }),
105
+ ).toBe(0);
106
+ expect(
107
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
108
+ priority: CO_VALUE_PRIORITY.MEDIUM,
109
+ role: "client",
110
+ }),
111
+ ).toBeUndefined();
112
+
113
+ void queue.push(message);
114
+ expect(
115
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
116
+ priority: CO_VALUE_PRIORITY.MEDIUM,
117
+ role: "server",
118
+ }),
119
+ ).toBe(1);
120
+ expect(
121
+ await metricReader.getMetricValue("jazz.messagequeue.pulled", {
122
+ priority: CO_VALUE_PRIORITY.MEDIUM,
123
+ role: "server",
124
+ }),
125
+ ).toBe(0);
126
+
127
+ void queue.pull();
128
+
129
+ expect(
130
+ await metricReader.getMetricValue("jazz.messagequeue.pushed", {
131
+ priority: CO_VALUE_PRIORITY.MEDIUM,
132
+ role: "server",
133
+ }),
134
+ ).toBe(1);
135
+ expect(
136
+ await metricReader.getMetricValue("jazz.messagequeue.pulled", {
137
+ priority: CO_VALUE_PRIORITY.MEDIUM,
138
+ role: "server",
139
+ }),
140
+ ).toBe(1);
141
+ });
142
+ });
143
+
21
144
  test("should initialize with correct properties", () => {
22
145
  const { queue } = setup();
23
146
  expect(queue["defaultPriority"]).toBe(CO_VALUE_PRIORITY.MEDIUM);
24
- expect(queue["queues"].length).toBe(8);
147
+ expect(queue["queues"].length).toBe(3);
25
148
  expect(queue["queues"].every((q) => !q.length)).toBe(true);
26
149
  });
27
150
 
@@ -52,7 +175,7 @@ describe("PriorityBasedMessageQueue", () => {
52
175
  });
53
176
 
54
177
  test("should pull messages in priority order", async () => {
55
- const { queue, metricReader } = setup();
178
+ const { queue } = setup();
56
179
  const lowPriorityMsg: SyncMessage = {
57
180
  action: "content",
58
181
  id: "co_zlow",
@@ -73,42 +196,12 @@ describe("PriorityBasedMessageQueue", () => {
73
196
  };
74
197
 
75
198
  void queue.push(lowPriorityMsg);
76
- expect(
77
- await metricReader.getMetricValue("jazz.messagequeue.size", {
78
- priority: lowPriorityMsg.priority,
79
- }),
80
- ).toBe(1);
81
199
  void queue.push(mediumPriorityMsg);
82
- expect(
83
- await metricReader.getMetricValue("jazz.messagequeue.size", {
84
- priority: mediumPriorityMsg.priority,
85
- }),
86
- ).toBe(1);
87
200
  void queue.push(highPriorityMsg);
88
- expect(
89
- await metricReader.getMetricValue("jazz.messagequeue.size", {
90
- priority: highPriorityMsg.priority,
91
- }),
92
- ).toBe(1);
93
201
 
94
202
  expect(queue.pull()?.msg).toEqual(highPriorityMsg);
95
- expect(
96
- await metricReader.getMetricValue("jazz.messagequeue.size", {
97
- priority: highPriorityMsg.priority,
98
- }),
99
- ).toBe(0);
100
203
  expect(queue.pull()?.msg).toEqual(mediumPriorityMsg);
101
- expect(
102
- await metricReader.getMetricValue("jazz.messagequeue.size", {
103
- priority: mediumPriorityMsg.priority,
104
- }),
105
- ).toBe(0);
106
204
  expect(queue.pull()?.msg).toEqual(lowPriorityMsg);
107
- expect(
108
- await metricReader.getMetricValue("jazz.messagequeue.size", {
109
- priority: lowPriorityMsg.priority,
110
- }),
111
- ).toBe(0);
112
205
  });
113
206
 
114
207
  test("should return undefined when pulling from empty queue", () => {