@powersync/service-module-mongodb-storage 0.23.1 → 0.24.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 (99) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +201 -67
  3. package/dist/storage/MongoBucketStorage.d.ts +1 -0
  4. package/dist/storage/MongoBucketStorage.js +3 -0
  5. package/dist/storage/MongoBucketStorage.js.map +1 -1
  6. package/dist/storage/implementation/MongoBucketBatch.d.ts +60 -39
  7. package/dist/storage/implementation/MongoBucketBatch.js +123 -296
  8. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  9. package/dist/storage/implementation/MongoOpIdAllocator.d.ts +6 -1
  10. package/dist/storage/implementation/MongoOpIdAllocator.js +12 -5
  11. package/dist/storage/implementation/MongoOpIdAllocator.js.map +1 -1
  12. package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +7 -0
  13. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +28 -2
  14. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
  15. package/dist/storage/implementation/MongoReplicationOptions.d.ts +27 -0
  16. package/dist/storage/implementation/MongoReplicationOptions.js +26 -0
  17. package/dist/storage/implementation/MongoReplicationOptions.js.map +1 -0
  18. package/dist/storage/implementation/MongoSyncBucketStorage.js +2 -3
  19. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  20. package/dist/storage/implementation/MongoSyncRulesLock.d.ts +15 -2
  21. package/dist/storage/implementation/MongoSyncRulesLock.js +36 -14
  22. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  23. package/dist/storage/implementation/common/BatchOperationBuffer.d.ts +79 -0
  24. package/dist/storage/implementation/common/BatchOperationBuffer.js +286 -0
  25. package/dist/storage/implementation/common/BatchOperationBuffer.js.map +1 -0
  26. package/dist/storage/implementation/common/PersistedBatch.d.ts +10 -103
  27. package/dist/storage/implementation/common/PersistedBatch.js +1 -291
  28. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  29. package/dist/storage/implementation/common/PreparedPublication.d.ts +43 -0
  30. package/dist/storage/implementation/common/PreparedPublication.js +2 -0
  31. package/dist/storage/implementation/common/PreparedPublication.js.map +1 -0
  32. package/dist/storage/implementation/common/SourceRecordStore.d.ts +0 -2
  33. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +17 -13
  34. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +259 -18
  35. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  36. package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +21 -15
  37. package/dist/storage/implementation/v1/PersistedBatchV1.js +58 -24
  38. package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
  39. package/dist/storage/implementation/v1/SourceRecordStoreV1.d.ts +0 -2
  40. package/dist/storage/implementation/v1/SourceRecordStoreV1.js +0 -3
  41. package/dist/storage/implementation/v1/SourceRecordStoreV1.js.map +1 -1
  42. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +25 -14
  43. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +350 -23
  44. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  45. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +1 -0
  46. package/dist/storage/implementation/v3/MongoCompactorV3.js +10 -4
  47. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  48. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +39 -28
  49. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
  50. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +46 -24
  51. package/dist/storage/implementation/v3/PersistedBatchV3.js +159 -83
  52. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  53. package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +12 -0
  54. package/dist/storage/implementation/v3/SourceRecordStoreV3.js +41 -13
  55. package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
  56. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +4 -0
  57. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +4 -0
  58. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
  59. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +27 -2
  60. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +61 -5
  61. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
  62. package/package.json +9 -10
  63. package/src/storage/MongoBucketStorage.ts +4 -0
  64. package/src/storage/implementation/MongoBucketBatch.ts +185 -392
  65. package/src/storage/implementation/MongoOpIdAllocator.ts +12 -5
  66. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +40 -1
  67. package/src/storage/implementation/MongoReplicationOptions.ts +28 -0
  68. package/src/storage/implementation/MongoSyncBucketStorage.ts +2 -3
  69. package/src/storage/implementation/MongoSyncRulesLock.ts +39 -17
  70. package/src/storage/implementation/common/BatchOperationBuffer.ts +353 -0
  71. package/src/storage/implementation/common/PersistedBatch.ts +12 -390
  72. package/src/storage/implementation/common/PreparedPublication.ts +49 -0
  73. package/src/storage/implementation/common/SourceRecordStore.ts +0 -2
  74. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +339 -27
  75. package/src/storage/implementation/v1/PersistedBatchV1.ts +74 -32
  76. package/src/storage/implementation/v1/SourceRecordStoreV1.ts +0 -5
  77. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +430 -32
  78. package/src/storage/implementation/v3/MongoCompactorV3.ts +13 -4
  79. package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +43 -29
  80. package/src/storage/implementation/v3/PersistedBatchV3.ts +209 -108
  81. package/src/storage/implementation/v3/SourceRecordStoreV3.ts +45 -15
  82. package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +9 -0
  83. package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +79 -5
  84. package/test/src/checkpoint_cleanup.test.ts +75 -0
  85. package/test/src/concurrent_writers.test.ts +127 -53
  86. package/test/src/helpers/PublicationCommandMonitor.ts +119 -0
  87. package/test/src/helpers/concurrentWriter.mjs +2 -2
  88. package/test/src/invalid_sync_config.test.ts +9 -0
  89. package/test/src/object_storage_lifecycle.test.ts +72 -2
  90. package/test/src/prepared_publication.test.ts +388 -0
  91. package/test/src/replication_preparation.test.ts +829 -0
  92. package/test/src/replication_publication_baseline.test.ts +203 -0
  93. package/test/src/replication_publication_batching.test.ts +212 -0
  94. package/test/src/replication_uploads.test.ts +393 -0
  95. package/test/src/source_table_config.test.ts +4 -4
  96. package/test/src/storage_object_storage_inline_threshold.test.ts +1 -1
  97. package/test/src/storage_s3_compaction_lifecycle.test.ts +93 -1
  98. package/test/src/storage_sync.test.ts +83 -2
  99. package/tsconfig.tsbuildinfo +1 -1
