@procedures/mongo 0.52.2 → 0.53.1
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/CHANGELOG.md +70 -0
- package/README.md +1 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/storage/database-changes.d.ts +6 -1
- package/dist/storage/database-changes.d.ts.map +1 -1
- package/dist/storage/database-changes.js +15 -3
- package/dist/storage/database-changes.js.map +1 -1
- package/dist/storage/document-storage.d.ts.map +1 -1
- package/dist/storage/document-storage.js +25 -11
- package/dist/storage/document-storage.js.map +1 -1
- package/dist/storage/materializer.d.ts +6 -0
- package/dist/storage/materializer.d.ts.map +1 -1
- package/dist/storage/materializer.js +12 -5
- package/dist/storage/materializer.js.map +1 -1
- package/dist/storage/storage-hints.d.ts +9 -71
- package/dist/storage/storage-hints.d.ts.map +1 -1
- package/dist/storage/storage-hints.js +33 -11
- package/dist/storage/storage-hints.js.map +1 -1
- package/dist/storage/token-age.d.ts +30 -0
- package/dist/storage/token-age.d.ts.map +1 -0
- package/dist/storage/token-age.js +55 -0
- package/dist/storage/token-age.js.map +1 -0
- package/package.json +10 -8
- package/src/storage/database-changes.ts +22 -3
- package/src/storage/document-storage.ts +27 -12
- package/src/storage/materializer.ts +13 -5
- package/src/storage/storage-hints.ts +38 -10
- package/src/storage/token-age.ts +63 -0
|
@@ -68,11 +68,13 @@
|
|
|
68
68
|
* - Change streams need a replica set or a sharded cluster. The watcher asks the server (`hello`)
|
|
69
69
|
* before the first open: on a single server, `ready` rejects (code 40573).
|
|
70
70
|
*/
|
|
71
|
+
import { backoffDelay } from "@mark1russell7/service/backoff";
|
|
71
72
|
import { MongoAPIError, MongoParseError, BSON } from "mongodb";
|
|
72
73
|
import { collectionChangeTopic, collectionTopicPartition, optionalMs, realClock, writeLog, } from "@procedures/client";
|
|
73
74
|
import { DEFAULT_STORED_FORM, TOMBSTONE_FIELD, storageChangeSource, versionOfStored, } from "./document-storage.js";
|
|
74
75
|
import { SAME_TOKEN_LIMIT, SPLIT_LARGE_EVENT_STAGE, UNKNOWN_STAGE_CODE, eventJoiner, sameTokenFaults } from "./split-events.js";
|
|
75
76
|
import { trackOwnNumbers } from "./own-writes.js";
|
|
77
|
+
import { tokenAge } from "./token-age.js";
|
|
76
78
|
/** The fields of the storage that the change of an item reads. */
|
|
77
79
|
const SEQ = "_seq";
|
|
78
80
|
const KEY = "_key";
|
|
@@ -195,7 +197,10 @@ export function storageChangeOf(change, form = DEFAULT_STORED_FORM) {
|
|
|
195
197
|
const version = versionOfStored({ ...after, [SEQ]: written }, form, partition) ?? String(written);
|
|
196
198
|
return { id, partition, deleted: false, raw: false, version, seq: written };
|
|
197
199
|
}
|
|
198
|
-
/**
|
|
200
|
+
/**
|
|
201
|
+
* The delay before try `attempt` (0 for the first) of a backoff. The `backoffDelay` function of
|
|
202
|
+
* `@mark1russell7/service` gives it: its first try is 1.
|
|
203
|
+
*/
|
|
199
204
|
export function backoffOf(options) {
|
|
200
205
|
const initial = optionalMs(options?.initialDelay, "backoff.initialDelay") ?? 250;
|
|
201
206
|
const max = optionalMs(options?.maxDelay, "backoff.maxDelay") ?? 30_000;
|
|
@@ -207,10 +212,8 @@ export function backoffOf(options) {
|
|
|
207
212
|
throw new RangeError("backoff: backoffMultiplier must be 1 or more");
|
|
208
213
|
if (!(jitter >= 0 && jitter <= 1))
|
|
209
214
|
throw new RangeError("backoff: jitter must be from 0 to 1");
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
return full - full * jitter * Math.random();
|
|
213
|
-
};
|
|
215
|
+
const policy = { base: initial, factor, cap: max, jitter: { kind: "subtract", fraction: jitter } };
|
|
216
|
+
return (attempt) => backoffDelay(policy, attempt + 1);
|
|
214
217
|
}
|
|
215
218
|
/** The message of an error. */
|
|
216
219
|
export function messageOf(error) {
|
|
@@ -319,6 +322,12 @@ export function watchStorageChanges(storage, publish, options = {}) {
|
|
|
319
322
|
let stopped = false;
|
|
320
323
|
let stream;
|
|
321
324
|
let token;
|
|
325
|
+
const age = tokenAge(clock);
|
|
326
|
+
/** This function sets the token of the watcher, and notes it for `tokenAgeMs`. */
|
|
327
|
+
const setToken = (next) => {
|
|
328
|
+
token = next;
|
|
329
|
+
age.note(next);
|
|
330
|
+
};
|
|
322
331
|
/** True after a stream was open: a new stream without a token can then miss changes. */
|
|
323
332
|
let opened = false;
|
|
324
333
|
let attempt = 0;
|
|
@@ -703,7 +712,7 @@ export function watchStorageChanges(storage, publish, options = {}) {
|
|
|
703
712
|
});
|
|
704
713
|
};
|
|
705
714
|
const onChange = (change) => {
|
|
706
|
-
|
|
715
|
+
setToken(change["_id"]);
|
|
707
716
|
attempt = 0;
|
|
708
717
|
faults.reset();
|
|
709
718
|
const type = change["operationType"];
|
|
@@ -823,6 +832,8 @@ export function watchStorageChanges(storage, publish, options = {}) {
|
|
|
823
832
|
}
|
|
824
833
|
stream = next;
|
|
825
834
|
const joiner = eventJoiner();
|
|
835
|
+
/** The token before the document of the last token: the token before the event at fragment 1. */
|
|
836
|
+
let tokenBefore = token;
|
|
826
837
|
/** The token at the open: a reopen at the same token is no success, so the backoff does not start again. */
|
|
827
838
|
const openToken = JSON.stringify(token ?? null);
|
|
828
839
|
let ended = false;
|
|
@@ -863,8 +874,11 @@ export function watchStorageChanges(storage, publish, options = {}) {
|
|
|
863
874
|
if (resumeToken === undefined || resumeToken === null)
|
|
864
875
|
return;
|
|
865
876
|
// In the middle of a split event, the token stays before the event: a stream that opens again gets all its fragments
|
|
866
|
-
if (!joiner.partial)
|
|
867
|
-
token
|
|
877
|
+
if (!joiner.partial) {
|
|
878
|
+
// The driver gives the token of a document before its change: fragment 1 puts the token back (audit 2026-11-08)
|
|
879
|
+
tokenBefore = token;
|
|
880
|
+
setToken(resumeToken);
|
|
881
|
+
}
|
|
868
882
|
opened = true;
|
|
869
883
|
if (JSON.stringify(resumeToken) !== openToken)
|
|
870
884
|
attempt = 0;
|
|
@@ -878,16 +892,21 @@ export function watchStorageChanges(storage, publish, options = {}) {
|
|
|
878
892
|
live = true;
|
|
879
893
|
afterQueue();
|
|
880
894
|
const result = joiner.push(change);
|
|
881
|
-
if (result.kind === "part")
|
|
895
|
+
if (result.kind === "part") {
|
|
896
|
+
// The first fragment of a split event: the token goes back to the token before the event
|
|
897
|
+
// The token goes back with no note for `tokenAgeMs`: the age keeps the latest token that moved it
|
|
898
|
+
if (change["splitEvent"]?.fragment === 1)
|
|
899
|
+
token = tokenBefore;
|
|
882
900
|
return;
|
|
901
|
+
}
|
|
883
902
|
if (result.kind === "missing") {
|
|
884
903
|
// The stream started after a fragment: the event cannot be read, so the subscribers read the collection in full
|
|
885
|
-
|
|
904
|
+
setToken(result.change["_id"]);
|
|
886
905
|
return gap(`a split event of ${source.collection} came without its first ${result.missing} fragments`, { missing: result.missing, resumeToken: true });
|
|
887
906
|
}
|
|
888
907
|
if (result.change["operationType"] === "invalidate") {
|
|
889
908
|
// The collection was dropped or renamed: the stream starts after the invalidate event
|
|
890
|
-
|
|
909
|
+
setToken(result.change["_id"]);
|
|
891
910
|
return end("ended (invalidate)");
|
|
892
911
|
}
|
|
893
912
|
onChange(result.change);
|
|
@@ -899,6 +918,9 @@ export function watchStorageChanges(storage, publish, options = {}) {
|
|
|
899
918
|
void open();
|
|
900
919
|
return {
|
|
901
920
|
ready,
|
|
921
|
+
get tokenAgeMs() {
|
|
922
|
+
return age.ageMs();
|
|
923
|
+
},
|
|
902
924
|
async stop() {
|
|
903
925
|
if (stopped)
|
|
904
926
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-hints.js","sourceRoot":"","sources":["../../src/storage/storage-hints.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage-hints.js","sourceRoot":"","sources":["../../src/storage/storage-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The age of the resume token of a change watcher (roadmap CLI-110). A token moves when its cluster time is later
|
|
3
|
+
* than the cluster time of the token before it. The same token again, or a new token at the same cluster time,
|
|
4
|
+
* does not move it. A user reads a stalled feed from the age, without a sampler of its own.
|
|
5
|
+
*
|
|
6
|
+
* The package does not export this module. `watchDatabaseChanges()` and `watchStorageChanges()` give the age as
|
|
7
|
+
* `tokenAgeMs` on their handles.
|
|
8
|
+
*/
|
|
9
|
+
import type { Clock } from "@procedures/client";
|
|
10
|
+
/**
|
|
11
|
+
* This function gives the cluster time of a resume token as 16 hex digits, or undefined for a token of another form.
|
|
12
|
+
* The key of a token of the server starts with the type byte `82` and the 8 bytes of the timestamp, high byte first.
|
|
13
|
+
* So the order of two of these texts is the order of their cluster times.
|
|
14
|
+
*/
|
|
15
|
+
export declare function clusterTimeOfToken(token: unknown): string | undefined;
|
|
16
|
+
/** The age of the token of one watcher. */
|
|
17
|
+
export interface TokenAge {
|
|
18
|
+
/** This method notes a token of the watcher. It moves the age to 0 when the token is later than the last token that moved it. */
|
|
19
|
+
note(token: unknown): void;
|
|
20
|
+
/** This method gives the milliseconds of the clock since the token last moved, or since the start before the first move. */
|
|
21
|
+
ageMs(): number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* This function starts the age of the token of one watcher at the time of the clock.
|
|
25
|
+
*
|
|
26
|
+
* @param clock - The clock of the watcher
|
|
27
|
+
* @param start - The start token of the watcher, or undefined. A later token moves the age.
|
|
28
|
+
*/
|
|
29
|
+
export declare function tokenAge(clock: Clock, start?: unknown): TokenAge;
|
|
30
|
+
//# sourceMappingURL=token-age.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-age.d.ts","sourceRoot":"","sources":["../../src/storage/token-age.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKhD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIrE;AAYD,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACvB,iIAAiI;IACjI,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,4HAA4H;IAC5H,KAAK,IAAI,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAahE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The age of the resume token of a change watcher (roadmap CLI-110). A token moves when its cluster time is later
|
|
3
|
+
* than the cluster time of the token before it. The same token again, or a new token at the same cluster time,
|
|
4
|
+
* does not move it. A user reads a stalled feed from the age, without a sampler of its own.
|
|
5
|
+
*
|
|
6
|
+
* The package does not export this module. `watchDatabaseChanges()` and `watchStorageChanges()` give the age as
|
|
7
|
+
* `tokenAgeMs` on their handles.
|
|
8
|
+
*/
|
|
9
|
+
/** The type byte of a timestamp at the start of the key of a resume token of the server. */
|
|
10
|
+
const TIMESTAMP_TYPE = "82";
|
|
11
|
+
/**
|
|
12
|
+
* This function gives the cluster time of a resume token as 16 hex digits, or undefined for a token of another form.
|
|
13
|
+
* The key of a token of the server starts with the type byte `82` and the 8 bytes of the timestamp, high byte first.
|
|
14
|
+
* So the order of two of these texts is the order of their cluster times.
|
|
15
|
+
*/
|
|
16
|
+
export function clusterTimeOfToken(token) {
|
|
17
|
+
const data = typeof token === "object" && token !== null ? token._data : undefined;
|
|
18
|
+
if (typeof data !== "string" || !data.startsWith(TIMESTAMP_TYPE) || !/^[0-9a-f]{16}$/i.test(data.slice(2, 18)))
|
|
19
|
+
return undefined;
|
|
20
|
+
return data.slice(2, 18).toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
/** This function tells if `next` is later than `before`. A token without a cluster time moves when it is a different token. */
|
|
23
|
+
function moves(next, before) {
|
|
24
|
+
if (next === undefined || next === null)
|
|
25
|
+
return false;
|
|
26
|
+
if (before === undefined || before === null)
|
|
27
|
+
return true;
|
|
28
|
+
const nextTime = clusterTimeOfToken(next);
|
|
29
|
+
const beforeTime = clusterTimeOfToken(before);
|
|
30
|
+
if (nextTime !== undefined && beforeTime !== undefined)
|
|
31
|
+
return nextTime > beforeTime;
|
|
32
|
+
return JSON.stringify(next) !== JSON.stringify(before);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* This function starts the age of the token of one watcher at the time of the clock.
|
|
36
|
+
*
|
|
37
|
+
* @param clock - The clock of the watcher
|
|
38
|
+
* @param start - The start token of the watcher, or undefined. A later token moves the age.
|
|
39
|
+
*/
|
|
40
|
+
export function tokenAge(clock, start) {
|
|
41
|
+
let last = start;
|
|
42
|
+
let movedAt = clock.now();
|
|
43
|
+
return {
|
|
44
|
+
note(token) {
|
|
45
|
+
if (!moves(token, last))
|
|
46
|
+
return;
|
|
47
|
+
last = token;
|
|
48
|
+
movedAt = clock.now();
|
|
49
|
+
},
|
|
50
|
+
ageMs() {
|
|
51
|
+
return clock.now() - movedAt;
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=token-age.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-age.js","sourceRoot":"","sources":["../../src/storage/token-age.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,4FAA4F;AAC5F,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC;AAED,+HAA+H;AAC/H,SAAS,KAAK,CAAC,IAAa,EAAE,MAAe;IAC3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,QAAQ,GAAG,UAAU,CAAC;IACrF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAY,EAAE,KAAe;IACpD,IAAI,IAAI,GAAY,KAAK,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO;QACL,IAAI,CAAC,KAAc;YACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,OAAO;YAChC,IAAI,GAAG,KAAK,CAAC;YACb,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@procedures/mongo",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.53.1",
|
|
5
5
|
"description": "MongoDB as typed procedures: documents, bulk writes, distinct, explain, collections, indexes, aggregation, change streams and database info, with safe update and delete targets.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"mongodb",
|
|
@@ -64,12 +64,11 @@
|
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@mark1russell7/cue": "^2.1.1",
|
|
67
|
-
"@mark1russell7/rigor-bench": "^0.2.
|
|
67
|
+
"@mark1russell7/rigor-bench": "^0.2.33",
|
|
68
68
|
"@mark1russell7/rigor-generators": "^0.1.5",
|
|
69
69
|
"@mark1russell7/rigor-statistics": "^0.1.9",
|
|
70
|
-
"@
|
|
71
|
-
"@procedures/
|
|
72
|
-
"@procedures/store": "0.52.2",
|
|
70
|
+
"@procedures/peer": "0.53.1",
|
|
71
|
+
"@procedures/store": "0.53.1",
|
|
73
72
|
"@types/node": "^22.0.0",
|
|
74
73
|
"typescript": "^7.0.2",
|
|
75
74
|
"vitest": "^5.0.3"
|
|
@@ -78,10 +77,13 @@
|
|
|
78
77
|
"procedures": "./dist/register.js"
|
|
79
78
|
},
|
|
80
79
|
"dependencies": {
|
|
81
|
-
"@
|
|
82
|
-
"@procedures/
|
|
80
|
+
"@mark1russell7/collections": "^0.10.0",
|
|
81
|
+
"@procedures/client": "0.53.1",
|
|
82
|
+
"@procedures/collections": "0.53.1",
|
|
83
|
+
"@mark1russell7/service": "^0.8.3",
|
|
83
84
|
"mongodb": "^7.0.0",
|
|
84
|
-
"zod": "^4.6.5"
|
|
85
|
+
"zod": "^4.6.5",
|
|
86
|
+
"@mark1russell7/text": "^0.0.2"
|
|
85
87
|
},
|
|
86
88
|
"scripts": {
|
|
87
89
|
"build": "tsc -b",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
*/
|
|
41
41
|
import type { ChangeStream, ChangeStreamDocument, ChangeStreamOptions, Db, Document, ResumeToken, Timestamp } from "mongodb";
|
|
42
42
|
import { realClock, writeLog, type Cancel, type Clock, type LogFields, type Logger, type ResubscribeBackoff } from "@procedures/client";
|
|
43
|
+
import { tokenAge } from "./token-age.js";
|
|
43
44
|
import { COMMAND_NOT_FOUND, LOST_TOKEN_CODES, backoffOf, codeOf, isPermanent, messageOf } from "./storage-hints.js";
|
|
44
45
|
import { SAME_TOKEN_LIMIT, SPLIT_LARGE_EVENT_STAGE, UNKNOWN_STAGE_CODE, eventJoiner, sameTokenFaults } from "./split-events.js";
|
|
45
46
|
|
|
@@ -105,6 +106,11 @@ export interface DatabaseChangesWatch {
|
|
|
105
106
|
readonly resumeToken: ResumeToken | undefined;
|
|
106
107
|
/** True after `stop()`, an abort of `signal`, or an error that stops the watcher. */
|
|
107
108
|
readonly stopped: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* The milliseconds of `clock` since `resumeToken` last moved to a later cluster time, or since the start before the first move.
|
|
111
|
+
* The same cluster time again does not move it. A large value on an open watcher tells a stalled feed (roadmap CLI-110).
|
|
112
|
+
*/
|
|
113
|
+
readonly tokenAgeMs: number;
|
|
108
114
|
/** This method stops the watcher: it closes the stream and cancels the timer of a backoff. */
|
|
109
115
|
stop(): Promise<void>;
|
|
110
116
|
}
|
|
@@ -137,7 +143,7 @@ function collectionOf(change: Document): unknown {
|
|
|
137
143
|
*
|
|
138
144
|
* @param db - The database, or a function that gives it
|
|
139
145
|
* @param options - The handlers, the start of the stream, its options, the backoff, the logger and the signal
|
|
140
|
-
* @returns The handle: `ready`, `resumeToken`, `stopped` and `stop()`
|
|
146
|
+
* @returns The handle: `ready`, `resumeToken`, `stopped`, `tokenAgeMs` and `stop()`
|
|
141
147
|
*
|
|
142
148
|
* @example
|
|
143
149
|
* ```typescript
|
|
@@ -172,6 +178,7 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
|
|
|
172
178
|
let stopped = false;
|
|
173
179
|
/** The token of the last change that `onChange` took, or of the last batch without events. */
|
|
174
180
|
let token: ResumeToken | undefined = options.startAfter ?? options.resumeAfter;
|
|
181
|
+
const age = tokenAge(clock, token);
|
|
175
182
|
/** True after a stream was open. */
|
|
176
183
|
let opened = false;
|
|
177
184
|
/** True after the server said that it has change streams. */
|
|
@@ -266,7 +273,10 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
|
|
|
266
273
|
if (raw === null) {
|
|
267
274
|
// A batch without events: its token is after each event that `onChange` took. In the middle of a split event, the token stays before it
|
|
268
275
|
const batchToken = next.resumeToken;
|
|
269
|
-
if (!joiner.partial && batchToken !== undefined && batchToken !== null)
|
|
276
|
+
if (!joiner.partial && batchToken !== undefined && batchToken !== null) {
|
|
277
|
+
token = batchToken;
|
|
278
|
+
age.note(token);
|
|
279
|
+
}
|
|
270
280
|
succeeded();
|
|
271
281
|
continue;
|
|
272
282
|
}
|
|
@@ -278,6 +288,7 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
|
|
|
278
288
|
const change = result.change as TChange;
|
|
279
289
|
if (change["operationType"] === "invalidate") {
|
|
280
290
|
token = change["_id"];
|
|
291
|
+
age.note(token);
|
|
281
292
|
return fail(Object.assign(new Error(`the change stream of the database ${database ?? ""} was invalidated`), { change }), { operationType: "invalidate" });
|
|
282
293
|
}
|
|
283
294
|
try {
|
|
@@ -286,6 +297,7 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
|
|
|
286
297
|
throw new HandlerError(error, change);
|
|
287
298
|
}
|
|
288
299
|
token = change["_id"];
|
|
300
|
+
age.note(token);
|
|
289
301
|
faults.reset();
|
|
290
302
|
succeeded();
|
|
291
303
|
}
|
|
@@ -354,7 +366,11 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
|
|
|
354
366
|
continue;
|
|
355
367
|
}
|
|
356
368
|
// A fault before the first event of a stream with no token: the next stream starts at the first token of this stream (CLI-107)
|
|
357
|
-
if (token === undefined && !gaveEvent && openToken !== undefined)
|
|
369
|
+
if (token === undefined && !gaveEvent && openToken !== undefined) {
|
|
370
|
+
token = openToken;
|
|
371
|
+
// The server gave this token, so it moves the age as each other token of the watcher does (CLI-110)
|
|
372
|
+
age.note(token);
|
|
373
|
+
}
|
|
358
374
|
const code = codeOf(error);
|
|
359
375
|
if (code !== undefined && LOST_TOKEN_CODES.has(code)) return fail(error, { code });
|
|
360
376
|
if (code === UNKNOWN_STAGE_CODE && split) {
|
|
@@ -411,6 +427,9 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
|
|
|
411
427
|
get stopped(): boolean {
|
|
412
428
|
return stopped;
|
|
413
429
|
},
|
|
430
|
+
get tokenAgeMs(): number {
|
|
431
|
+
return age.ageMs();
|
|
432
|
+
},
|
|
414
433
|
stop,
|
|
415
434
|
};
|
|
416
435
|
}
|
|
@@ -119,11 +119,13 @@ import {
|
|
|
119
119
|
type StorageWriteOptions,
|
|
120
120
|
type VersionConflict,
|
|
121
121
|
} from "@procedures/collections";
|
|
122
|
-
import {
|
|
122
|
+
import { semaphore, type Semaphore } from "@mark1russell7/collections";
|
|
123
|
+
import { optionalMs, toMs, type Duration } from "@procedures/client";
|
|
123
124
|
import { ensureConnection } from "../connection.js";
|
|
124
125
|
import { noteOwnNumbers, notePrunedIds, ownerOf } from "./own-writes.js";
|
|
125
126
|
import { boundPipeline, cutResults, DEFAULT_PIPELINE_LIMITS, scopePipeline, type PipelineLimits } from "./pipeline-scope.js";
|
|
126
127
|
import { CHANGE_READ_DIVISOR, poolShare } from "./pool-share.js";
|
|
128
|
+
import { escapeRegExp as escapeRegex } from "@mark1russell7/text";
|
|
127
129
|
|
|
128
130
|
/** The fields of the storage in a stored document. */
|
|
129
131
|
const KEY = "_key";
|
|
@@ -349,8 +351,8 @@ function enqueueWrite<R>(db: Db, name: string, task: () => Promise<R>): Promise<
|
|
|
349
351
|
function withReadPermit<R>(db: Db, task: () => Promise<R>): Promise<R> {
|
|
350
352
|
const owner = ownerOf(db);
|
|
351
353
|
let reads = READS.get(owner);
|
|
352
|
-
if (!reads) READS.set(owner, (reads =
|
|
353
|
-
return reads.
|
|
354
|
+
if (!reads) READS.set(owner, (reads = semaphore(poolShare(db, CHANGE_READ_DIVISOR))));
|
|
355
|
+
return reads.run(task);
|
|
354
356
|
}
|
|
355
357
|
|
|
356
358
|
/**
|
|
@@ -559,6 +561,20 @@ export interface RawStorageWrite {
|
|
|
559
561
|
/** The result of an adoption: `adopted`, `lost` (the document changed since: another adoption or write won), or `unknown` (no image and no stored `_id` tells the id and the partition). */
|
|
560
562
|
export type RawAdoption = "adopted" | "lost" | "unknown";
|
|
561
563
|
|
|
564
|
+
/**
|
|
565
|
+
* The key of a stored `_id` in a map: its extended JSON. Two object ids with other fields are two
|
|
566
|
+
* keys, and an `ObjectId` and its hex text are two keys too (audit 2026-11-08).
|
|
567
|
+
*/
|
|
568
|
+
function storedIdKey(id: unknown): string {
|
|
569
|
+
return BSON.EJSON.stringify({ v: id as never }, { relaxed: false });
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/** The order of two stored `_id` values of one place: two texts by their text, else by their keys. */
|
|
573
|
+
function idOrder(a: unknown, b: unknown, keyA: string, keyB: string): number {
|
|
574
|
+
const [x, y] = typeof a === "string" && typeof b === "string" ? [a, b] : [keyA, keyB];
|
|
575
|
+
return x < y ? -1 : x > y ? 1 : 0;
|
|
576
|
+
}
|
|
577
|
+
|
|
562
578
|
/** True when two values have the same BSON. */
|
|
563
579
|
function sameBson(a: unknown, b: unknown): boolean {
|
|
564
580
|
try {
|
|
@@ -574,10 +590,6 @@ export type RawAdoptionResult = RawAdoption | { readonly error: unknown };
|
|
|
574
590
|
/** The most floor documents that `partitions()` reads. */
|
|
575
591
|
const MAX_KNOWN_PARTITIONS = 10_000;
|
|
576
592
|
|
|
577
|
-
function escapeRegex(text: string): string {
|
|
578
|
-
return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
579
|
-
}
|
|
580
|
-
|
|
581
593
|
/** The reader of the parts of a storage. The class sets it, so it can read its private fields. */
|
|
582
594
|
let sourceOfStorage: <T>(storage: MongoDocumentStorage<T>) => StorageChangeSource;
|
|
583
595
|
|
|
@@ -1398,13 +1410,16 @@ export class MongoDocumentStorage<T> implements CollectionStorage<T> {
|
|
|
1398
1410
|
|
|
1399
1411
|
/** The listed documents with later documents over them, in the order of the entries. A tombstone removes its document. */
|
|
1400
1412
|
private withLaterDocs(listed: readonly Document[], later: readonly Document[]): Document[] {
|
|
1401
|
-
|
|
1402
|
-
const
|
|
1413
|
+
// The key knows the type of the `_id`: before, `String()` gave each object `_id` one key
|
|
1414
|
+
const keyOf = (doc: Document): string => storedIdKey(doc["_id"]);
|
|
1415
|
+
const docs = new Map(listed.map((doc) => [keyOf(doc), doc]));
|
|
1403
1416
|
for (const doc of later) {
|
|
1404
|
-
if (doc[TOMB] === true) docs.delete(
|
|
1405
|
-
else docs.set(
|
|
1417
|
+
if (doc[TOMB] === true) docs.delete(keyOf(doc));
|
|
1418
|
+
else docs.set(keyOf(doc), doc);
|
|
1406
1419
|
}
|
|
1407
|
-
return [...docs
|
|
1420
|
+
return [...docs]
|
|
1421
|
+
.sort(([keyA, a], [keyB, b]) => this.placeOf(a) - this.placeOf(b) || idOrder(a["_id"], b["_id"], keyA, keyB))
|
|
1422
|
+
.map(([, doc]) => doc);
|
|
1408
1423
|
}
|
|
1409
1424
|
|
|
1410
1425
|
async getChangesSince(since?: string): Promise<StorageChanges<T>> {
|
|
@@ -58,8 +58,10 @@
|
|
|
58
58
|
|
|
59
59
|
import { createHash } from "node:crypto";
|
|
60
60
|
import { isDeepStrictEqual } from "node:util";
|
|
61
|
+
import { backoffDelay, type Backoff } from "@mark1russell7/service/backoff";
|
|
61
62
|
import { BSON, ObjectId, type AnyBulkWriteOperation, type ChangeStream, type ClientSession, type Collection, type Db, type Document } from "mongodb";
|
|
62
|
-
import {
|
|
63
|
+
import { semaphore, type Semaphore } from "@mark1russell7/collections";
|
|
64
|
+
import { collectionChangeTopic, ms, optionalMs, realClock, writeLog, type Cancel, type Clock, type CollectionChangeEvent, type Duration, type LogFields, type Logger } from "@procedures/client";
|
|
63
65
|
import { DEFAULT_STORED_FORM, DOCUMENT_STORAGE_FIELDS, MongoDocumentStorage, TOMBSTONE_FIELD, storageWriteTarget, type StorageWriteTarget, type StoredForm } from "./document-storage.js";
|
|
64
66
|
import { scopePipeline } from "./pipeline-scope.js";
|
|
65
67
|
import { poolShare } from "./pool-share.js";
|
|
@@ -309,6 +311,12 @@ function groups<T>(items: readonly T[]): T[][] {
|
|
|
309
311
|
/** The most tries of a run in a transaction after a write conflict (code 112). After them, the run gives way, and comes back after `rewatch`. */
|
|
310
312
|
const CONFLICT_RETRIES = 3;
|
|
311
313
|
|
|
314
|
+
/**
|
|
315
|
+
* The wait before try `attempt + 1` after a write conflict: from 50 to 100 ms after the first try, twice as long after each
|
|
316
|
+
* next try. The jitter keeps two processes that conflict apart.
|
|
317
|
+
*/
|
|
318
|
+
export const CONFLICT_BACKOFF: Backoff = { base: 100, factor: 2, jitter: { kind: "subtract", fraction: 0.5 } };
|
|
319
|
+
|
|
312
320
|
/** The most ids of a hint of a target not in a stored form. More ids give a reset hint. */
|
|
313
321
|
const MAX_HINT_IDS = 10_000;
|
|
314
322
|
|
|
@@ -490,7 +498,7 @@ export class ViewMaterializer {
|
|
|
490
498
|
/** The time of the last change of each partition with a timer: the end of the wait of the pass. */
|
|
491
499
|
private readonly lastChange = new Map<string, number>();
|
|
492
500
|
/** The passes that run at one time. A burst that reaches each partition does not fill the pool. */
|
|
493
|
-
private passes =
|
|
501
|
+
private passes: Semaphore = semaphore(MOST_PASSES);
|
|
494
502
|
/** The timers of the streams that open again, and of the ends of the grace times. */
|
|
495
503
|
private readonly retries = new Set<Cancel>();
|
|
496
504
|
private readonly clock: Clock;
|
|
@@ -641,7 +649,7 @@ export class ViewMaterializer {
|
|
|
641
649
|
this.stopped = false;
|
|
642
650
|
this.intake = true;
|
|
643
651
|
this.db = await this.options.db();
|
|
644
|
-
this.passes =
|
|
652
|
+
this.passes = semaphore(passLimit(this.db));
|
|
645
653
|
// The stream of the views opens before the read of the views: a change between the two reaches both (roadmap O63)
|
|
646
654
|
await this.watchViews();
|
|
647
655
|
const count = await this.resync();
|
|
@@ -1093,7 +1101,7 @@ export class ViewMaterializer {
|
|
|
1093
1101
|
this.timers.delete(partition);
|
|
1094
1102
|
this.lastChange.delete(partition);
|
|
1095
1103
|
if (!this.intake) return;
|
|
1096
|
-
void this.serial(partition, () => this.passes.
|
|
1104
|
+
void this.serial(partition, () => this.passes.run(() => this.pass(partition))).catch((error: unknown) =>
|
|
1097
1105
|
this.log("error", "The pass failed", { partition, error }, `the pass of ${partition} failed: ${String((error as Error)?.message ?? error)}`)
|
|
1098
1106
|
);
|
|
1099
1107
|
});
|
|
@@ -1220,7 +1228,7 @@ export class ViewMaterializer {
|
|
|
1220
1228
|
if (isWriteConflict(error)) {
|
|
1221
1229
|
// A write conflict tries again a few times after a short wait, so a steady stream of writes does not starve the view
|
|
1222
1230
|
if (attempt < CONFLICT_RETRIES) {
|
|
1223
|
-
await this.pause(
|
|
1231
|
+
await this.pause(backoffDelay(CONFLICT_BACKOFF, attempt));
|
|
1224
1232
|
continue;
|
|
1225
1233
|
}
|
|
1226
1234
|
throw new PassSuperseded(`another process wrote the view at the same time (${String((error as Error)?.message ?? error)})`);
|