@procedures/mongo 0.49.1 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/storage/database-changes.d.ts +2 -0
- package/dist/storage/database-changes.d.ts.map +1 -1
- package/dist/storage/database-changes.js +18 -0
- package/dist/storage/database-changes.js.map +1 -1
- package/dist/storage/document-storage.d.ts +13 -1
- package/dist/storage/document-storage.d.ts.map +1 -1
- package/dist/storage/document-storage.js +68 -43
- package/dist/storage/document-storage.js.map +1 -1
- package/package.json +6 -5
- package/src/storage/database-changes.ts +17 -0
- package/src/storage/document-storage.ts +67 -56
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* - The resume token is the `_id` of the last event, after its `onChange` resolved. A batch without
|
|
13
13
|
* events gives the token of the batch (the post-batch resume token). `resumeToken` of the handle
|
|
14
14
|
* gives the token at this time.
|
|
15
|
+
* - A stream that fails before its first event keeps the first token of its open. The next stream
|
|
16
|
+
* starts at that token, so a change after `ready` is not lost.
|
|
15
17
|
* - After an error of the stream, the watcher waits for the backoff. Then it opens the stream again
|
|
16
18
|
* with `startAfter` and the token. Thus it loses no change and gives no change twice.
|
|
17
19
|
* - An error of `onChange` has the same backoff. The token stays at the change before, so the same
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-changes.d.ts","sourceRoot":"","sources":["../../src/storage/database-changes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"database-changes.d.ts","sourceRoot":"","sources":["../../src/storage/database-changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,KAAK,EAAgB,oBAAoB,EAAE,mBAAmB,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7H,OAAO,EAAoC,KAAK,KAAK,EAAkB,KAAK,MAAM,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxI,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B,CAAC,OAAO,SAAS,QAAQ,GAAG,oBAAoB;IAC1F;;;OAGG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACjD,qIAAqI;IACrI,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,qGAAqG;IACrG,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7C,8FAA8F;IAC9F,YAAY,CAAC,EAAE,cAAc,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;IACzE,iGAAiG;IACjG,wBAAwB,CAAC,EAAE,eAAe,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5E,yFAAyF;IACzF,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,qGAAqG;IACrG,aAAa,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,GAAG,sBAAsB,GAAG,cAAc,GAAG,0BAA0B,CAAC,GAAG,SAAS,CAAC;IAC3J;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACzC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,2GAA2G;IAC3G,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC3B;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kKAAkK;IAClK,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9C,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8FAA8F;IAC9F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,QAAQ,GAAG,oBAAoB,EAClF,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,EACjC,OAAO,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC5C,oBAAoB,CA6PtB"}
|
|
@@ -64,6 +64,12 @@ export function watchDatabaseChanges(db, options) {
|
|
|
64
64
|
let attempt = 0;
|
|
65
65
|
let database;
|
|
66
66
|
let stream;
|
|
67
|
+
/**
|
|
68
|
+
* The first token of the open stream, and true after the stream gives its first event. A fault before
|
|
69
|
+
* the first event, with no other token, opens the next stream at this token, so no change is lost.
|
|
70
|
+
*/
|
|
71
|
+
let openToken;
|
|
72
|
+
let gaveEvent = false;
|
|
67
73
|
/** True while the pipeline ends with the split stage. A server that does not know the stage sets it to false. */
|
|
68
74
|
let split = options.splitLargeEvents !== false;
|
|
69
75
|
const faults = sameTokenFaults();
|
|
@@ -140,6 +146,8 @@ export function watchDatabaseChanges(db, options) {
|
|
|
140
146
|
if (stopped)
|
|
141
147
|
return;
|
|
142
148
|
markOpen();
|
|
149
|
+
if (raw !== null)
|
|
150
|
+
gaveEvent = true;
|
|
143
151
|
if (raw === null) {
|
|
144
152
|
// 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
|
|
145
153
|
const batchToken = next.resumeToken;
|
|
@@ -215,8 +223,15 @@ export function watchDatabaseChanges(db, options) {
|
|
|
215
223
|
...start(),
|
|
216
224
|
});
|
|
217
225
|
stream = next;
|
|
226
|
+
openToken = undefined;
|
|
227
|
+
gaveEvent = false;
|
|
218
228
|
// The first token of the stream comes with the answer of the server: the stream is open, before the first getMore
|
|
219
229
|
next.on("resumeTokenChanged", markOpen);
|
|
230
|
+
// The driver also gives the token of each event before onChange takes it, so only a token before the first event is kept
|
|
231
|
+
next.once("resumeTokenChanged", (first) => {
|
|
232
|
+
if (!gaveEvent && first !== null && first !== undefined)
|
|
233
|
+
openToken = first;
|
|
234
|
+
});
|
|
220
235
|
try {
|
|
221
236
|
await read(next);
|
|
222
237
|
}
|
|
@@ -237,6 +252,9 @@ export function watchDatabaseChanges(db, options) {
|
|
|
237
252
|
});
|
|
238
253
|
continue;
|
|
239
254
|
}
|
|
255
|
+
// 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)
|
|
256
|
+
if (token === undefined && !gaveEvent && openToken !== undefined)
|
|
257
|
+
token = openToken;
|
|
240
258
|
const code = codeOf(error);
|
|
241
259
|
if (code !== undefined && LOST_TOKEN_CODES.has(code))
|
|
242
260
|
return fail(error, { code });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-changes.js","sourceRoot":"","sources":["../../src/storage/database-changes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database-changes.js","sourceRoot":"","sources":["../../src/storage/database-changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
* it. One case stays on a single server: a process that stops between such a late write and the
|
|
70
70
|
* move of its documents. Then a reader that passed the old numbers does not get that change.
|
|
71
71
|
* - A reader can get a write two times, with the same value or a later value. A full answer takes
|
|
72
|
-
* its mark
|
|
72
|
+
* its mark after it lists the items, and it can hold a write above its mark, so the next delta
|
|
73
73
|
* gives the write again. A reader can also read a late write at its old numbers, and then the move
|
|
74
74
|
* gives the write new numbers and a new version. The second case occurs only for a write that ends
|
|
75
75
|
* after `writeLease`.
|
|
@@ -536,6 +536,18 @@ export declare class MongoDocumentStorage<T> implements CollectionStorage<T> {
|
|
|
536
536
|
* of `versionOfStored()` of the stored document (roadmap CLI-77): the two share one rule.
|
|
537
537
|
*/
|
|
538
538
|
versionOf(id: string): Promise<string | undefined>;
|
|
539
|
+
/**
|
|
540
|
+
* This method gives a full result. An event with values can land between the first mark and the
|
|
541
|
+
* list, so the first mark is not a version that this list can have. The method takes a second mark
|
|
542
|
+
* after the list and reads the rows between the two marks. The second mark is the version.
|
|
543
|
+
*
|
|
544
|
+
* That read stops at the second mark. A row past the mark keeps the value of the list, and its later
|
|
545
|
+
* value comes after this result, in order. So the value of an id does not go back at a subscriber.
|
|
546
|
+
* The cost is one more aggregate for each full result, and two more finds when the mark moved.
|
|
547
|
+
*/
|
|
548
|
+
private fullResult;
|
|
549
|
+
/** The listed documents with later documents over them, in the order of the entries. A tombstone removes its document. */
|
|
550
|
+
private withLaterDocs;
|
|
539
551
|
getChangesSince(since?: string): Promise<StorageChanges<T>>;
|
|
540
552
|
private write;
|
|
541
553
|
set(id: string, value: T, options?: StorageItemWriteOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-storage.d.ts","sourceRoot":"","sources":["../../src/storage/document-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AAIH,OAAO,EAAyE,KAAK,EAAE,EAAE,KAAK,QAAQ,EAAe,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AACvJ,OAAO,EAML,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAqE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgB7H,mEAAmE;AACnE,eAAO,MAAM,SAAS,WAAW,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAA+E,CAAC;AAErI,8HAA8H;AAC9H,eAAO,MAAM,eAAe,EAAE,OAAc,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7D,kHAAkH;IAClH,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3E;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF;;;;;;;OAOG;IACH,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAmBhC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B,CAAC,CAAC,GAAG,OAAO;IACtD,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1C,gHAAgH;IAChH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kEAAkE;IAClE,WAAW,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC7C,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;IAChE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC5C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"document-storage.d.ts","sourceRoot":"","sources":["../../src/storage/document-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
* it. One case stays on a single server: a process that stops between such a late write and the
|
|
70
70
|
* move of its documents. Then a reader that passed the old numbers does not get that change.
|
|
71
71
|
* - A reader can get a write two times, with the same value or a later value. A full answer takes
|
|
72
|
-
* its mark
|
|
72
|
+
* its mark after it lists the items, and it can hold a write above its mark, so the next delta
|
|
73
73
|
* gives the write again. A reader can also read a late write at its old numbers, and then the move
|
|
74
74
|
* gives the write new numbers and a new version. The second case occurs only for a write that ends
|
|
75
75
|
* after `writeLease`.
|
|
@@ -185,57 +185,41 @@ function hasTransactions(db) {
|
|
|
185
185
|
}
|
|
186
186
|
/** The most moves of a late write to new numbers. */
|
|
187
187
|
const MAX_MOVES = 10;
|
|
188
|
+
/** The most lists of one full result, when a prune or a new epoch passes its marks. */
|
|
189
|
+
const MOST_FULL_TRIES = 3;
|
|
188
190
|
/**
|
|
189
|
-
* The
|
|
190
|
-
*
|
|
191
|
-
* order of the calls. A change read
|
|
192
|
-
*
|
|
191
|
+
* The end of the last write of each collection: by the client, then by the names of the database and the collection.
|
|
192
|
+
* These promises do not reject. A new `Db` object of the same client has the same queue (roadmap CLI-93). A write goes
|
|
193
|
+
* alone, in the order of the calls. A change read is not in this queue (roadmap CLI-102). The mark of a read stops
|
|
194
|
+
* below each write in flight, so a read does not need the end of a write of this process.
|
|
193
195
|
*/
|
|
194
196
|
const QUEUES = new WeakMap();
|
|
195
197
|
/** The change reads of each client at one time. A burst of reads leaves the pool to the other operations. */
|
|
196
198
|
const READS = new WeakMap();
|
|
197
|
-
function
|
|
199
|
+
/** This function starts a write after each earlier write of the collection. */
|
|
200
|
+
function enqueueWrite(db, name, task) {
|
|
198
201
|
const owner = ownerOf(db);
|
|
199
202
|
let queues = QUEUES.get(owner);
|
|
200
203
|
if (!queues)
|
|
201
204
|
QUEUES.set(owner, (queues = new Map()));
|
|
202
205
|
const collection = `${db.databaseName}\u0000${name}`;
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
void end.then(() => {
|
|
211
|
-
if (queue.all === end && queues.get(collection) === queue)
|
|
212
|
-
queues.delete(collection);
|
|
206
|
+
const run = (queues.get(collection) ?? Promise.resolve()).then(task);
|
|
207
|
+
const settled = run.then(() => undefined, () => undefined);
|
|
208
|
+
const known = queues;
|
|
209
|
+
known.set(collection, settled);
|
|
210
|
+
void settled.then(() => {
|
|
211
|
+
if (known.get(collection) === settled)
|
|
212
|
+
known.delete(collection);
|
|
213
213
|
});
|
|
214
|
-
}
|
|
215
|
-
const settledOf = (run) => run.then(() => undefined, () => undefined);
|
|
216
|
-
/** This function starts a write after each earlier write and change read of the collection. */
|
|
217
|
-
function enqueueWrite(db, name, task) {
|
|
218
|
-
const { queues, collection, queue } = queueOf(db, name);
|
|
219
|
-
const run = queue.all.then(task);
|
|
220
|
-
const settled = settledOf(run);
|
|
221
|
-
queue.all = settled;
|
|
222
|
-
queue.writes = settled;
|
|
223
|
-
dropWhenLast(queues, collection, queue, settled);
|
|
224
214
|
return run;
|
|
225
215
|
}
|
|
226
|
-
/** This function starts a change read
|
|
227
|
-
function
|
|
228
|
-
const { queues, collection, queue } = queueOf(db, name);
|
|
216
|
+
/** This function starts a change read within the share of the client. The read waits for no write. */
|
|
217
|
+
function withReadPermit(db, task) {
|
|
229
218
|
const owner = ownerOf(db);
|
|
230
219
|
let reads = READS.get(owner);
|
|
231
220
|
if (!reads)
|
|
232
221
|
READS.set(owner, (reads = new Semaphore(poolShare(db, CHANGE_READ_DIVISOR))));
|
|
233
|
-
|
|
234
|
-
const run = queue.writes.then(() => permits.withPermit(task));
|
|
235
|
-
const end = Promise.all([queue.all, settledOf(run)]);
|
|
236
|
-
queue.all = end;
|
|
237
|
-
dropWhenLast(queues, collection, queue, end);
|
|
238
|
-
return run;
|
|
222
|
+
return reads.withPermit(task);
|
|
239
223
|
}
|
|
240
224
|
/**
|
|
241
225
|
* True for a value of a field that BSON gives back as it is: a key with `$` or a dot stays as it is
|
|
@@ -1066,19 +1050,60 @@ export class MongoDocumentStorage {
|
|
|
1066
1050
|
// The filter finds the document by the stored `_id` of the id in the partition: it is the item
|
|
1067
1051
|
return doc ? seqVersion(doc) : undefined;
|
|
1068
1052
|
}
|
|
1053
|
+
/**
|
|
1054
|
+
* This method gives a full result. An event with values can land between the first mark and the
|
|
1055
|
+
* list, so the first mark is not a version that this list can have. The method takes a second mark
|
|
1056
|
+
* after the list and reads the rows between the two marks. The second mark is the version.
|
|
1057
|
+
*
|
|
1058
|
+
* That read stops at the second mark. A row past the mark keeps the value of the list, and its later
|
|
1059
|
+
* value comes after this result, in order. So the value of an id does not go back at a subscriber.
|
|
1060
|
+
* The cost is one more aggregate for each full result, and two more finds when the mark moved.
|
|
1061
|
+
*/
|
|
1062
|
+
async fullResult(db, items, first) {
|
|
1063
|
+
const result = (mark, docs) => ({
|
|
1064
|
+
version: `${mark.epoch}.${mark.seq}`,
|
|
1065
|
+
full: true,
|
|
1066
|
+
changed: this.decodeAll(docs),
|
|
1067
|
+
deleted: [],
|
|
1068
|
+
...(mark.held ? { held: true } : {}),
|
|
1069
|
+
});
|
|
1070
|
+
let mark = first;
|
|
1071
|
+
for (let tries = 1;; tries += 1) {
|
|
1072
|
+
const listed = await items.find(this.liveFilter()).sort({ [ORD]: 1, _id: 1 }).toArray();
|
|
1073
|
+
const after = await this.watermark(db);
|
|
1074
|
+
if (after.epoch === mark.epoch) {
|
|
1075
|
+
if (after.seq <= mark.seq)
|
|
1076
|
+
return result(mark, listed);
|
|
1077
|
+
const docs = await items.find({ ...this.partitionFilter(), [SEQ]: { $gt: mark.seq, $lte: after.seq } }).toArray();
|
|
1078
|
+
// A prune raises the floor before its delete, so a query that missed a tombstone sees the new floor here (roadmap CLI-93)
|
|
1079
|
+
if (mark.seq >= (await this.floorOf(db)))
|
|
1080
|
+
return result(after, this.withLaterDocs(listed, docs));
|
|
1081
|
+
}
|
|
1082
|
+
// The log does not tell the changes since this mark. Each later read from this version, an event too, gets a full result
|
|
1083
|
+
if (tries === MOST_FULL_TRIES)
|
|
1084
|
+
return result(mark, listed);
|
|
1085
|
+
mark = after;
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
/** The listed documents with later documents over them, in the order of the entries. A tombstone removes its document. */
|
|
1089
|
+
withLaterDocs(listed, later) {
|
|
1090
|
+
const idOf = (doc) => String(doc["_id"]);
|
|
1091
|
+
const docs = new Map(listed.map((doc) => [idOf(doc), doc]));
|
|
1092
|
+
for (const doc of later) {
|
|
1093
|
+
if (doc[TOMB] === true)
|
|
1094
|
+
docs.delete(idOf(doc));
|
|
1095
|
+
else
|
|
1096
|
+
docs.set(idOf(doc), doc);
|
|
1097
|
+
}
|
|
1098
|
+
return [...docs.values()].sort((a, b) => this.placeOf(a) - this.placeOf(b) || (idOf(a) < idOf(b) ? -1 : idOf(a) > idOf(b) ? 1 : 0));
|
|
1099
|
+
}
|
|
1069
1100
|
async getChangesSince(since) {
|
|
1070
1101
|
const { db, items } = await this.collection();
|
|
1071
|
-
return
|
|
1102
|
+
return withReadPermit(db, async () => {
|
|
1072
1103
|
const counter = await this.watermark(db);
|
|
1073
1104
|
const version = `${counter.epoch}.${counter.seq}`;
|
|
1074
1105
|
const held = counter.held ? { held: true } : {};
|
|
1075
|
-
const full =
|
|
1076
|
-
version,
|
|
1077
|
-
full: true,
|
|
1078
|
-
changed: this.decodeAll(await items.find(this.liveFilter()).sort({ [ORD]: 1, _id: 1 }).toArray()),
|
|
1079
|
-
deleted: [],
|
|
1080
|
-
...held,
|
|
1081
|
-
});
|
|
1106
|
+
const full = () => this.fullResult(db, items, counter);
|
|
1082
1107
|
const match = since === undefined ? null : /^([^.]+)\.(\d+)$/.exec(since);
|
|
1083
1108
|
if (!match || match[1] !== counter.epoch)
|
|
1084
1109
|
return full();
|