@powersync/service-module-mongodb 0.21.1 → 0.22.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.
Files changed (108) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/benchmarks/env.ts +11 -0
  3. package/benchmarks/replication_branch_throughput.benchmark.ts +240 -0
  4. package/ci/test-connection.yaml +12 -0
  5. package/dist/api/MongoRouteAPIAdapter.d.ts +6 -0
  6. package/dist/api/MongoRouteAPIAdapter.js +33 -4
  7. package/dist/api/MongoRouteAPIAdapter.js.map +1 -1
  8. package/dist/api/infer-collection-schema.d.ts +5 -0
  9. package/dist/api/infer-collection-schema.js +24 -0
  10. package/dist/api/infer-collection-schema.js.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/module/MongoModule.d.ts +1 -2
  15. package/dist/module/MongoModule.js +1 -1
  16. package/dist/module/MongoModule.js.map +1 -1
  17. package/dist/replication/ChangeStream.d.ts +13 -3
  18. package/dist/replication/ChangeStream.js +130 -196
  19. package/dist/replication/ChangeStream.js.map +1 -1
  20. package/dist/replication/ChangeStreamReplicationJob.d.ts +4 -1
  21. package/dist/replication/ChangeStreamReplicationJob.js +19 -8
  22. package/dist/replication/ChangeStreamReplicationJob.js.map +1 -1
  23. package/dist/replication/ChangeStreamReplicator.d.ts +4 -0
  24. package/dist/replication/ChangeStreamReplicator.js +6 -0
  25. package/dist/replication/ChangeStreamReplicator.js.map +1 -1
  26. package/dist/replication/MongoRelation.js +5 -2
  27. package/dist/replication/MongoRelation.js.map +1 -1
  28. package/dist/replication/MongoReplicationQueryProvider.d.ts +85 -0
  29. package/dist/replication/MongoReplicationQueryProvider.js +23 -0
  30. package/dist/replication/MongoReplicationQueryProvider.js.map +1 -0
  31. package/dist/replication/MongoReplicationStream.d.ts +74 -0
  32. package/dist/replication/MongoReplicationStream.js +228 -0
  33. package/dist/replication/MongoReplicationStream.js.map +1 -0
  34. package/dist/replication/MongoReplicationStreamTypes.d.ts +157 -0
  35. package/dist/replication/MongoReplicationStreamTypes.js +19 -0
  36. package/dist/replication/MongoReplicationStreamTypes.js.map +1 -0
  37. package/dist/replication/MongoSnapshotQuery.d.ts +2 -0
  38. package/dist/replication/MongoSnapshotQuery.js +12 -2
  39. package/dist/replication/MongoSnapshotQuery.js.map +1 -1
  40. package/dist/replication/MongoSnapshotter.d.ts +7 -2
  41. package/dist/replication/MongoSnapshotter.js +90 -88
  42. package/dist/replication/MongoSnapshotter.js.map +1 -1
  43. package/dist/replication/RawChangeStream.d.ts +1 -1
  44. package/dist/replication/RawChangeStream.js +1 -1
  45. package/dist/replication/RawChangeStream.js.map +1 -1
  46. package/dist/replication/SourceRowConverter.d.ts +1 -0
  47. package/dist/replication/SourceRowConverter.js +4 -2
  48. package/dist/replication/SourceRowConverter.js.map +1 -1
  49. package/dist/replication/bufferToSqlite.d.ts +3 -1
  50. package/dist/replication/bufferToSqlite.js +35 -23
  51. package/dist/replication/bufferToSqlite.js.map +1 -1
  52. package/dist/replication/estimateFilteredSnapshotCount.d.ts +12 -0
  53. package/dist/replication/estimateFilteredSnapshotCount.js +79 -0
  54. package/dist/replication/estimateFilteredSnapshotCount.js.map +1 -0
  55. package/dist/replication/replication-index.d.ts +7 -0
  56. package/dist/replication/replication-index.js +7 -0
  57. package/dist/replication/replication-index.js.map +1 -1
  58. package/dist/test-utils/ChangeStreamTestContext.d.ts +131 -0
  59. package/dist/test-utils/ChangeStreamTestContext.js +390 -0
  60. package/dist/test-utils/ChangeStreamTestContext.js.map +1 -0
  61. package/dist/test-utils/test-utils-index.d.ts +1 -0
  62. package/dist/test-utils/test-utils-index.js +2 -0
  63. package/dist/test-utils/test-utils-index.js.map +1 -0
  64. package/package.json +11 -10
  65. package/src/api/MongoRouteAPIAdapter.ts +38 -4
  66. package/src/api/infer-collection-schema.ts +26 -0
  67. package/src/index.ts +1 -0
  68. package/src/module/MongoModule.ts +2 -3
  69. package/src/replication/ChangeStream.ts +143 -226
  70. package/src/replication/ChangeStreamReplicationJob.ts +21 -9
  71. package/src/replication/ChangeStreamReplicator.ts +9 -0
  72. package/src/replication/MongoRelation.ts +8 -1
  73. package/src/replication/MongoReplicationQueryProvider.ts +106 -0
  74. package/src/replication/MongoReplicationStream.ts +314 -0
  75. package/src/replication/MongoReplicationStreamTypes.ts +169 -0
  76. package/src/replication/MongoSnapshotQuery.ts +19 -3
  77. package/src/replication/MongoSnapshotter.ts +101 -92
  78. package/src/replication/RawChangeStream.ts +2 -2
  79. package/src/replication/SourceRowConverter.ts +4 -2
  80. package/src/replication/bufferToSqlite.ts +43 -23
  81. package/src/replication/estimateFilteredSnapshotCount.ts +93 -0
  82. package/src/replication/replication-index.ts +7 -0
  83. package/src/test-utils/ChangeStreamTestContext.ts +520 -0
  84. package/src/test-utils/test-utils-index.ts +1 -0
  85. package/test/src/buffer_to_sqlite.test.ts +9 -0
  86. package/test/src/change_event_memory.test.ts +33 -0
  87. package/test/src/change_stream.test.ts +3 -3
  88. package/test/src/change_stream_abort.test.ts +110 -0
  89. package/test/src/change_stream_test_setup.ts +38 -0
  90. package/test/src/chunked_snapshot.test.ts +3 -3
  91. package/test/src/documentdb_mode.test.ts +3 -3
  92. package/test/src/filtering_example.test.ts +65 -0
  93. package/test/src/filtering_lifecycle.test.ts +101 -0
  94. package/test/src/query_provider_availability.test.ts +77 -0
  95. package/test/src/query_provider_diagnostics.test.ts +55 -0
  96. package/test/src/replication_stream.test.ts +688 -0
  97. package/test/src/resume.test.ts +10 -4
  98. package/test/src/resuming_snapshots.test.ts +3 -3
  99. package/test/src/schema.test.ts +62 -19
  100. package/test/src/slow_tests.test.ts +3 -3
  101. package/test/src/snapshot_count.test.ts +146 -0
  102. package/test/src/snapshot_count_integration.test.ts +70 -0
  103. package/test/src/snapshot_query_provider.test.ts +122 -0
  104. package/test/src/stream_progress.test.ts +334 -0
  105. package/test/tsconfig.json +2 -2
  106. package/tsconfig.tsbuildinfo +1 -1
  107. package/vitest.benchmark.config.ts +15 -0
  108. package/test/src/change_stream_utils.ts +0 -375