@@ -1,10 +1,12 @@
1
1
  import * as lib_mongo from '@powersync/lib-service-mongodb';
2
- import { ReplicationAssertionError, ServiceAssertionError } from '@powersync/lib-services-framework';
2
+ import { ErrorCode, ReplicationAbortedError, ReplicationAssertionError, ServiceAssertionError, ServiceError } from '@powersync/lib-services-framework';
3
3
  import { storage } from '@powersync/service-core';
4
4
  import * as bson from 'bson';
5
5
  import { mongoTableId } from '../../../utils/util.js';
6
6
  import { canCheckpointState } from '../CheckpointState.js';
7
7
  import { MongoBucketBatch } from '../MongoBucketBatch.js';
8
+ import { OpIdRangeExhausted } from '../MongoIdSequence.js';
9
+ import { OperationBatch } from '../OperationBatch.js';
8
10
  import { stopReplicationStreamPipeline } from '../SyncRuleStateUpdate.js';
9
11
  import { PersistedBatchV3 } from './PersistedBatchV3.js';
10
12
  import { SourceRecordStoreV3 } from './SourceRecordStoreV3.js';
@@ -40,6 +42,321 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
40
42
  get sourceRecordStore() {
41
43
  return this.store;
42
44
  }
45
+ async withTransaction(callback, session = this.session) {
46
+ return this.withFencedTransaction(() => this.fence(session, { state: 1, sync_configs: 1 }), async (stream) => {
47
+ this.assertPreparationContext(stream);
48
+ return callback(stream);
49
+ }, session);
50
+ }
51
+ async flushInner(options, checkpoint, projection) {
52
+ using _span = this.tracer.span('storage', 'flush');
53
+ await this.hooks?.beforeBatchFlush?.(this);
54
+ const input = this.batch;
55
+ const checkpoints = this.write_checkpoint_batch.slice();
56
+ const allocator = this.options.opIdAllocator;
57
+ await allocator.ensureCapacity();
58
+ const contextProjection = { ...projection, state: 1, last_persisted_op: 1, sync_configs: 1 };
59
+ if (checkpoints.length > 0) {
60
+ await this.prepareCustomWriteCheckpoints();
61
+ }
62
+ const prepared = await this.prepareRows(this.session, input);
63
+ let lastOp = prepared.lastOp;
64
+ let checkpointOp;
65
+ if (checkpoints.length > 0) {
66
+ while (true) {
67
+ try {
68
+ checkpointOp = allocator.sequence(lastOp).next();
69
+ lastOp = checkpointOp;
70
+ break;
71
+ }
72
+ catch (error) {
73
+ if (!(error instanceof OpIdRangeExhausted)) {
74
+ throw error;
75
+ }
76
+ await allocator.reserve();
77
+ }
78
+ }
79
+ }
80
+ // Reservations are globally disjoint and this lease's allocator consumes IDs
81
+ // assigned to sealed work, even if publication is abandoned. The writer mutex
82
+ // excludes other writers under this lease during preparation and publication;
83
+ // the transaction fence excludes a different lease owner. Thus preparation
84
+ // does not need to read the persisted head to allocate IDs or reuse records.
85
+ allocator.consume(lastOp);
86
+ const clearError = !this.clearedError && prepared.hasWrites;
87
+ await this.publishPrepared(lastOp, contextProjection, prepared.publications, options, async (stream, writes) => {
88
+ // An empty flush allocates no ID. Use the durable head from the
89
+ // fresh fence for its checkpoint and returned flushed operation.
90
+ if (lastOp === 0n) {
91
+ lastOp = this.persistedOpHead(stream);
92
+ }
93
+ if (clearError) {
94
+ writes.updateOne(this.db.sync_rules, { _id: this.replicationStreamId }, {
95
+ $set: { last_fatal_error: null, last_fatal_error_ts: null }
96
+ });
97
+ }
98
+ if (checkpointOp != null) {
99
+ this.queueCustomWriteCheckpoints(writes, checkpointOp, checkpoints);
100
+ }
101
+ if (checkpoint != null && prepared.resumeBatch == null) {
102
+ // Checkpoint decisions use this attempt's freshly fenced state.
103
+ await checkpoint(stream, lastOp, writes);
104
+ }
105
+ else {
106
+ this.onReplicationTransactionFlush(writes, lastOp);
107
+ }
108
+ });
109
+ this.batch = prepared.resumeBatch;
110
+ this.write_checkpoint_batch.splice(0, checkpoints.length);
111
+ this.clearedError ||= clearError;
112
+ this.last_flushed_op = lastOp;
113
+ // markRecordUnavailable only synchronously queues connector-owned repair
114
+ // keys. It must not mutate input, perform async work, or re-enter storage:
115
+ // the writer mutex is still held. Delivery must finish before flush() returns;
116
+ // WalStream drains that queue before commit()/ack().
117
+ // Once committed, these writes cannot be rolled back if the callback
118
+ // throws. Invalidate the whole local lease while the mutex is held, so
119
+ // no writer sharing it (including queued calls) can advance progress
120
+ // past an undelivered repair. A fresh replication attempt must replay
121
+ // from the old source position and redetect incomplete rows.
122
+ try {
123
+ const notify = this.markRecordUnavailable;
124
+ if (notify != null) {
125
+ for (const record of prepared.repairs) {
126
+ notify(record);
127
+ }
128
+ }
129
+ }
130
+ catch (error) {
131
+ this.options.replicationLock.invalidate(new ReplicationAbortedError('Committed replication repair notification failed; restart replication before advancing source progress', error));
132
+ throw error;
133
+ }
134
+ await this.hooks?.afterBatchFlush?.(this);
135
+ return { flushed_op: lastOp };
136
+ }
137
+ assertPreparationContext(stream) {
138
+ if ([storage.SyncRuleState.STOP, storage.SyncRuleState.TERMINATED].includes(stream.state)) {
139
+ throw new ReplicationAbortedError('Replication stream has stopped');
140
+ }
141
+ this.options.parsedSyncConfig.assertPublicationConfigs(stream.sync_configs);
142
+ }
143
+ /**
144
+ * Internal publisher: the public operation holds the mutex through commit.
145
+ * finish() must only queue writes independent of the final data group, using
146
+ * the fresh fence and planned IDs; it must not execute the supplied batch or
147
+ * read results from unpublished data. Activation and cleanup remain separate.
148
+ */
149
+ async publishPrepared(lastOp, projection, publications, options, finish) {
150
+ // This gate covers every sealed batch in the prefix, including truncate/drop.
151
+ // The transaction must never wait for source reads, evaluation or S3 PUTs.
152
+ // Sequential preparation also avoids leaving another group's uploads running
153
+ // when one group fails; each group's readiness joins all of its own uploads.
154
+ for (const publication of publications) {
155
+ await publication.preparePayloads();
156
+ }
157
+ let attempts = 0;
158
+ const retryDeadline = Date.now() + 90_000;
159
+ try {
160
+ await this.withFencedTransaction(() => this.fence(this.session, projection), async (document) => {
161
+ attempts++;
162
+ if (attempts > 20 && Date.now() > retryDeadline) {
163
+ throw new ServiceError(ErrorCode.PSYNC_S1402, 'Max transaction tries exceeded');
164
+ }
165
+ const stream = document;
166
+ this.assertPreparationContext(stream);
167
+ const head = this.persistedOpHead(stream);
168
+ if (lastOp !== 0n && lastOp <= head) {
169
+ throw new ReplicationAssertionError(`Prepared operation ${lastOp} does not advance persisted stream head ${head}`);
170
+ }
171
+ // Earlier groups may replace the same source record or bucket state.
172
+ // Preserve their execution order; only the final group's writes are
173
+ // independent of the head/checkpoint tail built from this fresh fence.
174
+ for (const publication of publications.slice(0, -1)) {
175
+ using _persist = this.tracer.span('storage', 'persist_flush');
176
+ await publication.publish(this.session, options);
177
+ }
178
+ const writes = this.db.createWriteBatch(this.session, { ordered: false });
179
+ await finish(stream, writes);
180
+ const finalPublication = publications.at(-1);
181
+ if (finalPublication != null) {
182
+ using _persist = this.tracer.span('storage', 'persist_flush');
183
+ await finalPublication.publish(this.session, options, writes);
184
+ }
185
+ else {
186
+ await writes.execute();
187
+ }
188
+ }, this.session, 'Publishing prepared work');
189
+ }
190
+ catch (error) {
191
+ // Publication failed after the driver's retries or our attempt limit.
192
+ // Leave uploaded objects and markers alone: the commit may have succeeded.
193
+ // Stop every writer on this lease and recover from persisted source progress.
194
+ this.options.replicationLock.invalidate(new ReplicationAbortedError('Publication failed; restart replication from persisted progress', error));
195
+ throw error;
196
+ }
197
+ }
198
+ async prepareRows(session, input) {
199
+ const publications = [];
200
+ const repairs = [];
201
+ let resumeBatch = null;
202
+ let lastOp = 0n;
203
+ let hasWrites = false;
204
+ if (input == null) {
205
+ return { publications, repairs, resumeBatch, lastOp, hasWrites };
206
+ }
207
+ using _preparation = this.tracer.span('storage', 'prepare');
208
+ const allocator = this.options.opIdAllocator;
209
+ let sizes;
210
+ // Keep the existing size-based read partitioning, including per-table raw
211
+ // data storage and snapshot skip-existing exceptions. Move these reads;
212
+ // publication never repeats them as a validation pass.
213
+ if (this.options.storeCurrentData &&
214
+ !this.skipExistingRows &&
215
+ input.batch.some((op) => op.record.sourceTable.storeCurrentData)) {
216
+ sizes = await this.sourceRecordStore.loadSizes(session, input.batch
217
+ .filter((op) => op.record.sourceTable.storeCurrentData)
218
+ .map((op) => ({ sourceTableId: mongoTableId(op.record.sourceTable.id), replicaId: op.beforeId })));
219
+ }
220
+ // Only this bounded publication's observations/evaluated rows are retained.
221
+ // No state is shared with another pending publication or another writer.
222
+ const records = new Map();
223
+ let writtenSize = 0;
224
+ for (const block of input.batched(sizes)) {
225
+ if (resumeBatch != null) {
226
+ for (const op of block) {
227
+ resumeBatch.push(op);
228
+ }
229
+ continue;
230
+ }
231
+ const missing = block.filter((op) => !records.has(op.internalBeforeKey));
232
+ if (missing.length > 0) {
233
+ using _lookup = this.tracer.span('storage', 'lookup');
234
+ const loaded = await this.sourceRecordStore.loadDocuments(session, missing.map((op) => ({
235
+ sourceTableId: mongoTableId(op.record.sourceTable.id),
236
+ replicaId: op.beforeId
237
+ })), this.skipExistingRows);
238
+ for (const op of missing) {
239
+ records.set(op.internalBeforeKey, loaded.get(op.internalBeforeKey) ?? null);
240
+ }
241
+ }
242
+ let group = this.createPersistedBatch(writtenSize);
243
+ for (const op of block) {
244
+ if (resumeBatch != null) {
245
+ resumeBatch.push(op);
246
+ continue;
247
+ }
248
+ let next;
249
+ while (true) {
250
+ const rowRepairs = [];
251
+ const row = this.createPersistedBatch(0);
252
+ const sequence = allocator.sequence(lastOp);
253
+ try {
254
+ using _evaluate = this.tracer.span('evaluate');
255
+ next = this.saveOperation(row, op, records.get(op.internalBeforeKey) ?? null, sequence, this.markRecordUnavailable == null
256
+ ? undefined
257
+ : (record) => {
258
+ rowRepairs.push(record);
259
+ });
260
+ group.append(row);
261
+ hasWrites ||= row.currentSize > 0;
262
+ repairs.push(...rowRepairs);
263
+ lastOp = sequence.last();
264
+ break;
265
+ }
266
+ catch (error) {
267
+ if (!(error instanceof OpIdRangeExhausted)) {
268
+ throw error;
269
+ }
270
+ // Retry only the unfinished row; no payload has been uploaded yet.
271
+ this.options.replicationLock.throwIfAborted();
272
+ await allocator.reserve();
273
+ }
274
+ }
275
+ if (op.afterId == null || !storage.replicaIdEquals(op.beforeId, op.afterId)) {
276
+ // Preserve evaluation's existing repeated-row behavior: a deleted
277
+ // identity no longer supplies raw values or membership to later rows.
278
+ records.set(op.internalBeforeKey, null);
279
+ }
280
+ if (next != null) {
281
+ records.set(op.internalAfterKey, next);
282
+ sizes?.set(op.internalAfterKey, next.data?.length() ?? 0);
283
+ }
284
+ if (group.shouldFlushTransaction()) {
285
+ publications.push(group.seal());
286
+ group = null;
287
+ resumeBatch = new OperationBatch();
288
+ }
289
+ }
290
+ if (group != null) {
291
+ writtenSize = group.currentSize;
292
+ publications.push(group.seal());
293
+ }
294
+ }
295
+ return { publications, repairs, resumeBatch: resumeBatch?.hasData() ? resumeBatch : null, lastOp, hasWrites };
296
+ }
297
+ async truncateSingleInternal(sourceTable) {
298
+ const sourceId = mongoTableId(sourceTable.id);
299
+ const session = this.session;
300
+ const projection = { state: 1, sync_configs: 1, last_persisted_op: 1 };
301
+ const allocator = this.options.opIdAllocator;
302
+ while (true) {
303
+ await allocator.ensureCapacity();
304
+ // Preserve the existing bounded table scan. Hard deletion lets the next
305
+ // scan resume at remaining live records without retaining a table overlay.
306
+ const records = await this.sourceRecordStore.loadTruncateBatch(session, sourceId, 2000);
307
+ const group = this.createPersistedBatch(0);
308
+ let lastOp = 0n;
309
+ let processed = 0;
310
+ for (const record of records) {
311
+ while (true) {
312
+ const row = this.createPersistedBatch(0);
313
+ const sequence = allocator.sequence(lastOp);
314
+ try {
315
+ row.saveBucketData({
316
+ op_seq: sequence,
317
+ before_buckets: record.buckets,
318
+ evaluated: [],
319
+ table: sourceTable,
320
+ sourceKey: record.replicaId
321
+ });
322
+ row.saveParameterData({
323
+ op_seq: sequence,
324
+ existing_lookups: record.lookups,
325
+ evaluated: [],
326
+ sourceTable,
327
+ sourceKey: record.replicaId
328
+ });
329
+ // Since this is not from streaming replication, we can do a hard delete.
330
+ row.hardDeleteCurrentData(sourceId, record.replicaId);
331
+ group.append(row);
332
+ lastOp = sequence.last();
333
+ break;
334
+ }
335
+ catch (error) {
336
+ if (!(error instanceof OpIdRangeExhausted)) {
337
+ throw error;
338
+ }
339
+ this.options.replicationLock.throwIfAborted();
340
+ await allocator.reserve();
341
+ }
342
+ }
343
+ processed++;
344
+ if (group.shouldFlushTransaction()) {
345
+ break;
346
+ }
347
+ }
348
+ allocator.consume(lastOp);
349
+ await this.publishPrepared(lastOp, projection, [group.seal()], undefined, async (stream, writes) => {
350
+ if (lastOp === 0n) {
351
+ lastOp = this.persistedOpHead(stream);
352
+ }
353
+ this.onReplicationTransactionFlush(writes, lastOp);
354
+ });
355
+ if (processed === records.length && records.length < 2000) {
356
+ return lastOp;
357
+ }
358
+ }
359
+ }
43
360
  persistedOpHead(stream) {
44
361
  return stream.last_persisted_op ?? 0n;
45
362
  }
