@powersync/service-module-mongodb 0.21.0 → 0.21.2
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 +41 -0
- package/ci/test-connection.yaml +12 -0
- package/dist/api/MongoRouteAPIAdapter.d.ts +2 -2
- package/dist/api/MongoRouteAPIAdapter.js +73 -143
- package/dist/api/MongoRouteAPIAdapter.js.map +1 -1
- package/dist/api/infer-collection-schema.d.ts +12 -0
- package/dist/api/infer-collection-schema.js +142 -0
- package/dist/api/infer-collection-schema.js.map +1 -0
- package/dist/module/MongoModule.d.ts +0 -1
- package/dist/module/MongoModule.js +0 -1
- package/dist/module/MongoModule.js.map +1 -1
- package/dist/replication/ChangeStream.js +1 -4
- package/dist/replication/ChangeStream.js.map +1 -1
- package/dist/replication/MongoRelation.js +5 -2
- package/dist/replication/MongoRelation.js.map +1 -1
- package/dist/replication/MongoSnapshotter.js +0 -3
- package/dist/replication/MongoSnapshotter.js.map +1 -1
- package/dist/replication/RawChangeStream.d.ts +3 -11
- package/dist/replication/RawChangeStream.js +0 -17
- package/dist/replication/RawChangeStream.js.map +1 -1
- package/dist/replication/SourceRowConverter.d.ts +1 -0
- package/dist/replication/SourceRowConverter.js +4 -2
- package/dist/replication/SourceRowConverter.js.map +1 -1
- package/dist/replication/bufferToSqlite.d.ts +3 -1
- package/dist/replication/bufferToSqlite.js +35 -23
- package/dist/replication/bufferToSqlite.js.map +1 -1
- package/package.json +9 -9
- package/src/api/MongoRouteAPIAdapter.ts +79 -127
- package/src/api/infer-collection-schema.ts +153 -0
- package/src/module/MongoModule.ts +0 -2
- package/src/replication/ChangeStream.ts +1 -4
- package/src/replication/MongoRelation.ts +8 -1
- package/src/replication/MongoSnapshotter.ts +0 -3
- package/src/replication/RawChangeStream.ts +3 -30
- package/src/replication/SourceRowConverter.ts +4 -2
- package/src/replication/bufferToSqlite.ts +43 -23
- package/test/src/buffer_to_sqlite.test.ts +9 -0
- package/test/src/change_stream_utils.ts +4 -4
- package/test/src/documentdb_mode.test.ts +1 -2
- package/test/src/raw_change_stream.test.ts +0 -63
- package/test/src/schema.test.ts +223 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# @powersync/service-module-mongodb
|
|
2
2
|
|
|
3
|
+
## 0.21.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 155febf: Report a MongoDB collection without columns when sampling it exceeds the query memory limit, instead of failing the whole schema request. Sampling a small collection of large documents can hit this limit, which previously blocked sync config validation and deployment for the entire connection.
|
|
8
|
+
- 54d6f4b: Report a MongoDB view matched by a wildcard table pattern as a warning, instead of failing sync config validation. Previously, a view matching a pattern such as `"orders%"` made the whole validation request fail with `Cannot get name for wildcard table`.
|
|
9
|
+
- 18f0c95: Add `fixed_booleans_in_json` to sync booleans in JSON columns as booleans instead of as 0/1 integer.
|
|
10
|
+
- Updated dependencies [0483d4e]
|
|
11
|
+
- Updated dependencies [28f024b]
|
|
12
|
+
- Updated dependencies [5078032]
|
|
13
|
+
- Updated dependencies [424bbc0]
|
|
14
|
+
- Updated dependencies [e87703a]
|
|
15
|
+
- Updated dependencies [b70f467]
|
|
16
|
+
- Updated dependencies [18f0c95]
|
|
17
|
+
- Updated dependencies [c60db6e]
|
|
18
|
+
- Updated dependencies [0483d4e]
|
|
19
|
+
- Updated dependencies [a8c3f15]
|
|
20
|
+
- @powersync/service-core@1.27.0
|
|
21
|
+
- @powersync/service-types@0.19.0
|
|
22
|
+
- @powersync/service-sync-rules@0.43.0
|
|
23
|
+
- @powersync/lib-services-framework@0.10.3
|
|
24
|
+
- @powersync/lib-service-mongodb@0.6.33
|
|
25
|
+
|
|
26
|
+
## 0.21.1
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- 2412d7a: Remove the client-side `maxAwaitTimeMS` workaround for Azure DocumentDB and label DocumentDB support as alpha.
|
|
31
|
+
- 7cce8bd: Infer MongoDB collection schemas using aggregation so large sampled documents are not transferred into service memory. Query each collection in its own database with up to four aggregations at a time, and limit each aggregation to 30 seconds of server execution time.
|
|
32
|
+
|
|
33
|
+
Omit the aggregation collation option on Azure DocumentDB, which does not support it.
|
|
34
|
+
|
|
35
|
+
Cache DocumentDB detection on the route adapter for schema discovery and checkpoint requests.
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [f842b4e]
|
|
38
|
+
- Updated dependencies [5ae6f75]
|
|
39
|
+
- @powersync/service-core@1.26.1
|
|
40
|
+
- @powersync/service-sync-rules@0.42.0
|
|
41
|
+
- @powersync/lib-services-framework@0.10.2
|
|
42
|
+
- @powersync/lib-service-mongodb@0.6.32
|
|
43
|
+
|
|
3
44
|
## 0.21.0
|
|
4
45
|
|
|
5
46
|
### Minor Changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Used by the MongoDB connection CLI check in .github/workflows/test.yml.
|
|
2
|
+
replication:
|
|
3
|
+
connections:
|
|
4
|
+
- type: mongodb
|
|
5
|
+
uri: mongodb://localhost:27017/powersync_test
|
|
6
|
+
|
|
7
|
+
storage:
|
|
8
|
+
type: mongodb
|
|
9
|
+
uri: mongodb://localhost:27017/powersync_test_connection
|
|
10
|
+
|
|
11
|
+
telemetry:
|
|
12
|
+
disable_telemetry_sharing: true
|
|
@@ -10,6 +10,7 @@ export declare class MongoRouteAPIAdapter implements api.RouteAPI {
|
|
|
10
10
|
connectionTag: string;
|
|
11
11
|
defaultSchema: string;
|
|
12
12
|
private checkpointImplementation;
|
|
13
|
+
private documentDbDetection;
|
|
13
14
|
constructor(config: types.ResolvedConnectionConfig);
|
|
14
15
|
getParseSyncRulesOptions(): ParseSyncConfigOptions;
|
|
15
16
|
shutdown(): Promise<void>;
|
|
@@ -20,8 +21,7 @@ export declare class MongoRouteAPIAdapter implements api.RouteAPI {
|
|
|
20
21
|
getDebugTablesInfo(tablePatterns: sync_rules.TablePattern[], sqlSyncRules: sync_rules.SyncConfig): Promise<api.PatternResult[]>;
|
|
21
22
|
getReplicationLagBytes(options: api.ReplicationLagOptions): Promise<number | undefined>;
|
|
22
23
|
createReplicationHead<T>(callback: ReplicationHeadCallback<T>): Promise<T>;
|
|
24
|
+
private isDocumentDb;
|
|
23
25
|
private getCheckpointImplementation;
|
|
24
26
|
getConnectionSchema(): Promise<service_types.DatabaseSchema[]>;
|
|
25
|
-
private getColumnsFromDocuments;
|
|
26
|
-
private getBsonType;
|
|
27
27
|
}
|
|
@@ -5,10 +5,11 @@ import * as service_types from '@powersync/service-types';
|
|
|
5
5
|
import { logger } from '@powersync/lib-services-framework';
|
|
6
6
|
import { createCheckpointImplementation } from '../replication/checkpoints/create-checkpoint-implementation.js';
|
|
7
7
|
import { MongoManager } from '../replication/MongoManager.js';
|
|
8
|
-
import { constructAfterRecord } from '../replication/MongoRelation.js';
|
|
9
8
|
import { CHECKPOINTS_COLLECTION, detectDocumentDb } from '../replication/replication-utils.js';
|
|
10
9
|
import * as types from '../types/types.js';
|
|
11
10
|
import { escapeRegExp } from '../utils.js';
|
|
11
|
+
import { inferCollectionSchema, isSchemaInferenceFailure } from './infer-collection-schema.js';
|
|
12
|
+
const SCHEMA_INFERENCE_CONCURRENCY = 4;
|
|
12
13
|
export class MongoRouteAPIAdapter {
|
|
13
14
|
config;
|
|
14
15
|
client;
|
|
@@ -16,6 +17,7 @@ export class MongoRouteAPIAdapter {
|
|
|
16
17
|
connectionTag;
|
|
17
18
|
defaultSchema;
|
|
18
19
|
checkpointImplementation = null;
|
|
20
|
+
documentDbDetection = null;
|
|
19
21
|
constructor(config) {
|
|
20
22
|
this.config = config;
|
|
21
23
|
const manager = new MongoManager(config);
|
|
@@ -127,7 +129,7 @@ export class MongoRouteAPIAdapter {
|
|
|
127
129
|
};
|
|
128
130
|
let errors = [];
|
|
129
131
|
if (collection.type == 'view') {
|
|
130
|
-
errors.push({ level: 'warning', message: `Collection ${schema}.${
|
|
132
|
+
errors.push({ level: 'warning', message: `Collection ${schema}.${collection.name} is a view` });
|
|
131
133
|
}
|
|
132
134
|
else {
|
|
133
135
|
errors.push(...validatePostImages(schema, collection));
|
|
@@ -184,9 +186,17 @@ export class MongoRouteAPIAdapter {
|
|
|
184
186
|
const checkpointImplementation = await this.getCheckpointImplementation();
|
|
185
187
|
return checkpointImplementation.createReplicationHead(callback);
|
|
186
188
|
}
|
|
189
|
+
isDocumentDb() {
|
|
190
|
+
// Share in-flight detection and cache its result for this adapter's lifetime.
|
|
191
|
+
return (this.documentDbDetection ??= detectDocumentDb(this.db).catch((error) => {
|
|
192
|
+
// Allow a later request to retry after a transient connection error.
|
|
193
|
+
this.documentDbDetection = null;
|
|
194
|
+
throw error;
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
187
197
|
async getCheckpointImplementation() {
|
|
188
198
|
if (this.checkpointImplementation == null) {
|
|
189
|
-
const isDocumentDb = await
|
|
199
|
+
const isDocumentDb = await this.isDocumentDb();
|
|
190
200
|
this.checkpointImplementation = createCheckpointImplementation(isDocumentDb, {
|
|
191
201
|
client: this.client,
|
|
192
202
|
db: this.db,
|
|
@@ -203,12 +213,13 @@ export class MongoRouteAPIAdapter {
|
|
|
203
213
|
return this.checkpointImplementation;
|
|
204
214
|
}
|
|
205
215
|
async getConnectionSchema() {
|
|
206
|
-
const
|
|
216
|
+
const isDocumentDb = await this.isDocumentDb();
|
|
207
217
|
const databases = await this.db.admin().listDatabases({ nameOnly: true });
|
|
208
218
|
const filteredDatabases = databases.databases.filter((db) => {
|
|
209
219
|
return !['local', 'admin', 'config'].includes(db.name);
|
|
210
220
|
});
|
|
211
|
-
const databaseSchemas =
|
|
221
|
+
const databaseSchemas = [];
|
|
222
|
+
for (const db of filteredDatabases) {
|
|
212
223
|
/**
|
|
213
224
|
* Filtering the list of database with `authorizedDatabases: true`
|
|
214
225
|
* does not produce the full list of databases under some circumstances.
|
|
@@ -221,156 +232,75 @@ export class MongoRouteAPIAdapter {
|
|
|
221
232
|
catch (e) {
|
|
222
233
|
if (lib_mongo.isMongoServerError(e) && e.codeName == 'Unauthorized') {
|
|
223
234
|
// Ignore databases we're not authorized to query
|
|
224
|
-
|
|
235
|
+
continue;
|
|
225
236
|
}
|
|
226
237
|
throw e;
|
|
227
238
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
continue;
|
|
237
|
-
}
|
|
238
|
-
if (collection.type == 'view') {
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
try {
|
|
242
|
-
const sampleDocuments = await this.db
|
|
243
|
-
.collection(collection.name)
|
|
244
|
-
.aggregate([{ $sample: { size: sampleSize } }])
|
|
245
|
-
.toArray();
|
|
246
|
-
if (sampleDocuments.length > 0) {
|
|
247
|
-
const columns = this.getColumnsFromDocuments(sampleDocuments);
|
|
248
|
-
tables.push({
|
|
249
|
-
name: collection.name,
|
|
250
|
-
// Since documents are sampled in a random order, we need to sort
|
|
251
|
-
// to get a consistent order
|
|
252
|
-
columns: columns.sort((a, b) => a.name.localeCompare(b.name))
|
|
253
|
-
});
|
|
239
|
+
const tables = new Array(collections.length);
|
|
240
|
+
const pendingCollections = collections.entries();
|
|
241
|
+
let failed = false;
|
|
242
|
+
const inferCollections = async () => {
|
|
243
|
+
// Reading from the iterator automatically manages the queue
|
|
244
|
+
for (const [index, collection] of pendingCollections) {
|
|
245
|
+
if (failed) {
|
|
246
|
+
return;
|
|
254
247
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
name: collection.name,
|
|
258
|
-
columns: []
|
|
259
|
-
});
|
|
248
|
+
if ([CHECKPOINTS_COLLECTION].includes(collection.name)) {
|
|
249
|
+
continue;
|
|
260
250
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
// Ignore collections we're not authorized to query
|
|
251
|
+
if (collection.name.startsWith('system.')) {
|
|
252
|
+
// system.views, system.js, system.profile, system.buckets
|
|
253
|
+
// https://www.mongodb.com/docs/manual/reference/system-collections/
|
|
265
254
|
continue;
|
|
266
255
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
256
|
+
if (collection.type == 'view') {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
const columns = await inferCollectionSchema(this.client.db(db.name).collection(collection.name), isDocumentDb);
|
|
261
|
+
// Preserve collection order even when queries finish out of order.
|
|
262
|
+
tables[index] = { name: collection.name, columns };
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
if (lib_mongo.isMongoServerError(e) && e.codeName == 'Unauthorized') {
|
|
266
|
+
// Ignore collections we're not authorized to query
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (isSchemaInferenceFailure(e)) {
|
|
270
|
+
// We know the collection is there, we just could not read its fields. Report it
|
|
271
|
+
// without columns rather than failing: one collection we cannot sample should not
|
|
272
|
+
// block validation and deployment for every sync config on the instance. Queries
|
|
273
|
+
// naming its columns warn about unknown columns; the result is indistinguishable
|
|
274
|
+
// from an empty collection, so a `SELECT *` query still validates cleanly.
|
|
275
|
+
logger.warn(`Could not infer the schema of ${db.name}.${collection.name}`, e);
|
|
276
|
+
tables[index] = { name: collection.name, columns: [] };
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
// Fail the whole request on unexpected errors: the response cannot indicate
|
|
280
|
+
// partial results, so omitting a collection would make an incomplete schema
|
|
281
|
+
// appear complete and could produce an incorrect generated client schema.
|
|
282
|
+
failed = true;
|
|
283
|
+
throw e;
|
|
284
|
+
}
|
|
296
285
|
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
return [...columns.entries()].map(([key, value]) => {
|
|
300
|
-
const internal_type = value.bsonTypes.size == 0 ? '' : [...value.bsonTypes].join(' | ');
|
|
301
|
-
return {
|
|
302
|
-
name: key,
|
|
303
|
-
type: internal_type,
|
|
304
|
-
sqlite_type: value.sqliteType.typeFlags,
|
|
305
|
-
internal_type,
|
|
306
|
-
pg_type: internal_type
|
|
307
286
|
};
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
// null or undefined
|
|
313
|
-
return 'Null';
|
|
314
|
-
}
|
|
315
|
-
else if (typeof data == 'string') {
|
|
316
|
-
return 'String';
|
|
317
|
-
}
|
|
318
|
-
else if (typeof data == 'number') {
|
|
319
|
-
if (Number.isInteger(data)) {
|
|
320
|
-
return 'Integer';
|
|
287
|
+
// Each worker holds only schema metadata, with a bounded number of source queries.
|
|
288
|
+
const workers = Array.from({ length: Math.min(SCHEMA_INFERENCE_CONCURRENCY, collections.length) }, inferCollections);
|
|
289
|
+
try {
|
|
290
|
+
await Promise.all(workers);
|
|
321
291
|
}
|
|
322
|
-
|
|
323
|
-
|
|
292
|
+
catch (e) {
|
|
293
|
+
// Finish in-flight queries before rejecting the request. Workers stop taking
|
|
294
|
+
// new collections as soon as one encounters a non-authorization error.
|
|
295
|
+
await Promise.allSettled(workers);
|
|
296
|
+
throw e;
|
|
324
297
|
}
|
|
298
|
+
databaseSchemas.push({
|
|
299
|
+
name: db.name,
|
|
300
|
+
tables: tables.filter((table) => table != null)
|
|
301
|
+
});
|
|
325
302
|
}
|
|
326
|
-
|
|
327
|
-
return 'Long';
|
|
328
|
-
}
|
|
329
|
-
else if (typeof data == 'boolean') {
|
|
330
|
-
return 'Boolean';
|
|
331
|
-
}
|
|
332
|
-
else if (data instanceof mongo.ObjectId) {
|
|
333
|
-
return 'ObjectId';
|
|
334
|
-
}
|
|
335
|
-
else if (data instanceof mongo.UUID) {
|
|
336
|
-
return 'UUID';
|
|
337
|
-
}
|
|
338
|
-
else if (data instanceof Date) {
|
|
339
|
-
return 'Date';
|
|
340
|
-
}
|
|
341
|
-
else if (data instanceof mongo.Timestamp) {
|
|
342
|
-
return 'Timestamp';
|
|
343
|
-
}
|
|
344
|
-
else if (data instanceof mongo.Binary) {
|
|
345
|
-
return 'Binary';
|
|
346
|
-
}
|
|
347
|
-
else if (data instanceof mongo.Long) {
|
|
348
|
-
return 'Long';
|
|
349
|
-
}
|
|
350
|
-
else if (data instanceof RegExp) {
|
|
351
|
-
return 'RegExp';
|
|
352
|
-
}
|
|
353
|
-
else if (data instanceof mongo.MinKey) {
|
|
354
|
-
return 'MinKey';
|
|
355
|
-
}
|
|
356
|
-
else if (data instanceof mongo.MaxKey) {
|
|
357
|
-
return 'MaxKey';
|
|
358
|
-
}
|
|
359
|
-
else if (data instanceof mongo.Decimal128) {
|
|
360
|
-
return 'Decimal';
|
|
361
|
-
}
|
|
362
|
-
else if (Array.isArray(data)) {
|
|
363
|
-
return 'Array';
|
|
364
|
-
}
|
|
365
|
-
else if (data instanceof Uint8Array) {
|
|
366
|
-
return 'Binary';
|
|
367
|
-
}
|
|
368
|
-
else if (typeof data == 'object') {
|
|
369
|
-
return 'Object';
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
return null;
|
|
373
|
-
}
|
|
303
|
+
return databaseSchemas;
|
|
374
304
|
}
|
|
375
305
|
}
|
|
376
306
|
//# sourceMappingURL=MongoRouteAPIAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MongoRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MongoRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MongoRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { TableSchema } from '@powersync/service-types';
|
|
3
|
+
/**
|
|
4
|
+
* Whether the error means we could not determine this collection's fields, as opposed to
|
|
5
|
+
* something that makes the rest of the schema unreliable too.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isSchemaInferenceFailure(e: unknown): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Infer top-level fields without transferring sampled document values to the service.
|
|
10
|
+
* Memory on the service scales with the inferred schema, not the size of those values.
|
|
11
|
+
*/
|
|
12
|
+
export declare function inferCollectionSchema(collection: mongo.Collection, isDocumentDb: boolean): Promise<TableSchema['columns']>;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import * as lib_mongo from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
3
|
+
import { ExpressionType } from '@powersync/service-sync-rules';
|
|
4
|
+
/**
|
|
5
|
+
* Server errors that mean this one collection could not be inspected, rather than the
|
|
6
|
+
* connection being unusable.
|
|
7
|
+
*
|
|
8
|
+
* These come from the memory ceiling {@link inferCollectionSchema} imposes on itself by
|
|
9
|
+
* refusing to spill to disk, and are deterministic per collection. Timeouts are
|
|
10
|
+
* deliberately excluded: they usually indicate an overloaded source, where degrading
|
|
11
|
+
* would silently empty the schema of every collection at once.
|
|
12
|
+
*/
|
|
13
|
+
const SCHEMA_INFERENCE_FAILURE_CODES = new Set([
|
|
14
|
+
// ExceededMemoryLimit - a blocking stage ran out of memory with disk spill disabled.
|
|
15
|
+
146,
|
|
16
|
+
// QueryExceededMemoryLimitNoDiskUseAllowed - as above, reported by the sort $sample
|
|
17
|
+
// uses on collections too small for its random cursor.
|
|
18
|
+
292
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* Whether the error means we could not determine this collection's fields, as opposed to
|
|
22
|
+
* something that makes the rest of the schema unreliable too.
|
|
23
|
+
*/
|
|
24
|
+
export function isSchemaInferenceFailure(e) {
|
|
25
|
+
return lib_mongo.isMongoServerError(e) && SCHEMA_INFERENCE_FAILURE_CODES.has(e.code);
|
|
26
|
+
}
|
|
27
|
+
// Match the types exposed after BSON deserialization and conversion to sync rules values.
|
|
28
|
+
const BSON_TYPES = {
|
|
29
|
+
int: { name: 'Integer', sqliteType: ExpressionType.INTEGER },
|
|
30
|
+
long: { name: 'Long', sqliteType: ExpressionType.INTEGER },
|
|
31
|
+
double: { name: 'Double', sqliteType: ExpressionType.REAL },
|
|
32
|
+
decimal: { name: 'Decimal', sqliteType: ExpressionType.TEXT },
|
|
33
|
+
string: { name: 'String', sqliteType: ExpressionType.TEXT },
|
|
34
|
+
symbol: { name: 'String', sqliteType: ExpressionType.TEXT },
|
|
35
|
+
bool: { name: 'Boolean', sqliteType: ExpressionType.INTEGER },
|
|
36
|
+
objectId: { name: 'ObjectId', sqliteType: ExpressionType.TEXT },
|
|
37
|
+
uuid: { name: 'UUID', sqliteType: ExpressionType.TEXT },
|
|
38
|
+
binData: { name: 'Binary', sqliteType: ExpressionType.BLOB },
|
|
39
|
+
date: { name: 'Date', sqliteType: ExpressionType.TEXT },
|
|
40
|
+
timestamp: { name: 'Timestamp', sqliteType: ExpressionType.INTEGER },
|
|
41
|
+
regex: { name: 'RegExp', sqliteType: ExpressionType.TEXT },
|
|
42
|
+
object: { name: 'Object', sqliteType: ExpressionType.TEXT },
|
|
43
|
+
array: { name: 'Array', sqliteType: ExpressionType.TEXT },
|
|
44
|
+
javascript: { name: 'Object', sqliteType: ExpressionType.TEXT },
|
|
45
|
+
javascriptWithScope: { name: 'Object', sqliteType: ExpressionType.TEXT },
|
|
46
|
+
dbPointer: { name: 'Object', sqliteType: ExpressionType.TEXT },
|
|
47
|
+
null: { name: 'Null', sqliteType: ExpressionType.NONE },
|
|
48
|
+
undefined: { name: 'Null', sqliteType: ExpressionType.NONE },
|
|
49
|
+
minKey: { name: 'MinKey', sqliteType: ExpressionType.NONE },
|
|
50
|
+
maxKey: { name: 'MaxKey', sqliteType: ExpressionType.NONE }
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Infer top-level fields without transferring sampled document values to the service.
|
|
54
|
+
* Memory on the service scales with the inferred schema, not the size of those values.
|
|
55
|
+
*/
|
|
56
|
+
export async function inferCollectionSchema(collection, isDocumentDb) {
|
|
57
|
+
const fields = await collection
|
|
58
|
+
.aggregate([
|
|
59
|
+
// Keep this first so MongoDB can use its random cursor on large collections.
|
|
60
|
+
{ $sample: { size: 50 } },
|
|
61
|
+
{
|
|
62
|
+
$project: {
|
|
63
|
+
_id: 0,
|
|
64
|
+
fields: {
|
|
65
|
+
$map: {
|
|
66
|
+
input: { $objectToArray: '$$ROOT' },
|
|
67
|
+
as: 'field',
|
|
68
|
+
in: {
|
|
69
|
+
name: '$$field.k',
|
|
70
|
+
type: {
|
|
71
|
+
$let: {
|
|
72
|
+
vars: { bsonType: { $type: '$$field.v' } },
|
|
73
|
+
in: {
|
|
74
|
+
$switch: {
|
|
75
|
+
branches: [
|
|
76
|
+
{
|
|
77
|
+
case: { $eq: ['$$bsonType', 'double'] },
|
|
78
|
+
// Whole-number doubles are replicated as SQLite integers.
|
|
79
|
+
then: { $cond: [{ $eq: [{ $mod: ['$$field.v', 1] }, 0] }, 'int', 'double'] }
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
case: { $eq: ['$$bsonType', 'binData'] },
|
|
83
|
+
then: {
|
|
84
|
+
$cond: [
|
|
85
|
+
// BinData compares by length, then subtype, then bytes. Only
|
|
86
|
+
// 16-byte values of subtype 4 fall within this UUID range.
|
|
87
|
+
// This works without transferring binary values or requiring
|
|
88
|
+
// the newer MongoDB binary conversion operators.
|
|
89
|
+
// https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order/#bindata
|
|
90
|
+
{
|
|
91
|
+
$and: [
|
|
92
|
+
{ $gte: ['$$field.v', new mongo.UUID('00000000-0000-0000-0000-000000000000')] },
|
|
93
|
+
{ $lte: ['$$field.v', new mongo.UUID('ffffffff-ffff-ffff-ffff-ffffffffffff')] }
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
'uuid',
|
|
97
|
+
'binData'
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
default: '$$bsonType'
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
// Discard values before unwinding so large documents aren't duplicated per field.
|
|
113
|
+
{ $unwind: '$fields' },
|
|
114
|
+
{ $group: { _id: '$fields.name', types: { $addToSet: '$fields.type' } } }
|
|
115
|
+
], {
|
|
116
|
+
// Bound execution per collection below the default 60-second socket timeout
|
|
117
|
+
// so MongoDB can return a query timeout before the connection times out.
|
|
118
|
+
maxTimeMS: 30_000,
|
|
119
|
+
// Small collections can require $sample to sort full documents. Disable
|
|
120
|
+
// disk spill explicitly so concurrent schema queries fail at the memory
|
|
121
|
+
// limit without adding temporary-file I/O on the source database.
|
|
122
|
+
allowDiskUse: false,
|
|
123
|
+
// Field names are case-sensitive even when the collection's default collation isn't.
|
|
124
|
+
// DocumentDB rejects the collation option, including simple collation.
|
|
125
|
+
...(isDocumentDb ? {} : { collation: { locale: 'simple' } })
|
|
126
|
+
})
|
|
127
|
+
.toArray();
|
|
128
|
+
return fields
|
|
129
|
+
.map(({ _id: name, types }) => {
|
|
130
|
+
let sqliteType = ExpressionType.NONE;
|
|
131
|
+
const bsonTypes = new Set();
|
|
132
|
+
for (const type of types) {
|
|
133
|
+
const inferred = BSON_TYPES[type];
|
|
134
|
+
sqliteType = sqliteType.or(inferred.sqliteType);
|
|
135
|
+
bsonTypes.add(inferred.name);
|
|
136
|
+
}
|
|
137
|
+
const internal_type = [...bsonTypes].sort().join(' | ');
|
|
138
|
+
return { name, type: internal_type, sqlite_type: sqliteType.typeFlags, internal_type, pg_type: internal_type };
|
|
139
|
+
})
|
|
140
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=infer-collection-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-collection-schema.js","sourceRoot":"","sources":["../../src/api/infer-collection-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ export declare class MongoModule extends replication.ReplicationModule<types.Mon
|
|
|
4
4
|
constructor();
|
|
5
5
|
protected createRouteAPIAdapter(): api.RouteAPI;
|
|
6
6
|
protected createReplicator(context: system.ServiceContext): replication.AbstractReplicator;
|
|
7
|
-
onInitialized(context: system.ServiceContextContainer): Promise<void>;
|
|
8
7
|
/**
|
|
9
8
|
* Combines base config with normalized connection settings
|
|
10
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoModule.js","sourceRoot":"","sources":["../../src/module/MongoModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAEL,kCAAkC,EAElC,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,WAAY,SAAQ,WAAW,CAAC,iBAA8C;IACzF;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS,CAAC,qBAAqB;YACrC,YAAY,EAAE,KAAK,CAAC,qBAAqB;SAC1C,CAAC,CAAC;IACL,CAAC;IAES,qBAAqB;QAC7B,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC,CAAC;IAC3E,CAAC;IAES,gBAAgB,CAAC,OAA8B;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,IAAI,kCAAkC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClG,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAEzE,OAAO,IAAI,sBAAsB,CAAC;YAChC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;YACtD,gBAAgB,EAAE,gBAAgB;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,iBAAiB,EAAE,iBAAiB;YACpC,WAAW,EAAE,IAAI,qBAAqB,EAAE;YACxC,wBAAwB,EAAE,gBAAgB,CAAC,0BAA0B;SACtE,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"MongoModule.js","sourceRoot":"","sources":["../../src/module/MongoModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -128,7 +128,7 @@ export class ChangeStream {
|
|
|
128
128
|
}
|
|
129
129
|
this.isDocumentDb = await detectDocumentDb(this.defaultDb);
|
|
130
130
|
if (this.isDocumentDb) {
|
|
131
|
-
this.logger.warn('Azure DocumentDB support is
|
|
131
|
+
this.logger.warn('Azure DocumentDB support is in alpha. APIs and behavior may change, and long-term stability is not yet guaranteed.');
|
|
132
132
|
}
|
|
133
133
|
this._checkpointImplementation = createCheckpointImplementation(this.isDocumentDb, {
|
|
134
134
|
client: this.client,
|
|
@@ -461,9 +461,6 @@ export class ChangeStream {
|
|
|
461
461
|
return rawChangeStream(watchDb, pipeline, {
|
|
462
462
|
batchSize: options.batchSize ?? this.snapshotChunkLength,
|
|
463
463
|
maxAwaitTimeMS,
|
|
464
|
-
// maxAwaitTimeMS can be 0 for probe-style streams that do not want an idle wait.
|
|
465
|
-
// In that case there is no client-side wait to emulate for DocumentDB.
|
|
466
|
-
clientSideMaxAwaitTimeMS: this.isDocumentDb && maxAwaitTimeMS > 0,
|
|
467
464
|
maxTimeMS: this.changeStreamTimeout,
|
|
468
465
|
signal: options.signal,
|
|
469
466
|
logger: this.logger,
|