@powersync/service-module-mongodb 0.20.1 → 0.21.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 CHANGED
@@ -1,5 +1,58 @@
1
1
  # @powersync/service-module-mongodb
2
2
 
3
+ ## 0.21.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2412d7a: Remove the client-side `maxAwaitTimeMS` workaround for Azure DocumentDB and label DocumentDB support as alpha.
8
+ - 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.
9
+
10
+ Omit the aggregation collation option on Azure DocumentDB, which does not support it.
11
+
12
+ Cache DocumentDB detection on the route adapter for schema discovery and checkpoint requests.
13
+
14
+ - Updated dependencies [f842b4e]
15
+ - Updated dependencies [5ae6f75]
16
+ - @powersync/service-core@1.26.1
17
+ - @powersync/service-sync-rules@0.42.0
18
+ - @powersync/lib-services-framework@0.10.2
19
+ - @powersync/lib-service-mongodb@0.6.32
20
+
21
+ ## 0.21.0
22
+
23
+ ### Minor Changes
24
+
25
+ - 189bd9e: Add storage_version: 4 as a stable storage version.
26
+
27
+ ### Patch Changes
28
+
29
+ - 4e4063b: Optimize runtime type checks, closes https://github.com/powersync-ja/powersync-service/issues/771.
30
+ - 2407f71: Apply timeouts and abortSignal handling to all S3 operations. The broad timeouts can be configured using the new `storage.object_storage.defaults_mode` option, or the `AWS_DEFAULTS_MODE` environment variable. Upgrade S3 SDK to fix further timeout issues.
31
+ - a997c88: Restructure MongoDB V3 bucket compacting.
32
+ - Updated dependencies [e11c54b]
33
+ - Updated dependencies [4b6a23e]
34
+ - Updated dependencies [189bd9e]
35
+ - Updated dependencies [bb08068]
36
+ - Updated dependencies [0077a8d]
37
+ - Updated dependencies [332d649]
38
+ - Updated dependencies [33a3c23]
39
+ - Updated dependencies [fccdff2]
40
+ - Updated dependencies [989d9e1]
41
+ - Updated dependencies [646c0de]
42
+ - Updated dependencies [cc121b3]
43
+ - Updated dependencies [4e4063b]
44
+ - Updated dependencies [2407f71]
45
+ - Updated dependencies [10131ca]
46
+ - Updated dependencies [4037e8f]
47
+ - Updated dependencies [3972bac]
48
+ - Updated dependencies [dd7a22f]
49
+ - Updated dependencies [a997c88]
50
+ - @powersync/service-core@1.26.0
51
+ - @powersync/service-sync-rules@0.41.0
52
+ - @powersync/service-types@0.18.0
53
+ - @powersync/lib-services-framework@0.10.1
54
+ - @powersync/lib-service-mongodb@0.6.31
55
+
3
56
  ## 0.20.1
4
57
 
5
58
  ### Patch Changes