@@ -104,7 +421,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
104
421
  });
105
422
  }
106
423
  }
107
- async resolveTables(options) {
424
+ async resolveTablesInternal(options) {
108
425
  // The test-only override is a whole parsed set, so the sync rules and the mapping
109
426
  // used below always come from the same parse.
110
427
  const parsedOverride = options.parsedSyncConfig;
@@ -124,8 +441,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
124
441
  }))
125
442
  };
126
443
  let result = null;
127
- const session = this.db.client.startSession();
128
- await using _ = { [Symbol.asyncDispose]: () => session.endSession() };
444
+ const session = this.session;
129
445
  await this.withTransaction(async () => {
130
446
  const col = this.db.sourceTables(this.replicationStreamId);
131
447
  // Find records that overlap by name or relation id.
@@ -182,7 +498,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
182
498
  }, session);
183
499
  return result;
184
500
  }
185
- async getSourceTableStatus(table) {
501
+ async getSourceTableStatusInternal(table) {
186
502
  const doc = (await this.db
187
503
  .sourceTables(this.replicationStreamId)
188
504
  .findOne({ _id: mongoTableId(table.id) }, { session: this.session }));
@@ -191,13 +507,27 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
191
507
  }
192
508
  return sourceTableFromDocument(doc, table.ref.connectionTag, this.sync_rules, this.mapping, this.options.parsedSyncConfig.eventById);
193
509
  }