@@ -3,11 +3,12 @@ import { DatabaseConnectionError, Logger } from '@powersync/lib-services-framewo
3
3
  import { MetricsEngine, SourceEntityDescriptor, SourceTable, storage } from '@powersync/service-core';
4
4
  import { HydratedSyncConfig } from '@powersync/service-sync-rules';
5
5
  import { MongoManager } from './MongoManager.js';
6
+ import { MongoReplicationQueryProviderFactory } from './MongoReplicationQueryProvider.js';
6
7
  import { MongoSnapshotterHooks } from './MongoSnapshotter.js';
7
8
  import { ProjectedChangeStreamDocument } from './RawChangeStream.js';
8
9
  export interface ChangeStreamOptions {
9
- connections: MongoManager;
10
10
  storage: storage.SyncRulesBucketStorage;
11
+ connections: MongoManager;
11
12
  metrics: MetricsEngine;
12
13
  abort_signal: AbortSignal;
13
14
  /**
@@ -27,6 +28,10 @@ export interface ChangeStreamOptions {
27
28
  keepaliveIntervalMs?: number;
28
29
  storageHooks?: storage.StorageHooks;
29
30
  snapshotHooks?: MongoSnapshotterHooks;
31
+ /**
32
+ * Create one adapter per replication attempt, shared with its snapshotter and source probes.
33
+ */
34
+ createReplicationQueryProvider?: MongoReplicationQueryProviderFactory;
30
35
  logger?: Logger;
31
36
  }
