@powersync/service-module-mongodb-storage 0.12.0 → 0.12.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 +11 -0
- package/dist/storage/implementation/MongoChecksums.d.ts +34 -0
- package/dist/storage/implementation/MongoChecksums.js +274 -0
- package/dist/storage/implementation/MongoChecksums.js.map +1 -0
- package/dist/storage/implementation/MongoCompactor.d.ts +9 -2
- package/dist/storage/implementation/MongoCompactor.js +107 -32
- package/dist/storage/implementation/MongoCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +3 -3
- package/dist/storage/implementation/MongoSyncBucketStorage.js +12 -130
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +1 -1
- package/dist/storage/implementation/util.js.map +1 -1
- package/package.json +4 -4
- package/src/storage/implementation/MongoChecksums.ts +320 -0
- package/src/storage/implementation/MongoCompactor.ts +147 -56
- package/src/storage/implementation/MongoSyncBucketStorage.ts +14 -150
- package/src/storage/implementation/models.ts +1 -1
- package/src/storage/implementation/util.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @powersync/service-module-mongodb-storage
|
|
2
2
|
|
|
3
|
+
## 0.12.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6352283: Fix pre-computing of checksums after intial replication causing replication timeouts
|
|
8
|
+
- 6352283: Improve performance of the compact job
|
|
9
|
+
- Updated dependencies [6352283]
|
|
10
|
+
- Updated dependencies [6352283]
|
|
11
|
+
- @powersync/service-core@1.15.1
|
|
12
|
+
- @powersync/lib-service-mongodb@0.6.5
|
|
13
|
+
|
|
3
14
|
## 0.12.0
|
|
4
15
|
|
|
5
16
|
### Minor Changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChecksumMap, FetchPartialBucketChecksum, InternalOpId, PartialChecksumMap } from '@powersync/service-core';
|
|
2
|
+
import { PowerSyncMongo } from './db.js';
|
|
3
|
+
/**
|
|
4
|
+
* Checksum query implementation.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MongoChecksums {
|
|
7
|
+
private db;
|
|
8
|
+
private group_id;
|
|
9
|
+
private cache;
|
|
10
|
+
constructor(db: PowerSyncMongo, group_id: number);
|
|
11
|
+
/**
|
|
12
|
+
* Calculate checksums, utilizing the cache.
|
|
13
|
+
*/
|
|
14
|
+
getChecksums(checkpoint: InternalOpId, buckets: string[]): Promise<ChecksumMap>;
|
|
15
|
+
clearCache(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Calculate (partial) checksums from bucket_state and the data collection.
|
|
18
|
+
*
|
|
19
|
+
* Results are not cached.
|
|
20
|
+
*/
|
|
21
|
+
private getChecksumsInternal;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate (partial) checksums from the data collection directly.
|
|
24
|
+
*/
|
|
25
|
+
queryPartialChecksums(batch: FetchPartialBucketChecksum[]): Promise<PartialChecksumMap>;
|
|
26
|
+
private queryPartialChecksumsInternal;
|
|
27
|
+
/**
|
|
28
|
+
* Checksums for large buckets can run over the query timeout.
|
|
29
|
+
* To avoid this, we query in batches.
|
|
30
|
+
* This version can handle larger amounts of data, but is slower, especially for many buckets.
|
|
31
|
+
*/
|
|
32
|
+
queryPartialChecksumsFallback(batch: FetchPartialBucketChecksum[]): Promise<PartialChecksumMap>;
|
|
33
|
+
private slowChecksum;
|
|
34
|
+
}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { addPartialChecksums, bson, ChecksumCache, isPartialChecksum } from '@powersync/service-core';
|
|
2
|
+
import * as lib_mongo from '@powersync/lib-service-mongodb';
|
|
3
|
+
import { logger } from '@powersync/lib-services-framework';
|
|
4
|
+
/**
|
|
5
|
+
* Checksum query implementation.
|
|
6
|
+
*/
|
|
7
|
+
export class MongoChecksums {
|
|
8
|
+
db;
|
|
9
|
+
group_id;
|
|
10
|
+
cache = new ChecksumCache({
|
|
11
|
+
fetchChecksums: (batch) => {
|
|
12
|
+
return this.getChecksumsInternal(batch);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
constructor(db, group_id) {
|
|
16
|
+
this.db = db;
|
|
17
|
+
this.group_id = group_id;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Calculate checksums, utilizing the cache.
|
|
21
|
+
*/
|
|
22
|
+
async getChecksums(checkpoint, buckets) {
|
|
23
|
+
return this.cache.getChecksumMap(checkpoint, buckets);
|
|
24
|
+
}
|
|
25
|
+
clearCache() {
|
|
26
|
+
this.cache.clear();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Calculate (partial) checksums from bucket_state and the data collection.
|
|
30
|
+
*
|
|
31
|
+
* Results are not cached.
|
|
32
|
+
*/
|
|
33
|
+
async getChecksumsInternal(batch) {
|
|
34
|
+
if (batch.length == 0) {
|
|
35
|
+
return new Map();
|
|
36
|
+
}
|
|
37
|
+
const preFilters = [];
|
|
38
|
+
for (let request of batch) {
|
|
39
|
+
if (request.start == null) {
|
|
40
|
+
preFilters.push({
|
|
41
|
+
_id: {
|
|
42
|
+
g: this.group_id,
|
|
43
|
+
b: request.bucket
|
|
44
|
+
},
|
|
45
|
+
'compacted_state.op_id': { $exists: true, $lte: request.end }
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const preStates = new Map();
|
|
50
|
+
if (preFilters.length > 0) {
|
|
51
|
+
// For un-cached bucket checksums, attempt to use the compacted state first.
|
|
52
|
+
const states = await this.db.bucket_state
|
|
53
|
+
.find({
|
|
54
|
+
$or: preFilters
|
|
55
|
+
})
|
|
56
|
+
.toArray();
|
|
57
|
+
for (let state of states) {
|
|
58
|
+
const compactedState = state.compacted_state;
|
|
59
|
+
preStates.set(state._id.b, {
|
|
60
|
+
opId: compactedState.op_id,
|
|
61
|
+
checksum: {
|
|
62
|
+
bucket: state._id.b,
|
|
63
|
+
checksum: Number(compactedState.checksum),
|
|
64
|
+
count: compactedState.count
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const mappedRequests = batch.map((request) => {
|
|
70
|
+
let start = request.start;
|
|
71
|
+
if (start == null) {
|
|
72
|
+
const preState = preStates.get(request.bucket);
|
|
73
|
+
if (preState != null) {
|
|
74
|
+
start = preState.opId;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
...request,
|
|
79
|
+
start
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
const queriedChecksums = await this.queryPartialChecksums(mappedRequests);
|
|
83
|
+
return new Map(batch.map((request) => {
|
|
84
|
+
const bucket = request.bucket;
|
|
85
|
+
// Could be null if this is either (1) a partial request, or (2) no compacted checksum was available
|
|
86
|
+
const preState = preStates.get(bucket);
|
|
87
|
+
// Could be null if we got no data
|
|
88
|
+
const partialChecksum = queriedChecksums.get(bucket);
|
|
89
|
+
const merged = addPartialChecksums(bucket, preState?.checksum ?? null, partialChecksum ?? null);
|
|
90
|
+
return [bucket, merged];
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Calculate (partial) checksums from the data collection directly.
|
|
95
|
+
*/
|
|
96
|
+
async queryPartialChecksums(batch) {
|
|
97
|
+
try {
|
|
98
|
+
return await this.queryPartialChecksumsInternal(batch);
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
if (e.codeName == 'MaxTimeMSExpired') {
|
|
102
|
+
logger.warn(`Checksum query timed out; falling back to slower version`, e);
|
|
103
|
+
// Timeout - try the slower but more robust version
|
|
104
|
+
return await this.queryPartialChecksumsFallback(batch);
|
|
105
|
+
}
|
|
106
|
+
throw lib_mongo.mapQueryError(e, 'while reading checksums');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async queryPartialChecksumsInternal(batch) {
|
|
110
|
+
const filters = [];
|
|
111
|
+
for (let request of batch) {
|
|
112
|
+
filters.push({
|
|
113
|
+
_id: {
|
|
114
|
+
$gt: {
|
|
115
|
+
g: this.group_id,
|
|
116
|
+
b: request.bucket,
|
|
117
|
+
o: request.start ?? new bson.MinKey()
|
|
118
|
+
},
|
|
119
|
+
$lte: {
|
|
120
|
+
g: this.group_id,
|
|
121
|
+
b: request.bucket,
|
|
122
|
+
o: request.end
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const aggregate = await this.db.bucket_data
|
|
128
|
+
.aggregate([
|
|
129
|
+
{
|
|
130
|
+
$match: {
|
|
131
|
+
$or: filters
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
CHECKSUM_QUERY_GROUP_STAGE
|
|
135
|
+
], { session: undefined, readConcern: 'snapshot', maxTimeMS: lib_mongo.MONGO_CHECKSUM_TIMEOUT_MS })
|
|
136
|
+
// Don't map the error here - we want to keep timeout errors as-is
|
|
137
|
+
.toArray();
|
|
138
|
+
const partialChecksums = new Map(aggregate.map((doc) => {
|
|
139
|
+
const bucket = doc._id;
|
|
140
|
+
return [bucket, checksumFromAggregate(doc)];
|
|
141
|
+
}));
|
|
142
|
+
return new Map(batch.map((request) => {
|
|
143
|
+
const bucket = request.bucket;
|
|
144
|
+
// Could be null if we got no data
|
|
145
|
+
let partialChecksum = partialChecksums.get(bucket);
|
|
146
|
+
if (partialChecksum == null) {
|
|
147
|
+
partialChecksum = {
|
|
148
|
+
bucket,
|
|
149
|
+
partialCount: 0,
|
|
150
|
+
partialChecksum: 0
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
if (request.start == null && isPartialChecksum(partialChecksum)) {
|
|
154
|
+
partialChecksum = {
|
|
155
|
+
bucket,
|
|
156
|
+
count: partialChecksum.partialCount,
|
|
157
|
+
checksum: partialChecksum.partialChecksum
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return [bucket, partialChecksum];
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Checksums for large buckets can run over the query timeout.
|
|
165
|
+
* To avoid this, we query in batches.
|
|
166
|
+
* This version can handle larger amounts of data, but is slower, especially for many buckets.
|
|
167
|
+
*/
|
|
168
|
+
async queryPartialChecksumsFallback(batch) {
|
|
169
|
+
const partialChecksums = new Map();
|
|
170
|
+
for (let request of batch) {
|
|
171
|
+
const checksum = await this.slowChecksum(request);
|
|
172
|
+
partialChecksums.set(request.bucket, checksum);
|
|
173
|
+
}
|
|
174
|
+
return partialChecksums;
|
|
175
|
+
}
|
|
176
|
+
async slowChecksum(request) {
|
|
177
|
+
const batchLimit = 50_000;
|
|
178
|
+
let lowerBound = 0n;
|
|
179
|
+
const bucket = request.bucket;
|
|
180
|
+
let runningChecksum = {
|
|
181
|
+
bucket,
|
|
182
|
+
partialCount: 0,
|
|
183
|
+
partialChecksum: 0
|
|
184
|
+
};
|
|
185
|
+
if (request.start == null) {
|
|
186
|
+
runningChecksum = {
|
|
187
|
+
bucket,
|
|
188
|
+
count: 0,
|
|
189
|
+
checksum: 0
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
while (true) {
|
|
193
|
+
const filter = {
|
|
194
|
+
_id: {
|
|
195
|
+
$gt: {
|
|
196
|
+
g: this.group_id,
|
|
197
|
+
b: bucket,
|
|
198
|
+
o: lowerBound
|
|
199
|
+
},
|
|
200
|
+
$lte: {
|
|
201
|
+
g: this.group_id,
|
|
202
|
+
b: bucket,
|
|
203
|
+
o: request.end
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
const docs = await this.db.bucket_data
|
|
208
|
+
.aggregate([
|
|
209
|
+
{
|
|
210
|
+
$match: filter
|
|
211
|
+
},
|
|
212
|
+
// sort and limit _before_ grouping
|
|
213
|
+
{ $sort: { _id: 1 } },
|
|
214
|
+
{ $limit: batchLimit },
|
|
215
|
+
CHECKSUM_QUERY_GROUP_STAGE
|
|
216
|
+
], { session: undefined, readConcern: 'snapshot', maxTimeMS: lib_mongo.MONGO_CHECKSUM_TIMEOUT_MS })
|
|
217
|
+
.toArray();
|
|
218
|
+
const doc = docs[0];
|
|
219
|
+
if (doc == null) {
|
|
220
|
+
return runningChecksum;
|
|
221
|
+
}
|
|
222
|
+
const partial = checksumFromAggregate(doc);
|
|
223
|
+
runningChecksum = addPartialChecksums(bucket, runningChecksum, partial);
|
|
224
|
+
const isFinal = doc.count != batchLimit;
|
|
225
|
+
if (isFinal) {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
lowerBound = doc.last_op;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return runningChecksum;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const CHECKSUM_QUERY_GROUP_STAGE = {
|
|
236
|
+
$group: {
|
|
237
|
+
_id: '$_id.b',
|
|
238
|
+
// Historically, checksum may be stored as 'int' or 'double'.
|
|
239
|
+
// More recently, this should be a 'long'.
|
|
240
|
+
// $toLong ensures that we always sum it as a long, avoiding inaccuracies in the calculations.
|
|
241
|
+
checksum_total: { $sum: { $toLong: '$checksum' } },
|
|
242
|
+
count: { $sum: 1 },
|
|
243
|
+
has_clear_op: {
|
|
244
|
+
$max: {
|
|
245
|
+
$cond: [{ $eq: ['$op', 'CLEAR'] }, 1, 0]
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
last_op: { $max: '$_id.o' }
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* Convert output of CHECKSUM_QUERY_GROUP_STAGE into a checksum.
|
|
253
|
+
*/
|
|
254
|
+
function checksumFromAggregate(doc) {
|
|
255
|
+
const partialChecksum = Number(BigInt(doc.checksum_total) & 0xffffffffn) & 0xffffffff;
|
|
256
|
+
const bucket = doc._id;
|
|
257
|
+
if (doc.has_clear_op == 1) {
|
|
258
|
+
return {
|
|
259
|
+
// full checksum - replaces any previous one
|
|
260
|
+
bucket,
|
|
261
|
+
checksum: partialChecksum,
|
|
262
|
+
count: doc.count
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
return {
|
|
267
|
+
// partial checksum - is added to a previous one
|
|
268
|
+
bucket,
|
|
269
|
+
partialCount: doc.count,
|
|
270
|
+
partialChecksum
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=MongoChecksums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoChecksums.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoChecksums.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { storage } from '@powersync/service-core';
|
|
2
2
|
import { PowerSyncMongo } from './db.js';
|
|
3
|
+
import { MongoSyncBucketStorage } from './MongoSyncBucketStorage.js';
|
|
3
4
|
/**
|
|
4
5
|
* Additional options, primarily for testing.
|
|
5
6
|
*/
|
|
6
7
|
export interface MongoCompactOptions extends storage.CompactOptions {
|
|
7
8
|
}
|
|
8
9
|
export declare class MongoCompactor {
|
|
10
|
+
private storage;
|
|
9
11
|
private db;
|
|
10
|
-
private group_id;
|
|
11
12
|
private updates;
|
|
12
13
|
private bucketStateUpdates;
|
|
13
14
|
private idLimitBytes;
|
|
@@ -17,7 +18,8 @@ export declare class MongoCompactor {
|
|
|
17
18
|
private maxOpId;
|
|
18
19
|
private buckets;
|
|
19
20
|
private signal?;
|
|
20
|
-
|
|
21
|
+
private group_id;
|
|
22
|
+
constructor(storage: MongoSyncBucketStorage, db: PowerSyncMongo, options?: MongoCompactOptions);
|
|
21
23
|
/**
|
|
22
24
|
* Compact buckets by converting operations into MOVE and/or CLEAR operations.
|
|
23
25
|
*
|
|
@@ -38,4 +40,9 @@ export declare class MongoCompactor {
|
|
|
38
40
|
* @param op op_id of the last non-PUT operation, which will be converted to CLEAR.
|
|
39
41
|
*/
|
|
40
42
|
private clearBucket;
|
|
43
|
+
/**
|
|
44
|
+
* Subset of compact, only populating checksums where relevant.
|
|
45
|
+
*/
|
|
46
|
+
populateChecksums(): Promise<void>;
|
|
47
|
+
private updateChecksumsBatch;
|
|
41
48
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { mongo } from '@powersync/lib-service-mongodb';
|
|
1
|
+
import { mongo, MONGO_OPERATION_TIMEOUT_MS } from '@powersync/lib-service-mongodb';
|
|
2
2
|
import { logger, ReplicationAssertionError, ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
3
|
-
import { addChecksums, utils } from '@powersync/service-core';
|
|
3
|
+
import { addChecksums, isPartialChecksum, utils } from '@powersync/service-core';
|
|
4
4
|
import { cacheKey } from './OperationBatch.js';
|
|
5
|
-
import { readSingleBatch } from './util.js';
|
|
6
5
|
const DEFAULT_CLEAR_BATCH_LIMIT = 5000;
|
|
7
6
|
const DEFAULT_MOVE_BATCH_LIMIT = 2000;
|
|
8
7
|
const DEFAULT_MOVE_BATCH_QUERY_LIMIT = 10_000;
|
|
9
8
|
/** This default is primarily for tests. */
|
|
10
9
|
const DEFAULT_MEMORY_LIMIT_MB = 64;
|
|
11
10
|
export class MongoCompactor {
|
|
11
|
+
storage;
|
|
12
12
|
db;
|
|
13
|
-
group_id;
|
|
14
13
|
updates = [];
|
|
15
14
|
bucketStateUpdates = [];
|
|
16
15
|
idLimitBytes;
|
|
@@ -20,9 +19,11 @@ export class MongoCompactor {
|
|
|
20
19
|
maxOpId;
|
|
21
20
|
buckets;
|
|
22
21
|
signal;
|
|
23
|
-
|
|
22
|
+
group_id;
|
|
23
|
+
constructor(storage, db, options) {
|
|
24
|
+
this.storage = storage;
|
|
24
25
|
this.db = db;
|
|
25
|
-
this.group_id = group_id;
|
|
26
|
+
this.group_id = storage.group_id;
|
|
26
27
|
this.idLimitBytes = (options?.memoryLimitMB ?? DEFAULT_MEMORY_LIMIT_MB) * 1024 * 1024;
|
|
27
28
|
this.moveBatchLimit = options?.moveBatchLimit ?? DEFAULT_MOVE_BATCH_LIMIT;
|
|
28
29
|
this.moveBatchQueryLimit = options?.moveBatchQueryLimit ?? DEFAULT_MOVE_BATCH_QUERY_LIMIT;
|
|
@@ -80,6 +81,21 @@ export class MongoCompactor {
|
|
|
80
81
|
b: bucketUpper,
|
|
81
82
|
o: new mongo.MaxKey()
|
|
82
83
|
};
|
|
84
|
+
const doneWithBucket = async () => {
|
|
85
|
+
if (currentState == null) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Free memory before clearing bucket
|
|
89
|
+
currentState.seen.clear();
|
|
90
|
+
if (currentState.lastNotPut != null && currentState.opsSincePut >= 1) {
|
|
91
|
+
logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
|
|
92
|
+
// Need flush() before clear()
|
|
93
|
+
await this.flush();
|
|
94
|
+
await this.clearBucket(currentState);
|
|
95
|
+
}
|
|
96
|
+
// Do this _after_ clearBucket so that we have accurate counts.
|
|
97
|
+
this.updateBucketChecksums(currentState);
|
|
98
|
+
};
|
|
83
99
|
while (!this.signal?.aborted) {
|
|
84
100
|
// Query one batch at a time, to avoid cursor timeouts
|
|
85
101
|
const cursor = this.db.bucket_data.aggregate([
|
|
@@ -105,8 +121,10 @@ export class MongoCompactor {
|
|
|
105
121
|
size: { $bsonSize: '$$ROOT' }
|
|
106
122
|
}
|
|
107
123
|
}
|
|
108
|
-
]);
|
|
109
|
-
|
|
124
|
+
], { batchSize: this.moveBatchQueryLimit });
|
|
125
|
+
// We don't limit to a single batch here, since that often causes MongoDB to scan through more than it returns.
|
|
126
|
+
// Instead, we load up to the limit.
|
|
127
|
+
const batch = await cursor.toArray();
|
|
110
128
|
if (batch.length == 0) {
|
|
111
129
|
// We've reached the end
|
|
112
130
|
break;
|
|
@@ -115,19 +133,7 @@ export class MongoCompactor {
|
|
|
115
133
|
upperBound = batch[batch.length - 1]._id;
|
|
116
134
|
for (let doc of batch) {
|
|
117
135
|
if (currentState == null || doc._id.b != currentState.bucket) {
|
|
118
|
-
|
|
119
|
-
if (currentState.lastNotPut != null && currentState.opsSincePut >= 1) {
|
|
120
|
-
// Important to flush before clearBucket()
|
|
121
|
-
// Does not have to happen before flushBucketChecksums()
|
|
122
|
-
await this.flush();
|
|
123
|
-
logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
|
|
124
|
-
// Free memory before clearing bucket
|
|
125
|
-
currentState.seen.clear();
|
|
126
|
-
await this.clearBucket(currentState);
|
|
127
|
-
}
|
|
128
|
-
// Should happen after clearBucket() for accurate stats
|
|
129
|
-
this.updateBucketChecksums(currentState);
|
|
130
|
-
}
|
|
136
|
+
await doneWithBucket();
|
|
131
137
|
currentState = {
|
|
132
138
|
bucket: doc._id.b,
|
|
133
139
|
seen: new Map(),
|
|
@@ -204,18 +210,11 @@ export class MongoCompactor {
|
|
|
204
210
|
await this.flush();
|
|
205
211
|
}
|
|
206
212
|
}
|
|
213
|
+
if (currentState != null) {
|
|
214
|
+
logger.info(`Processed batch of length ${batch.length} current bucket: ${currentState.bucket}`);
|
|
215
|
+
}
|
|
207
216
|
}
|
|
208
|
-
|
|
209
|
-
if (currentState?.lastNotPut != null && currentState?.opsSincePut > 1) {
|
|
210
|
-
logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
|
|
211
|
-
// Need flush() before clear()
|
|
212
|
-
await this.flush();
|
|
213
|
-
await this.clearBucket(currentState);
|
|
214
|
-
}
|
|
215
|
-
if (currentState != null) {
|
|
216
|
-
// Do this _after_ clearBucket so that we have accurate counts.
|
|
217
|
-
this.updateBucketChecksums(currentState);
|
|
218
|
-
}
|
|
217
|
+
await doneWithBucket();
|
|
219
218
|
// Need another flush after updateBucketChecksums()
|
|
220
219
|
await this.flush();
|
|
221
220
|
}
|
|
@@ -383,5 +382,81 @@ export class MongoCompactor {
|
|
|
383
382
|
await session.endSession();
|
|
384
383
|
}
|
|
385
384
|
}
|
|
385
|
+
/**
|
|
386
|
+
* Subset of compact, only populating checksums where relevant.
|
|
387
|
+
*/
|
|
388
|
+
async populateChecksums() {
|
|
389
|
+
let lastId = null;
|
|
390
|
+
while (!this.signal?.aborted) {
|
|
391
|
+
// By filtering buckets, we effectively make this "resumeable".
|
|
392
|
+
let filter = {
|
|
393
|
+
compacted_state: { $exists: false }
|
|
394
|
+
};
|
|
395
|
+
if (lastId) {
|
|
396
|
+
filter._id = { $gt: lastId };
|
|
397
|
+
}
|
|
398
|
+
const bucketsWithoutChecksums = await this.db.bucket_state
|
|
399
|
+
.find(filter, {
|
|
400
|
+
projection: {
|
|
401
|
+
_id: 1
|
|
402
|
+
},
|
|
403
|
+
sort: {
|
|
404
|
+
_id: 1
|
|
405
|
+
},
|
|
406
|
+
limit: 5_000,
|
|
407
|
+
maxTimeMS: MONGO_OPERATION_TIMEOUT_MS
|
|
408
|
+
})
|
|
409
|
+
.toArray();
|
|
410
|
+
if (bucketsWithoutChecksums.length == 0) {
|
|
411
|
+
// All done
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
logger.info(`Calculating checksums for batch of ${bucketsWithoutChecksums.length} buckets`);
|
|
415
|
+
await this.updateChecksumsBatch(bucketsWithoutChecksums.map((b) => b._id.b));
|
|
416
|
+
lastId = bucketsWithoutChecksums[bucketsWithoutChecksums.length - 1]._id;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
async updateChecksumsBatch(buckets) {
|
|
420
|
+
const checksums = await this.storage.checksums.queryPartialChecksums(buckets.map((bucket) => {
|
|
421
|
+
return {
|
|
422
|
+
bucket,
|
|
423
|
+
end: this.maxOpId
|
|
424
|
+
};
|
|
425
|
+
}));
|
|
426
|
+
for (let bucketChecksum of checksums.values()) {
|
|
427
|
+
if (isPartialChecksum(bucketChecksum)) {
|
|
428
|
+
// Should never happen since we don't specify `start`
|
|
429
|
+
throw new ServiceAssertionError(`Full checksum expected, got ${JSON.stringify(bucketChecksum)}`);
|
|
430
|
+
}
|
|
431
|
+
this.bucketStateUpdates.push({
|
|
432
|
+
updateOne: {
|
|
433
|
+
filter: {
|
|
434
|
+
_id: {
|
|
435
|
+
g: this.group_id,
|
|
436
|
+
b: bucketChecksum.bucket
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
update: {
|
|
440
|
+
$set: {
|
|
441
|
+
compacted_state: {
|
|
442
|
+
op_id: this.maxOpId,
|
|
443
|
+
count: bucketChecksum.count,
|
|
444
|
+
checksum: BigInt(bucketChecksum.checksum),
|
|
445
|
+
bytes: null
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
$setOnInsert: {
|
|
449
|
+
// Only set this if we're creating the document.
|
|
450
|
+
// In all other cases, the replication process will have a set a more accurate id.
|
|
451
|
+
last_op: this.maxOpId
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
// We generally expect this to have been created before, but do handle cases of old unchanged buckets
|
|
455
|
+
upsert: true
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
await this.flush();
|
|
460
|
+
}
|
|
386
461
|
}
|
|
387
462
|
//# sourceMappingURL=MongoCompactor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoCompactor.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoCompactor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MongoCompactor.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoCompactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,14 @@ import { BaseObserver } from '@powersync/lib-services-framework';
|
|
|
3
3
|
import { CheckpointChanges, CompactOptions, GetCheckpointChangesOptions, InternalOpId, ReplicationCheckpoint, storage, utils, WatchWriteCheckpointOptions } from '@powersync/service-core';
|
|
4
4
|
import { ParameterLookup, SqliteJsonRow, SqlSyncRules } from '@powersync/service-sync-rules';
|
|
5
5
|
import { MongoBucketStorage } from '../MongoBucketStorage.js';
|
|
6
|
+
import { MongoChecksums } from './MongoChecksums.js';
|
|
6
7
|
export declare class MongoSyncBucketStorage extends BaseObserver<storage.SyncRulesBucketStorageListener> implements storage.SyncRulesBucketStorage {
|
|
7
8
|
readonly factory: MongoBucketStorage;
|
|
8
9
|
readonly group_id: number;
|
|
9
10
|
private readonly sync_rules;
|
|
10
11
|
readonly slot_name: string;
|
|
11
12
|
private readonly db;
|
|
12
|
-
|
|
13
|
+
readonly checksums: MongoChecksums;
|
|
13
14
|
private parsedSyncRulesCache;
|
|
14
15
|
private writeCheckpointAPI;
|
|
15
16
|
constructor(factory: MongoBucketStorage, group_id: number, sync_rules: storage.PersistedSyncRulesContent, slot_name: string, writeCheckpointMode?: storage.WriteCheckpointMode);
|
|
@@ -26,14 +27,13 @@ export declare class MongoSyncBucketStorage extends BaseObserver<storage.SyncRul
|
|
|
26
27
|
getBucketDataBatch(checkpoint: utils.InternalOpId, dataBuckets: Map<string, InternalOpId>, options?: storage.BucketDataBatchOptions): AsyncIterable<storage.SyncBucketDataChunk>;
|
|
27
28
|
getChecksums(checkpoint: utils.InternalOpId, buckets: string[]): Promise<utils.ChecksumMap>;
|
|
28
29
|
clearChecksumCache(): void;
|
|
29
|
-
private getChecksumsInternal;
|
|
30
30
|
terminate(options?: storage.TerminateOptions): Promise<void>;
|
|
31
31
|
getStatus(): Promise<storage.SyncRuleStatus>;
|
|
32
32
|
clear(options?: storage.ClearStorageOptions): Promise<void>;
|
|
33
33
|
private clearIteration;
|
|
34
34
|
reportError(e: any): Promise<void>;
|
|
35
35
|
compact(options?: storage.CompactOptions): Promise<void>;
|
|
36
|
-
populatePersistentChecksumCache(options: Pick<CompactOptions, 'signal' | 'maxOpId'
|
|
36
|
+
populatePersistentChecksumCache(options: Required<Pick<CompactOptions, 'signal' | 'maxOpId'>>): Promise<void>;
|
|
37
37
|
/**
|
|
38
38
|
* Instance-wide watch on the latest available checkpoint (op_id + lsn).
|
|
39
39
|
*/
|