194
- async commit(lsn, options) {
510
+ async commitInternal(lsn, options) {
511
+ this.options.replicationLock.throwIfAborted();
512
+ if (this.markRecordUnavailable != null && this.batch?.hasData()) {
513
+ // A combined data+checkpoint commit cannot return control to the connector
514
+ // to process repair notifications between those two durable boundaries.
515
+ // Require its explicit flush -> repair -> commit ordering even when this
516
+ // particular input might turn out not to need repair. An empty batch does
517
+ // not prove its external repair queue is drained; that remains the caller's
518
+ // responsibility. keepalive() delegates here and has the same requirement.
519
+ throw new ReplicationAssertionError('Flush pending rows and process markRecordUnavailable repairs before committing source progress');
520
+ }
195
521
  const { createEmptyCheckpoints } = { ...storage.DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS, ...options };
196
522
  using _ = this.tracer.span('storage', 'commit');
197
- const checkpoint = async (stream, lastOp) => {
523
+ const checkpoint = async (stream, lastOp, additionalWrites) => {
198
524
  const now = new Date();
199
525
  const preUpdateDocument = stream;
200
- const writes = this.db.createWriteBatch(this.session, { ordered: false });
526
+ this.assertPreparationContext(preUpdateDocument);
527
+ // Combined commits join the final data group's batch. Empty commits own
528
+ // and execute their batch here. Decisions depend only on the fresh fence
529
+ // and planned IDs, so no read of the queued data writes is required.
530
+ const writes = additionalWrites ?? this.db.createWriteBatch(this.session, { ordered: false });
201
531
  writes.updateMany(this.db.write_checkpoints, { processed_at_lsn: null, 'lsns.1': { $lte: lsn } }, { $set: { processed_at_lsn: lsn } });
202
532
  const states = preUpdateDocument?.sync_configs?.filter((config) => this.syncConfigIds.some((id) => id.equals(config._id))) ??
203
533
  [];
@@ -288,10 +618,12 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
288
618
  $max: resumeLsnUpdate
289
619
  });
290
620
  }
291
- await writes.execute();
621
+ if (additionalWrites == null) {
622
+ await writes.execute();
623
+ }
292
624
  return { checkpointBlocked, checkpointCreated, checkpointLogState, newCheckpoint };
293
625
  };