@@ -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 } 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);
@@ -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 detectDocumentDb(this.db);
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 sampleSize = 50;
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 = await Promise.all(filteredDatabases.map(async (db) => {
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,65 @@ 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
- return null;
235
+ continue;
225
236
  }
226
237
  throw e;
227
238
  }
228
- let tables = [];
229
- for (let collection of collections) {
230
- if ([CHECKPOINTS_COLLECTION].includes(collection.name)) {
231
- continue;
232
- }
233
- if (collection.name.startsWith('system.')) {
234
- // system.views, system.js, system.profile, system.buckets
235
- // https://www.mongodb.com/docs/manual/reference/system-collections/
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
- else {
256
- tables.push({
257
- name: collection.name,
258
- columns: []
259
- });
248
+ if ([CHECKPOINTS_COLLECTION].includes(collection.name)) {
249
+ continue;
260
250
  }
261
- }
262
- catch (e) {
263
- if (lib_mongo.isMongoServerError(e) && e.codeName == 'Unauthorized') {
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/
254
+ continue;
255
+ }
256
+ if (collection.type == 'view') {
265
257
  continue;
266
258
  }
267
- throw e;
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
+ // Fail the whole request on unexpected errors: the response cannot indicate
270
+ // partial results, so omitting a collection would make an incomplete schema
271
+ // appear complete and could produce an incorrect generated client schema.
272
+ failed = true;
273
+ throw e;
274
+ }
268
275
  }
269
- }
270
- return {
271
- name: db.name,
272
- tables: tables
273
276
  };
274
- }));
275
- return databaseSchemas.filter((schema) => !!schema);
276
- }
277
- getColumnsFromDocuments(documents) {
278
- let columns = new Map();
279
- for (const document of documents) {
280
- const parsed = constructAfterRecord(document);
281
- for (const key in parsed) {
282
- const value = parsed[key];
283
- const type = sync_rules.sqliteTypeOf(value);
284
- const sqliteType = sync_rules.ExpressionType.fromTypeText(type);
285
- let entry = columns.get(key);
286
- if (entry == null) {
287
- entry = { sqliteType, bsonTypes: new Set() };
288
- columns.set(key, entry);
289
- }
290
- else {
291
- entry.sqliteType = entry.sqliteType.or(sqliteType);
292
- }
293
- const bsonType = this.getBsonType(document[key]);
294
- if (bsonType != null) {
295
- entry.bsonTypes.add(bsonType);
296
- }
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
- };
308
- });
309
- }
310
- getBsonType(data) {
311
- if (data == null) {
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';
277
+ // Each worker holds only schema metadata, with a bounded number of source queries.
278
+ const workers = Array.from({ length: Math.min(SCHEMA_INFERENCE_CONCURRENCY, collections.length) }, inferCollections);
279
+ try {
280
+ await Promise.all(workers);
321
281
  }
322
- else {
323
- return 'Double';
282
+ catch (e) {
283
+ // Finish in-flight queries before rejecting the request. Workers stop taking
284
+ // new collections as soon as one encounters a non-authorization error.
285
+ await Promise.allSettled(workers);
286
+ throw e;
324
287
  }
288
+ databaseSchemas.push({
289
+ name: db.name,
290
+ tables: tables.filter((table) => table != null)
291
+ });
325
292
  }
326
- else if (typeof data == 'bigint') {
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
- }
293
+ return databaseSchemas;
374
294
  }
375
295
  }
376
296
  //# 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,7 @@