32
37
  /**
@@ -41,6 +46,7 @@ export declare class ChangeStreamInvalidatedError extends DatabaseConnectionErro
41
46
  constructor(message: string, cause: any);
42
47
  }
43
48
  export declare class ChangeStream {
49
+ private readonly options;
44
50
  sync_rules: HydratedSyncConfig;
45
51
  group_id: number;
46
52
  connection_id: number;
@@ -65,6 +71,8 @@ export declare class ChangeStream {
65
71
  private changeStreamTimeout;
66
72
  private storageHooks;
67
73
  private readonly sourceRowConverter;
74
+ private readonly queryProvider;
75
+ private readonly hasQueryProviderFactory;
68
76
  private keepaliveIntervalMs;
69
77
  private isDocumentDb;
70
78
  private _checkpointImplementation;
@@ -78,7 +86,9 @@ export declare class ChangeStream {
78
86
  get stopped(): boolean;
79
87
  private get usePostImages();
80
88
  private get configurePostImages();
81
- /** The active checkpoint strategy. Only valid after ensureDetected(). */
89
+ /**
90
+ * The active checkpoint strategy. Only valid after ensureDetected().
91
+ */
82
92
  private get checkpointImplementation();
83
93
  /**
84
94
  * Detect DocumentDB and select the checkpoint implementation for the streaming
@@ -100,7 +110,7 @@ export declare class ChangeStream {
100
110
  private initReplication;
101
111
  private cleanupStoppedSyncConfigs;
102
112
  private streamChanges;
103
- private rawChangeStreamBatches;
113
+ private openChangeStream;
104
114
  private rawToSqliteRow;
105
115
  private createBatchCheckpoint;
106
116
  streamChangesInternal(): Promise<void>;
@@ -1,14 +1,16 @@
1
1
  import { mongo } from '@powersync/lib-service-mongodb';
2
2
  import { container, DatabaseConnectionError, ErrorCode, ReplicationAbortedError, ReplicationAssertionError, ServiceError } from '@powersync/lib-services-framework';
3
3
  import { PerformanceTracer, RelationCache, ReplicationLagTracker, SaveOperationTag } from '@powersync/service-core';
4
+ import { hasMongoFilterExpressions } from '@powersync/service-sync-rules';
4
5
  import { ReplicationMetric } from '@powersync/service-types';
5
6
  import { performance } from 'node:perf_hooks';
6
7
  import { PostImagesOption } from '../types/types.js';
7
8
  import { escapeRegExp } from '../utils.js';
8
9
  import { createCheckpointImplementation } from './checkpoints/create-checkpoint-implementation.js';
9
10
  import { getCacheIdentifier, getMongoRelation } from './MongoRelation.js';
11
+ import { DEFAULT_MONGO_REPLICATION_QUERY_PROVIDER } from './MongoReplicationQueryProvider.js';
12
+ import { openMongoReplicationStream } from './MongoReplicationStream.js';
10
13
  import { MongoSnapshotter } from './MongoSnapshotter.js';
11
- import { parseChangeDocument, rawChangeStream } from './RawChangeStream.js';
12
14
  import { CHECKPOINTS_COLLECTION, detectDocumentDb, timestampToDate } from './replication-utils.js';
13
15
  import { DirectSourceRowConverter } from './SourceRowConverter.js';
14
16
  /**
@@ -25,6 +27,7 @@ export class ChangeStreamInvalidatedError extends DatabaseConnectionError {
25
27
  }
26
28
  }
27
29
  export class ChangeStream {
30
+ options;
28
31
  sync_rules;
29
32
  group_id;
30
33
  connection_id = 1;
@@ -49,6 +52,8 @@ export class ChangeStream {
49
52
  changeStreamTimeout;
50
53
  storageHooks;
51
54
  sourceRowConverter;
55
+ queryProvider;
56
+ hasQueryProviderFactory;
52
57
  keepaliveIntervalMs;
53
58
  isDocumentDb = false;
54
59
  _checkpointImplementation = null;
@@ -59,6 +64,7 @@ export class ChangeStream {
59
64
  lastPersistedResumeTimestamp = 0;
60
65
  lastBatchCheckpoint = 0;
61
66
  constructor(options) {
67
+ this.options = options;
62
68
  this.storage = options.storage;
63
69
  this.metrics = options.metrics;
64
70
  this.group_id = options.storage.replicationStreamId;
@@ -79,6 +85,13 @@ export class ChangeStream {
79
85
  this.sync_rules = options.storage.getParsedSyncRules({
80
86
  defaultSchema: this.defaultDb.databaseName
81
87
  });
88
+ this.hasQueryProviderFactory = options.createReplicationQueryProvider != null;
89
+ this.queryProvider =
90
+ options.createReplicationQueryProvider?.({
91
+ syncConfig: this.sync_rules,
92
+ connectionTag: this.connections.connectionTag,
93
+ defaultSchema: this.defaultDb.databaseName
94
+ }) ?? DEFAULT_MONGO_REPLICATION_QUERY_PROVIDER;
82
95
  this.sourceRowConverter = new DirectSourceRowConverter(this.sync_rules.compatibility);
83
96
  // The change stream aggregation command should timeout before the socket times out,
84
97
  // so we use 90% of the socket timeout value.
@@ -92,7 +105,8 @@ export class ChangeStream {
92
105
  ...options,
93
106
  abortSignal: this.abortSignal,
94
107
  logger: snapshotLogger,
95
- checkpointStreamId: this.checkpointStreamId
108
+ checkpointStreamId: this.checkpointStreamId,
109
+ queryProvider: this.queryProvider
96
110
  });
97
111
  options.abort_signal.addEventListener('abort', () => {
98
112
  this.abortController.abort(options.abort_signal.reason);
@@ -110,7 +124,9 @@ export class ChangeStream {
110
124
  get configurePostImages() {
111
125
  return this.connections.options.postImages == PostImagesOption.AUTO_CONFIGURE;
112
126
  }
113
- /** The active checkpoint strategy. Only valid after ensureDetected(). */
127
+ /**
128
+ * The active checkpoint strategy. Only valid after ensureDetected().
129
+ */
114
130
  get checkpointImplementation() {
115
131
  if (this._checkpointImplementation == null) {
116
132
  throw new ReplicationAssertionError('Checkpoint implementation not initialized - call ensureDetected() first');
@@ -130,6 +146,7 @@ export class ChangeStream {
130
146
  if (this.isDocumentDb) {
131
147
  this.logger.warn('Azure DocumentDB support is in alpha. APIs and behavior may change, and long-term stability is not yet guaranteed.');
132
148
  }
149
+ await this.queryProvider.validateSource?.({ connectionManager: this.connections, isDocumentDb: this.isDocumentDb });
133
150
  this._checkpointImplementation = createCheckpointImplementation(this.isDocumentDb, {
134
151
  client: this.client,
135
152
  db: this.defaultDb,
@@ -365,6 +382,12 @@ export class ChangeStream {
365
382
  await this.snapshotter.waitForInitialSnapshot();
366
383
  }
367
384
  async initReplication() {
385
+ // A previously deployed config may outlive the module that provided pre-filtering.
386
+ // Throw inside replicate() so the failure is persisted in replication diagnostics.
387
+ if (!this.hasQueryProviderFactory &&
388
+ hasMongoFilterExpressions(this.sync_rules.sourceTableConfig, this.connections.connectionTag)) {
389
+ throw new ServiceError(ErrorCode.PSYNC_S1348, 'This sync config requires MongoDB pre-filtering, but no query provider factory is registered. Restore the required module, or remove the filters and deploy a new sync config to restart replication.');
390
+ }
368
391
  const result = await this.snapshotter.checkSlot();
369
392
  await this.snapshotter.setupCheckpointsCollection();
370
393
  if (result.needsInitialSync) {
@@ -390,81 +413,30 @@ export class ChangeStream {
390
413
  catch (e) {
391
414
  if (e instanceof mongo.MongoServerError &&
392
415
  e.codeName == 'NoMatchingDocument' &&
393
- e.errmsg?.includes('post-image was not found')) {
416
+ (e.errmsg?.includes('post-image was not found') || e.errmsg?.includes('pre-image was not found'))) {
394
417
  throw new ChangeStreamInvalidatedError(e.errmsg, e);
395
418
  }
396
419
  throw e;
397
420
  }
398
421
  }
399
- rawChangeStreamBatches(options) {
400
- const position = options.lsn ? this.checkpointImplementation.parseResumePosition(options.lsn) : null;
401
- const startAfter = position?.startAfter ?? undefined;
402
- const resumeAfter = position?.resumeAfter ?? undefined;
403
- const filters = options.filters;
404
- let fullDocument;
405
- if (this.isDocumentDb) {
406
- // DocumentDB does not support changeStreamPreAndPostImages, so 'required' won't work.
407
- fullDocument = 'updateLookup';
408
- }
409
- else if (this.usePostImages) {
410
- // 'read_only' or 'auto_configure'
411
- // Configuration happens during snapshot, or when we see new
412
- // collections.
413
- fullDocument = 'required';
414
- }
415
- else {
416
- fullDocument = 'updateLookup';
417
- }
418
- const streamOptions = {
419
- fullDocument: fullDocument
420
- };
421
- if (!this.isDocumentDb) {
422
- // DocumentDB does not support showExpandedEvents.
423
- streamOptions.showExpandedEvents = true;
424
- }
425
- const pipeline = [
426
- {
427
- $changeStream: streamOptions
428
- },
429
- {
430
- $match: filters.$match
422
+ openChangeStream(options) {
423
+ return openMongoReplicationStream({
424
+ db: this.defaultDb,
425
+ queryProvider: this.queryProvider,
426
+ namespaceFilter: options.filters,
427
+ isDocumentDb: this.isDocumentDb,
428
+ usePostImages: this.usePostImages,
429
+ position: options.lsn ? this.checkpointImplementation.parseResumePosition(options.lsn) : null,
430
+ skipInitialTimestamp: true,
431
+ onBatch: options.onBatch,
432
+ options: {
433
+ batchSize: options.batchSize ?? this.snapshotChunkLength,
434
+ maxAwaitTimeMS: options.maxAwaitTimeMS ?? this.maxAwaitTimeMS,
435
+ maxTimeMS: this.changeStreamTimeout,
436
+ signal: options.signal,
437
+ logger: this.logger,
438
+ tracer: options.tracer
431
439
  }
432
- ];
433
- if (!this.isDocumentDb) {
434
- // DocumentDB does not support $changeStreamSplitLargeEvent.
435
- pipeline.push({ $changeStreamSplitLargeEvent: {} });
436
- }
437
- /**
438
- * Only one of these options can be supplied at a time.
439
- */
440
- if (resumeAfter) {
441
- streamOptions.resumeAfter = resumeAfter;
442
- }
443
- else if (startAfter != null) {
444
- // Legacy: We don't persist lsns without resumeTokens anymore, but we do still handle the
445
- // case if we have an old one.
446
- // This is also relevant for getSnapshotLSN().
447
- // The sentinel implementation never produces a startAfter, and a fresh DocumentDB stream
448
- // opens from "now" with neither option set.
449
- streamOptions.startAtOperationTime = startAfter;
450
- }
451
- let watchDb;
452
- if (this.isDocumentDb || filters.multipleDatabases) {
453
- // DocumentDB only supports cluster-level change streams.
454
- watchDb = this.client.db('admin');
455
- streamOptions.allChangesForCluster = true;
456
- }
457
- else {
458
- watchDb = this.defaultDb;
459
- }
460
- const maxAwaitTimeMS = options.maxAwaitTimeMS ?? this.maxAwaitTimeMS;
461
- return rawChangeStream(watchDb, pipeline, {
462
- batchSize: options.batchSize ?? this.snapshotChunkLength,
463
- maxAwaitTimeMS,
464
- maxTimeMS: this.changeStreamTimeout,
465
- signal: options.signal,
466
- logger: this.logger,
467
- tracer: options.tracer
468
440
  });
469
441
  }
470
442
  rawToSqliteRow(row) {
@@ -495,120 +467,44 @@ export class ChangeStream {
495
467
  if (resumeFromLsn == null) {
496
468
  throw new ReplicationAssertionError(`No LSN found to resume from`);
497
469
  }
498
- // Seed the implementation's coordinate state from the stored LSN, and parse
499
- // the legacy startAfter timestamp (timestamp implementation only) for the
500
- // resume-boundary dedupe guard below.
470
+ // Seed the checkpoint strategy's coordinate from the durable source position.
501
471
  this.checkpointImplementation.seedPosition(resumeFromLsn);
502
- const { startAfter } = this.checkpointImplementation.parseResumePosition(resumeFromLsn);
503
472
  let outerSpan = tracer.span('batch');
504
473
  this.checkpointImplementation.logResume(resumeFromLsn);
505
474
  const filters = this.getSourceNamespaceFilters();
506
475
  // This is closed when the for loop below returns/breaks/throws
507
- const batchStream = this.rawChangeStreamBatches({
476
+ let processingSpan;
477
+ let receivedBytes = 0;
478
+ let changesSinceProgress = 0;
479
+ let filteredSinceProgress = null;
480
+ const stream = this.openChangeStream({
508
481
  lsn: resumeFromLsn,
509
482
  filters,
510
483
  signal: this.abortSignal,
511
- tracer
484
+ tracer,
485
+ onBatch: (batch) => {
486
+ // Count actual transport, even if the adapter drops every envelope or reassembles fragments.
487
+ bytesReplicatedMetric.add(batch.byteSize);
488
+ chunksReplicatedMetric.add(1);
489
+ receivedBytes += batch.byteSize;
490
+ processingSpan = tracer.span('processing');
491
+ return processingSpan;
492
+ }
512
493
  });
513
494
  // Always start with a checkpoint.
514
495
  // This helps us to clear errors when restarting, even if there is
515
496
  // no data to replicate.
516
497
  let waitForCheckpointLsn = await this.createBatchCheckpoint();
517
- let splitDocument = null;
518
- let flexDbNameWorkaroundLogged = false;
519
- let lastEmptyResume = performance.now();
498
+ let lastKeepalive = performance.now();
520
499
  let lastTxnKey = null;
521
- for await (let eventBatch of batchStream) {
522
- const { events, resumeToken } = eventBatch;
523
- using batchSpan = tracer.span('processing');
524
- bytesReplicatedMetric.add(eventBatch.byteSize);
525
- chunksReplicatedMetric.add(1);
526
- if (this.abortSignal.aborted) {
500
+ streamLoop: for await (const sourceBatch of stream) {
501
+ if (this.abortSignal.aborted)
527
502
  break;
528
- }
529
- this.touch();
530
- if (events.length == 0) {
531
- // No changes in this batch, but we still want to persist progress.
532
- // We do this by persisting a keepalive checkpoint.
533
- // If we don't update it on empty events, we do keep consistency, but resuming the stream
534
- // with old tokens may cause connection timeouts.
535
- const hadRecentKeepalive = performance.now() - lastEmptyResume < this.keepaliveIntervalMs;
536
- if (waitForCheckpointLsn == null && !hadRecentKeepalive) {
537
- // Case 1: We have no changes, and we are not waiting for a checkpoint to be created,
538
- // and we have not recently persisted a keepalive. Persist one now, and call setResumeLsn() below.
539
- // This is the normal case for an idle stream.
540
- // The implementation persists a keepalive (timestamp) or bumps the
541
- // sentinel so a later event commits (sentinel). Logging is handled
542
- // inside the implementation.
543
- await this.checkpointImplementation.keepalive(batch, resumeToken);
544
- this.touch();
545
- lastEmptyResume = performance.now();
546
- this.replicationLag.markStarted();
547
- }
548
- else if (hadRecentKeepalive) {
549
- // Case 2: We have no changes, and may or may not be waiting for a checkpoint to be created.
550
- // We have recently persisted a keepalive.
551
- // Continue waiting.
552
- continue;
553
- }
554
- else {
555
- // Case 3: Waiting for a checkpoint; have not had a recent keepalive.
556
- // We cannot call checkpointImplementation.keepalive() here, but we do call
557
- // setResumeLsn() below.
558
- }
559
- }
560
- this.touch();
561
- for (let eventIndex = 0; eventIndex < events.length; eventIndex++) {
562
- const rawChangeDocument = events[eventIndex];
563
- const originalChangeDocument = parseChangeDocument(rawChangeDocument);
564
- if (this.abortSignal.aborted) {
565
- break;
566
- }
567
- if (startAfter != null && originalChangeDocument.clusterTime?.lte(startAfter)) {
568
- continue;
569
- }
570
- let changeDocument = originalChangeDocument;
571
- if (originalChangeDocument?.splitEvent != null) {
572
- // Handle split events from $changeStreamSplitLargeEvent.
573
- // This is only relevant for very large update operations.
574
- const splitEvent = originalChangeDocument?.splitEvent;
575
- if (splitDocument == null) {
576
- splitDocument = originalChangeDocument;
577
- }
578
- else {
579
- splitDocument = Object.assign(splitDocument, originalChangeDocument);
580
- }
581
- if (splitEvent.fragment == splitEvent.of) {
582
- // Got all fragments
583
- changeDocument = splitDocument;
584
- splitDocument = null;
585
- }
586
- else {
587
- // Wait for more fragments
588
- continue;
589
- }
590
- }
591
- else if (splitDocument != null) {
592
- // We were waiting for fragments, but got a different event
593
- throw new ReplicationAssertionError(`Incomplete splitEvent: ${JSON.stringify(splitDocument.splitEvent)}`);
594
- }
595
- if (!filters.multipleDatabases &&
596
- 'ns' in changeDocument &&
597
- changeDocument.ns.db != this.defaultDb.databaseName &&
598
- changeDocument.ns.db.endsWith(`_${this.defaultDb.databaseName}`)) {
599
- // When all of the following conditions are met:
600
- // 1. We're replicating from an Atlas Flex instance.
601
- // 2. There were changestream events recorded while the PowerSync service is paused.
602
- // 3. We're only replicating from a single database.
603
- // Then we've observed an ns with for example {db: '67b83e86cd20730f1e766dde_ps'},
604
- // instead of the expected {db: 'ps'}.
605
- // We correct this.
606
- changeDocument.ns.db = this.defaultDb.databaseName;
607
- if (!flexDbNameWorkaroundLogged) {
608
- flexDbNameWorkaroundLogged = true;
609
- this.logger.warn(`Incorrect DB name in change stream: ${changeDocument.ns.db}. Changed to ${this.defaultDb.databaseName}.`);
610
- }
611
- }
503
+ for (const { event: changeDocument, hasBufferedChanges } of sourceBatch.events) {
504
+ if (this.abortSignal.aborted)
505
+ break streamLoop;
506
+ this.touch();
507
+ changesSinceProgress++;
612
508
  const ns = 'ns' in changeDocument && 'coll' in changeDocument.ns ? changeDocument.ns : undefined;
613
509
  if (ns?.coll == CHECKPOINTS_COLLECTION) {
614
510
  /**
@@ -651,7 +547,6 @@ export class ChangeStream {
651
547
  // Once there is already a batch checkpoint pending, or the driver has buffered more
652
548
  // change stream events, collapse standalone checkpoints into the normal batch
653
549
  // checkpoint flow to avoid commit churn under sustained load.
654
- const hasBufferedChanges = eventIndex < events.length - 1;
655
550
  if (hasBufferedChanges && waitForCheckpointLsn == null) {
656
551
  // Buffered changes - create a new batch checkpoint to rate limit commits
657
552
  using _ = tracer.span('source_checkpoint');
@@ -749,34 +644,73 @@ export class ChangeStream {
749
644
  });
750
645
  }
751
646
  }
752
- if (splitDocument == null) {
753
- // We flush and mark progress on every batch of data we receive.
754
- // Batches are generally large (64MB or 6000 events, whichever comes first),
755
- // so this is a good natural point to flush and mark progress.
756
- // We avoid this when splitDocument is set, since we cannot resume in the middle of a split event.
647
+ if (this.abortSignal.aborted)
648
+ break;
649
+ this.touch();
650
+ const batchFilteredCount = sourceBatch.metadata.filteredCount;
651
+ if (batchFilteredCount != null) {
652
+ filteredSinceProgress = (filteredSinceProgress ?? 0) + batchFilteredCount;
653
+ }
654
+ const resumeToken = sourceBatch.getResumeToken();
655
+ if (resumeToken != null) {
656
+ const filteredCount = filteredSinceProgress;
657
+ if (changesSinceProgress == 0) {
658
+ // No retained changes since the previous progress boundary: this is either idle or filtered-only traffic.
659
+ // Case 1: No pending barrier and the keepalive interval has elapsed. Advance checkpoints as below,
660
+ // then flush and save the resume token.
661
+ // Case 2: Idle traffic with a recent keepalive. Skip this resume update, whether or not a barrier
662
+ // is pending, to preserve the idle throttle.
663
+ // Case 3: All other combinations. Flush and save the resume token without requesting a checkpoint.
664
+ // A pending barrier will provide the checkpoint boundary once replication reaches it. Filtered
665
+ // progress still saves its token even during the keepalive interval, so excluded work is resumable.
666
+ const hadRecentKeepalive = performance.now() - lastKeepalive < this.keepaliveIntervalMs;
667
+ if (waitForCheckpointLsn == null && !hadRecentKeepalive) {
668
+ if ((filteredCount ?? 0) > 0) {
669
+ // Case 1a: A transaction can span batches: this batch may contain only filtered changes,
670
+ // while retained changes from the same transaction are still unread. They share a timestamp,
671
+ // so publishing a checkpoint here could acknowledge the transaction before its data is saved.
672
+ // Request a source barrier; reaching it ensures those retained changes have been processed.
673
+ // The progress token can still be saved below for recovery without publishing a checkpoint.
674
+ using _ = tracer.span('source_checkpoint');
675
+ waitForCheckpointLsn = await this.createBatchCheckpoint();
676
+ }
677
+ else {
678
+ // Case 1b: Idle traffic. The timestamp implementation persists a keepalive directly;
679
+ // the sentinel implementation writes a source marker whose event will commit later.
680
+ await this.checkpointImplementation.keepalive(batch, resumeToken);
681
+ this.replicationLag.markStarted();
682
+ }
683
+ this.touch();
684
+ lastKeepalive = performance.now();
685
+ }
686
+ else if ((filteredCount ?? 0) == 0 && hadRecentKeepalive) {
687
+ // Case 2: Only idle progress skips resume persistence. Cases 1 and 3 fall through below.
688
+ continue;
689
+ }
690
+ }
757
691
  const { lsn, timestamp } = this.checkpointImplementation.lsnFromResumeToken(resumeToken);
692
+ // Row writes must be durable before their source token. This advances recovery without
693
+ // publishing a checkpoint ahead of an outstanding barrier, transaction or snapshot.
758
694
  await batch.flush({ oldestUncommittedChange: this.replicationLag.oldestUncommittedChange });
759
- // TODO: We should consider making this standard behavior of flush().
760
695
  await batch.setResumeLsn(lsn);
761
- if (timestamp != null) {
762
- // Note that this timestamp provided by MongoDB is not exact - it can be around 10s behind.
763
- this.lastPersistedResumeTimestamp = timestamp.getTime();
764
- }
765
- else {
766
- // DocumentDB: No timestamp associated with the resumeToken. Just use the current time.
767
- this.lastPersistedResumeTimestamp = Date.now();
768
- }
696
+ // MongoDB's token timestamp may lag by about 10 seconds. DocumentDB tokens have no timestamp.
697
+ this.lastPersistedResumeTimestamp = timestamp?.getTime() ?? Date.now();
698
+ processingSpan?.end();
699
+ const durationsMicroseconds = outerSpan.end();
700
+ const filteringDescription = filteredCount == null ? '' : ` and ${filteredCount} filtered events`;
701
+ this.logger.info(`Processed ${changesSinceProgress} changes${filteringDescription}`, {
702
+ count: changesSinceProgress,
703
+ ...(filteredCount == null ? {} : { filteredCount }),
704
+ bytes: receivedBytes,
705
+ duration: processingSpan?.durationMillis,
706
+ t: durationsMicroseconds
707
+ });
708
+ changesSinceProgress = 0;
709
+ filteredSinceProgress = null;
710
+ receivedBytes = 0;
711
+ outerSpan = tracer.span('batch');
712
+ continue;
769
713
  }
770
- batchSpan.end();
771
- const durationsMicroseconds = outerSpan.end();
772
- const duration = batchSpan.durationMillis;
773
- this.logger.info(`Processed batch of ${events.length} changes / ${eventBatch.byteSize} bytes in ${duration}ms`, {
774
- count: events.length,
775
- bytes: eventBatch.byteSize,
776
- duration,
777
- t: durationsMicroseconds
778
- });
779
- outerSpan = tracer.span('batch');
780
714
  }
781
715
  });
782
716
  throw new ReplicationAbortedError(`Replication stream aborted`, this.abortSignal.reason);
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeStream.js","sourceRoot":"","sources":["../../src/replication/ChangeStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChangeStream.js","sourceRoot":"","sources":["../../src/replication/ChangeStream.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { replication } from '@powersync/service-core';
2
2
  import { ConnectionManagerFactory } from './ConnectionManagerFactory.js';
3
+ import { MongoReplicationQueryProviderFactory } from './MongoReplicationQueryProvider.js';
3
4
  export interface ChangeStreamReplicationJobOptions extends replication.AbstractReplicationJobOptions {
4
5
  connectionFactory: ConnectionManagerFactory;
6
+ createReplicationQueryProvider?: MongoReplicationQueryProviderFactory;
5
7
  }
6
8
  export declare class ChangeStreamReplicationJob extends replication.AbstractReplicationJob {
7
- private connectionFactory;
9
+ private readonly connectionFactory;
10
+ private readonly createReplicationQueryProvider;
8
11
  private lastStream;
9
12
  constructor(options: ChangeStreamReplicationJobOptions);
10
13
  cleanUp(): Promise<void>;