294
- const projection = { sync_configs: 1, last_persisted_op: 1 };
626
+ const projection = { state: 1, sync_configs: 1, last_persisted_op: 1 };
295
627
  const { checkpointBlocked, checkpointCreated, checkpointLogState, newCheckpoint } = await this.flushAndCommit(checkpoint, () => this.withFencedTransaction(() => this.fence(this.session, projection), checkpoint), options, projection);
296
628
  if (checkpointBlocked) {
297
629
  if (Date.now() - this.lastWaitingLogThrottledV3 > 5_000) {
@@ -315,10 +647,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
315
647
  checkpointCreated
316
648
  };
317
649
  }
318
- async keepalive(lsn) {
319
- return await this.commit(lsn, { createEmptyCheckpoints: true });
320
- }
321
- async setResumeLsn(lsn) {
650
+ async setResumeLsnInternal(lsn) {
322
651
  using _ = this.tracer.span('storage', 'set_resume_lsn');
323
652
  // Losing occasional resume LSN would only reprocess source changes.
324
653
  // Keep the lease check atomic, but do not wait for majority replication of this resume hint.
@@ -430,12 +759,12 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
430
759
  no_checkpoint_before: { $max: ['$$config.no_checkpoint_before', { $literal: no_checkpoint_before_lsn }] }
431
760
  });