1
+ import { mongo } from '@powersync/lib-service-mongodb';
2
+ import { TableSchema } from '@powersync/service-types';
3
+ /**
4
+ * Infer top-level fields without transferring sampled document values to the service.
5
+ * Memory on the service scales with the inferred schema, not the size of those values.
6
+ */
7
+ export declare function inferCollectionSchema(collection: mongo.Collection, isDocumentDb: boolean): Promise<TableSchema['columns']>;
@@ -0,0 +1,118 @@
1
+ import { mongo } from '@powersync/lib-service-mongodb';
2
+ import { ExpressionType } from '@powersync/service-sync-rules';
3
+ // Match the types exposed after BSON deserialization and conversion to sync rules values.
4
+ const BSON_TYPES = {
5
+ int: { name: 'Integer', sqliteType: ExpressionType.INTEGER },
6
+ long: { name: 'Long', sqliteType: ExpressionType.INTEGER },
7
+ double: { name: 'Double', sqliteType: ExpressionType.REAL },
8
+ decimal: { name: 'Decimal', sqliteType: ExpressionType.TEXT },
9
+ string: { name: 'String', sqliteType: ExpressionType.TEXT },
10
+ symbol: { name: 'String', sqliteType: ExpressionType.TEXT },
11
+ bool: { name: 'Boolean', sqliteType: ExpressionType.INTEGER },
12
+ objectId: { name: 'ObjectId', sqliteType: ExpressionType.TEXT },
13
+ uuid: { name: 'UUID', sqliteType: ExpressionType.TEXT },
14
+ binData: { name: 'Binary', sqliteType: ExpressionType.BLOB },
15
+ date: { name: 'Date', sqliteType: ExpressionType.TEXT },
16
+ timestamp: { name: 'Timestamp', sqliteType: ExpressionType.INTEGER },
17
+ regex: { name: 'RegExp', sqliteType: ExpressionType.TEXT },
18
+ object: { name: 'Object', sqliteType: ExpressionType.TEXT },
19
+ array: { name: 'Array', sqliteType: ExpressionType.TEXT },
20
+ javascript: { name: 'Object', sqliteType: ExpressionType.TEXT },
21
+ javascriptWithScope: { name: 'Object', sqliteType: ExpressionType.TEXT },
22
+ dbPointer: { name: 'Object', sqliteType: ExpressionType.TEXT },
23
+ null: { name: 'Null', sqliteType: ExpressionType.NONE },
24
+ undefined: { name: 'Null', sqliteType: ExpressionType.NONE },
25
+ minKey: { name: 'MinKey', sqliteType: ExpressionType.NONE },
26
+ maxKey: { name: 'MaxKey', sqliteType: ExpressionType.NONE }
27
+ };
28
+ /**
29
+ * Infer top-level fields without transferring sampled document values to the service.
30
+ * Memory on the service scales with the inferred schema, not the size of those values.
31
+ */
32
+ export async function inferCollectionSchema(collection, isDocumentDb) {
33
+ const fields = await collection
34
+ .aggregate([
35
+ // Keep this first so MongoDB can use its random cursor on large collections.
36
+ { $sample: { size: 50 } },
37
+ {
38
+ $project: {
39
+ _id: 0,
40
+ fields: {
41
+ $map: {
42
+ input: { $objectToArray: '$$ROOT' },
43
+ as: 'field',
44
+ in: {
45
+ name: '$$field.k',
46
+ type: {
47
+ $let: {
48
+ vars: { bsonType: { $type: '$$field.v' } },
49
+ in: {
50
+ $switch: {
51
+ branches: [
52
+ {
53
+ case: { $eq: ['$$bsonType', 'double'] },
54
+ // Whole-number doubles are replicated as SQLite integers.
55
+ then: { $cond: [{ $eq: [{ $mod: ['$$field.v', 1] }, 0] }, 'int', 'double'] }
56
+ },
57
+ {
58
+ case: { $eq: ['$$bsonType', 'binData'] },
59
+ then: {
60
+ $cond: [
61
+ // BinData compares by length, then subtype, then bytes. Only
62
+ // 16-byte values of subtype 4 fall within this UUID range.
63
+ // This works without transferring binary values or requiring
64
+ // the newer MongoDB binary conversion operators.
65
+ // https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order/#bindata
66
+ {
67
+ $and: [
68
+ { $gte: ['$$field.v', new mongo.UUID('00000000-0000-0000-0000-000000000000')] },
69
+ { $lte: ['$$field.v', new mongo.UUID('ffffffff-ffff-ffff-ffff-ffffffffffff')] }
70
+ ]
71
+ },
72
+ 'uuid',
73
+ 'binData'
74
+ ]
75
+ }
76
+ }
77
+ ],
78
+ default: '$$bsonType'
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ },
88
+ // Discard values before unwinding so large documents aren't duplicated per field.
89
+ { $unwind: '$fields' },
90
+ { $group: { _id: '$fields.name', types: { $addToSet: '$fields.type' } } }
91
+ ], {
92
+ // Bound execution per collection below the default 60-second socket timeout
93
+ // so MongoDB can return a query timeout before the connection times out.
94
+ maxTimeMS: 30_000,
95
+ // Small collections can require $sample to sort full documents. Disable
96
+ // disk spill explicitly so concurrent schema queries fail at the memory
97
+ // limit without adding temporary-file I/O on the source database.
98
+ allowDiskUse: false,
99
+ // Field names are case-sensitive even when the collection's default collation isn't.
100
+ // DocumentDB rejects the collation option, including simple collation.
101
+ ...(isDocumentDb ? {} : { collation: { locale: 'simple' } })
102
+ })
103
+ .toArray();
104
+ return fields
105
+ .map(({ _id: name, types }) => {
106
+ let sqliteType = ExpressionType.NONE;
107
+ const bsonTypes = new Set();
108
+ for (const type of types) {
109
+ const inferred = BSON_TYPES[type];
110
+ sqliteType = sqliteType.or(inferred.sqliteType);
111
+ bsonTypes.add(inferred.name);
112
+ }
113
+ const internal_type = [...bsonTypes].sort().join(' | ');
114
+ return { name, type: internal_type, sqlite_type: sqliteType.typeFlags, internal_type, pg_type: internal_type };
115
+ })
116
+ .sort((a, b) => a.name.localeCompare(b.name));
117
+ }
118
+ //# 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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"}
@@ -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 experimental. APIs and behavior may change, and long-term stability is not yet guaranteed.');
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,
@@ -491,6 +488,7 @@ export class ChangeStream {
491
488
  // We get a complete postimage for every change, so we don't need to store the current data.
492
489
  storeCurrentData: false,
493
490
  hooks: this.storageHooks,
491
+ signal: this.abortSignal,
494
492
  tracer
495
493
  }, async (batch) => {
496
494
  const { resumeFromLsn } = batch;