@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.
- package/CHANGELOG.md +42 -0
- package/LICENSE +201 -67
- package/dist/storage/MongoBucketStorage.d.ts +1 -0
- package/dist/storage/MongoBucketStorage.js +3 -0
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +60 -39
- package/dist/storage/implementation/MongoBucketBatch.js +123 -296
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoOpIdAllocator.d.ts +6 -1
- package/dist/storage/implementation/MongoOpIdAllocator.js +12 -5
- package/dist/storage/implementation/MongoOpIdAllocator.js.map +1 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +7 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js +28 -2
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
- package/dist/storage/implementation/MongoReplicationOptions.d.ts +27 -0
- package/dist/storage/implementation/MongoReplicationOptions.js +26 -0
- package/dist/storage/implementation/MongoReplicationOptions.js.map +1 -0
- package/dist/storage/implementation/MongoSyncBucketStorage.js +2 -3
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +15 -2
- package/dist/storage/implementation/MongoSyncRulesLock.js +36 -14
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/common/BatchOperationBuffer.d.ts +79 -0
- package/dist/storage/implementation/common/BatchOperationBuffer.js +286 -0
- package/dist/storage/implementation/common/BatchOperationBuffer.js.map +1 -0
- package/dist/storage/implementation/common/PersistedBatch.d.ts +10 -103
- package/dist/storage/implementation/common/PersistedBatch.js +1 -291
- package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
- package/dist/storage/implementation/common/PreparedPublication.d.ts +43 -0
- package/dist/storage/implementation/common/PreparedPublication.js +2 -0
- package/dist/storage/implementation/common/PreparedPublication.js.map +1 -0
- package/dist/storage/implementation/common/SourceRecordStore.d.ts +0 -2
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +17 -13
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +259 -18
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +21 -15
- package/dist/storage/implementation/v1/PersistedBatchV1.js +58 -24
- package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/SourceRecordStoreV1.d.ts +0 -2
- package/dist/storage/implementation/v1/SourceRecordStoreV1.js +0 -3
- package/dist/storage/implementation/v1/SourceRecordStoreV1.js.map +1 -1
- package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +25 -14
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +350 -23
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +1 -0
- package/dist/storage/implementation/v3/MongoCompactorV3.js +10 -4
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +39 -28
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
- package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +46 -24
- package/dist/storage/implementation/v3/PersistedBatchV3.js +159 -83
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +12 -0
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js +41 -13
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +4 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +4 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +27 -2
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +61 -5
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
- package/package.json +9 -10
- package/src/storage/MongoBucketStorage.ts +4 -0
- package/src/storage/implementation/MongoBucketBatch.ts +185 -392
- package/src/storage/implementation/MongoOpIdAllocator.ts +12 -5
- package/src/storage/implementation/MongoParsedSyncConfigSet.ts +40 -1
- package/src/storage/implementation/MongoReplicationOptions.ts +28 -0
- package/src/storage/implementation/MongoSyncBucketStorage.ts +2 -3
- package/src/storage/implementation/MongoSyncRulesLock.ts +39 -17
- package/src/storage/implementation/common/BatchOperationBuffer.ts +353 -0
- package/src/storage/implementation/common/PersistedBatch.ts +12 -390
- package/src/storage/implementation/common/PreparedPublication.ts +49 -0
- package/src/storage/implementation/common/SourceRecordStore.ts +0 -2
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +339 -27
- package/src/storage/implementation/v1/PersistedBatchV1.ts +74 -32
- package/src/storage/implementation/v1/SourceRecordStoreV1.ts +0 -5
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +430 -32
- package/src/storage/implementation/v3/MongoCompactorV3.ts +13 -4
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +43 -29
- package/src/storage/implementation/v3/PersistedBatchV3.ts +209 -108
- package/src/storage/implementation/v3/SourceRecordStoreV3.ts +45 -15
- package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +9 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +79 -5
- package/test/src/checkpoint_cleanup.test.ts +75 -0
- package/test/src/concurrent_writers.test.ts +127 -53
- package/test/src/helpers/PublicationCommandMonitor.ts +119 -0
- package/test/src/helpers/concurrentWriter.mjs +2 -2
- package/test/src/invalid_sync_config.test.ts +9 -0
- package/test/src/object_storage_lifecycle.test.ts +72 -2
- package/test/src/prepared_publication.test.ts +388 -0
- package/test/src/replication_preparation.test.ts +829 -0
- package/test/src/replication_publication_baseline.test.ts +203 -0
- package/test/src/replication_publication_batching.test.ts +212 -0
- package/test/src/replication_uploads.test.ts +393 -0
- package/test/src/source_table_config.test.ts +4 -4
- package/test/src/storage_object_storage_inline_threshold.test.ts +1 -1
- package/test/src/storage_s3_compaction_lifecycle.test.ts +93 -1
- package/test/src/storage_sync.test.ts +83 -2
- 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
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
506
|
-
if (
|
|
834
|
+
queueCustomWriteCheckpoints(writes, opId, checkpoints) {
|
|
835
|
+
if (checkpoints.length == 0) {
|
|
507
836
|
return;
|
|
508
837
|
}
|
|
509
|
-
const checkpointsByEvent = Map.groupBy(
|
|
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
|
|
1201
|
-
// rewritten, while small MOVE/merge results
|
|
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) {
|