432
761
  }
433
- async markAllSnapshotDone(no_checkpoint_before_lsn) {
762
+ async markAllSnapshotDoneInternal(no_checkpoint_before_lsn) {
434
763
  await this.updateStreamMetadata(this.snapshotDoneUpdate(no_checkpoint_before_lsn), {
435
764
  'sync_configs._id': { $in: this.syncConfigIds }
436
765
  });
437
766
  }
438
- async markSnapshotDone(no_checkpoint_before_lsn, options) {
767
+ async markSnapshotDoneInternal(no_checkpoint_before_lsn, options) {
439
768
  await this.withTransaction(async () => {
440
769
  // Protect against race conditions
441
770
  const blockingTables = await this.db
@@ -458,7 +787,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
458
787
  });
459
788
  });
460
789
  }
461
- async markTableSnapshotRequired(table) {
790
+ async markTableSnapshotRequiredInternal(table) {
462
791
  const syncConfigIds = this.relevantSyncConfigIds(table);
463
792
  if (syncConfigIds.length == 0) {
464
793
  return;
@@ -467,7 +796,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
467
796
  'sync_configs._id': { $in: syncConfigIds }
468
797
  });
469
798
  }
470
- async markTableSnapshotDone(tables, no_checkpoint_before_lsn) {
799
+ async markTableSnapshotDoneInternal(tables, no_checkpoint_before_lsn) {
471
800
  const session = this.session;
472
801
  const ids = tables.map((table) => mongoTableId(table.id));
473
802
  const syncConfigIds = this.relevantSyncConfigIdsForTables(tables);
@@ -502,16 +831,14 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
502
831
  return copy;
503
832
  });
504
833
  }
505
- async batchCreateCustomWriteCheckpoints(session, opId) {
506
- if (this.write_checkpoint_batch.length == 0) {
834
+ queueCustomWriteCheckpoints(writes, opId, checkpoints) {
835
+ if (checkpoints.length == 0) {
507
836
  return;
508
837
  }
509
- const checkpointsByEvent = Map.groupBy(this.write_checkpoint_batch, (checkpoint) => this.validateCustomCheckpointEventId(checkpoint.event_id));
510
- const writes = this.db.createWriteBatch(session, { ordered: false });
838
+ const checkpointsByEvent = Map.groupBy(checkpoints, (checkpoint) => this.validateCustomCheckpointEventId(checkpoint.event_id));
511
839
  for (const [eventId, checkpoints] of checkpointsByEvent) {
512
840
  this.batchCreateEventCustomWriteCheckpoints(writes, opId, eventId, checkpoints);
513
841
  }
514
- await writes.execute();
515
842
  }
516
843
  async prepareCustomWriteCheckpoints() {
517
844
  // Most events never produce custom checkpoints, so create collections lazily
@@ -1 +1 @@
1
- {"version":3,"file":"MongoBucketBatchV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoBucketBatchV3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoBucketBatchV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoBucketBatchV3.ts"],"names":[],"mappings":"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"}
@@ -115,5 +115,6 @@ export declare class MongoCompactorV3 extends MongoCompactor implements CompactI
115
115
  /** Publish replacement uploads and retire superseded objects in the same transaction. */
116
116
  private finishObjectStorageReplacement;
117
117
  private recordObjectStorageReplacement;
118
+ private shouldMoveToObjectStorage;
118
119
  private persistBucketData;
119
120
  }
@@ -479,7 +479,7 @@ export class MongoCompactorV3 extends MongoCompactor {
479
479
  this.logger.info(`Compacted bucket chunks ${bucket}: ${result.bucketStats.count} ops, ${result.bucketStats.chunks} chunks, ${formatBytes(result.bucketStats.bytes)}`);
480
480
  }
481
481
  async flushChunkMerge(bucket, inputs, collection, context, bucketContext, objectStorageUsage) {
482
- if (inputs.length == 1) {
482
+ if (inputs.length == 1 && !this.shouldMoveToObjectStorage(inputs[0])) {
483
483
  return statsForDocument(inputs[0]);
484
484
  }
485
485
  try {
@@ -829,7 +829,7 @@ export class MongoCompactorV3 extends MongoCompactor {
829
829
  * information for the uploaded objects to be cleaned up later.
830
830
  */
831
831
  async flushCompactionGroup(bucket, group, bucketContext, context, objectStorageUsage) {
832
- if (group.inputs.length == 1 && !group.changed) {
832
+ if (group.inputs.length == 1 && !group.changed && !this.shouldMoveToObjectStorage(group.inputs[0])) {
833
833
  return {
834
834
  documentId: group.inputs[0]._id,
835
835
  stats: statsForDocument(group.inputs[0])
@@ -1185,6 +1185,11 @@ export class MongoCompactorV3 extends MongoCompactor {
1185
1185
  }
1186
1186
  objectStorageUsage.applyDelta(definitionId, newBytes - oldBytes, writes);
1187
1187
  }
1188
+ shouldMoveToObjectStorage(document) {
1189
+ return (this.storage.objectStorage != null &&
1190
+ document.storage_ref == null &&
1191
+ document.size > this.storage.inlineThresholdBytes);
1192
+ }
1188
1193
  async persistBucketData(bucket, chunks, context, preparedUploads, options) {
1189
1194
  const serializedChunks = chunks.map((chunk) => serializeBucketData(bucket, chunk, options));
1190
1195
  if (!this.storage.objectStorage) {
@@ -1197,8 +1202,9 @@ export class MongoCompactorV3 extends MongoCompactor {
1197
1202
  const store = new BucketDataObjectStorage(this.storage.objectStorage);
1198
1203
  const storagePaths = new Set();
1199
1204
  const lifecycle = this.objectStorageLifecycle;
1200
- // Base placement on the final compacted size. Unchanged documents are not
1201
- // rewritten, while small MOVE/merge results and CLEAR ops stay inline.
1205
+ // Base placement on the final compacted size. Unchanged documents are only
1206
+ // rewritten to move them to object storage, while small MOVE/merge results
1207
+ // and CLEAR ops stay inline.
1202
1208
  const storedIndexes = serializedChunks.flatMap((document, index) => document.size > this.storage.inlineThresholdBytes ? [index] : []);
1203
1209
  const uploadsByIndex = new Map();
1204
1210
  if (preparedUploads) {