@powersync/service-module-mongodb-storage 0.0.0-dev-20260803144812 → 0.0.0-dev-20260929095716
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 +129 -7
- package/dist/storage/MongoBucketStorage.d.ts +42 -5
- package/dist/storage/MongoBucketStorage.js +404 -215
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +39 -14
- package/dist/storage/implementation/MongoBucketBatch.js +169 -98
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoCompactor.d.ts +21 -79
- package/dist/storage/implementation/MongoCompactor.js +27 -238
- package/dist/storage/implementation/MongoCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoIdSequence.d.ts +10 -1
- package/dist/storage/implementation/MongoIdSequence.js +14 -1
- package/dist/storage/implementation/MongoIdSequence.js.map +1 -1
- package/dist/storage/implementation/MongoOpIdAllocator.d.ts +27 -0
- package/dist/storage/implementation/MongoOpIdAllocator.js +97 -0
- package/dist/storage/implementation/MongoOpIdAllocator.js.map +1 -0
- package/dist/storage/implementation/MongoParameterCompactor.d.ts +83 -10
- package/dist/storage/implementation/MongoParameterCompactor.js +309 -96
- package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +9 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js +35 -2
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
- package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +2 -1
- package/dist/storage/implementation/MongoPersistedReplicationStream.js +7 -4
- package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -1
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +3 -3
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +10 -8
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -1
- package/dist/storage/implementation/MongoStorageProvider.js +8 -4
- package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +32 -11
- package/dist/storage/implementation/MongoSyncBucketStorage.js +95 -31
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +26 -2
- package/dist/storage/implementation/MongoSyncRulesLock.js +59 -10
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/MongoWriteBatch.d.ts +49 -0
- package/dist/storage/implementation/MongoWriteBatch.js +149 -0
- package/dist/storage/implementation/MongoWriteBatch.js.map +1 -0
- package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +9 -7
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js +9 -30
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
- package/dist/storage/implementation/SyncRuleStateUpdate.d.ts +11 -5
- package/dist/storage/implementation/SyncRuleStateUpdate.js +14 -6
- package/dist/storage/implementation/SyncRuleStateUpdate.js.map +1 -1
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +22 -2
- package/dist/storage/implementation/common/PersistedBatch.d.ts +32 -4
- package/dist/storage/implementation/common/PersistedBatch.js +57 -14
- package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.d.ts +3 -0
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +3 -0
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
- package/dist/storage/implementation/db.d.ts +9 -1
- package/dist/storage/implementation/db.js +28 -1
- package/dist/storage/implementation/db.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +35 -0
- package/dist/storage/implementation/models.js.map +1 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +11 -0
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +227 -221
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +38 -6
- package/dist/storage/implementation/v1/MongoCompactorV1.js +247 -20
- package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.d.ts +16 -2
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.js +20 -9
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +18 -11
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +66 -17
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
- package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +7 -5
- package/dist/storage/implementation/v1/PersistedBatchV1.js +22 -28
- package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/models.js +1 -0
- package/dist/storage/implementation/v1/models.js.map +1 -1
- package/dist/storage/implementation/v3/CompactionLease.d.ts +50 -0
- package/dist/storage/implementation/v3/CompactionLease.js +131 -0
- package/dist/storage/implementation/v3/CompactionLease.js.map +1 -0
- package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +14 -2
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +261 -194
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +83 -25
- package/dist/storage/implementation/v3/MongoCompactorV3.js +702 -159
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +18 -0
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +23 -0
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +1 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +2 -15
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +60 -92
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -1
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +19 -9
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +92 -32
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.d.ts +26 -0
- package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js +82 -0
- package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js.map +1 -0
- package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +14 -8
- package/dist/storage/implementation/v3/PersistedBatchV3.js +77 -45
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +12 -2
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +42 -3
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
- package/dist/storage/implementation/v3/bucket-format.js +2 -0
- package/dist/storage/implementation/v3/bucket-format.js.map +1 -1
- package/dist/storage/implementation/v3/compact-utils.d.ts +108 -0
- package/dist/storage/implementation/v3/compact-utils.js +223 -0
- package/dist/storage/implementation/v3/compact-utils.js.map +1 -0
- package/dist/storage/implementation/v3/compaction-constants.d.ts +5 -0
- package/dist/storage/implementation/v3/compaction-constants.js +6 -0
- package/dist/storage/implementation/v3/compaction-constants.js.map +1 -0
- package/dist/storage/implementation/v3/models.d.ts +90 -6
- package/dist/storage/implementation/v3/models.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +7 -8
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +16 -5
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +14 -11
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +6 -8
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +17 -11
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.d.ts +38 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js +164 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +37 -12
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +197 -25
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -1
- package/dist/storage/implementation/v3/source-table-utils.d.ts +15 -7
- package/dist/storage/implementation/v3/source-table-utils.js +49 -57
- package/dist/storage/implementation/v3/source-table-utils.js.map +1 -1
- package/dist/storage/storage-index.d.ts +2 -1
- package/dist/storage/storage-index.js +1 -0
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/types/types.d.ts +28 -1
- package/dist/types/types.js +28 -7
- package/dist/types/types.js.map +1 -1
- package/dist/utils/test-utils.d.ts +4 -2
- package/dist/utils/test-utils.js +7 -4
- package/dist/utils/test-utils.js.map +1 -1
- package/dist/utils/util.js +3 -1
- package/dist/utils/util.js.map +1 -1
- package/package.json +10 -9
- package/src/storage/MongoBucketStorage.ts +545 -277
- package/src/storage/implementation/MongoBucketBatch.ts +258 -124
- package/src/storage/implementation/MongoCompactor.ts +37 -346
- package/src/storage/implementation/MongoIdSequence.ts +21 -1
- package/src/storage/implementation/MongoOpIdAllocator.ts +105 -0
- package/src/storage/implementation/MongoParameterCompactor.ts +388 -102
- package/src/storage/implementation/MongoParsedSyncConfigSet.ts +46 -1
- package/src/storage/implementation/MongoPersistedReplicationStream.ts +12 -4
- package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +48 -29
- package/src/storage/implementation/MongoStorageProvider.ts +16 -4
- package/src/storage/implementation/MongoSyncBucketStorage.ts +133 -40
- package/src/storage/implementation/MongoSyncRulesLock.ts +78 -12
- package/src/storage/implementation/MongoWriteBatch.ts +172 -0
- package/src/storage/implementation/MongoWriteCheckpointAPI.ts +16 -46
- package/src/storage/implementation/SyncRuleStateUpdate.ts +13 -6
- package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +24 -2
- package/src/storage/implementation/common/PersistedBatch.ts +76 -20
- package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +4 -0
- package/src/storage/implementation/db.ts +36 -2
- package/src/storage/implementation/models.ts +39 -0
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +272 -254
- package/src/storage/implementation/v1/MongoCompactorV1.ts +327 -40
- package/src/storage/implementation/v1/MongoParameterCompactorV1.ts +25 -9
- package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +88 -28
- package/src/storage/implementation/v1/PersistedBatchV1.ts +25 -30
- package/src/storage/implementation/v1/models.ts +1 -0
- package/src/storage/implementation/v3/CompactionLease.ts +152 -0
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +339 -247
- package/src/storage/implementation/v3/MongoCompactorV3.ts +955 -225
- package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +34 -0
- package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +100 -109
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +112 -42
- package/src/storage/implementation/v3/MongoWriteCheckpointAPIV3.ts +111 -0
- package/src/storage/implementation/v3/PersistedBatchV3.ts +94 -51
- package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +55 -4
- package/src/storage/implementation/v3/bucket-format.ts +2 -0
- package/src/storage/implementation/v3/compact-utils.ts +329 -0
- package/src/storage/implementation/v3/compaction-constants.ts +5 -0
- package/src/storage/implementation/v3/models.ts +97 -4
- package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +24 -9
- package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +20 -5
- package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +26 -14
- package/src/storage/implementation/v3/object-storage/ObjectStorageUsage.ts +229 -0
- package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +279 -29
- package/src/storage/implementation/v3/source-table-utils.ts +82 -76
- package/src/storage/storage-index.ts +2 -0
- package/src/types/types.ts +42 -7
- package/src/utils/test-utils.ts +9 -5
- package/src/utils/util.ts +3 -1
- package/test/src/__snapshots__/storage.test.ts.snap +25 -0
- package/test/src/__snapshots__/storage_sync.test.ts.snap +794 -205
- package/test/src/chunk_compaction_config.test.ts +38 -0
- package/test/src/cleanup-stopped-sync-configs.test.ts +59 -26
- package/test/src/compact-utils.test.ts +251 -0
- package/test/src/concurrent_writers.test.ts +599 -0
- package/test/src/connection_config.test.ts +159 -0
- package/test/src/helpers/MemoryObjectStorage.ts +14 -6
- package/test/src/helpers/concurrentWriter.mjs +29 -0
- package/test/src/helpers/s3TestFactory.ts +12 -12
- package/test/src/object_storage_usage.test.ts +268 -0
- package/test/src/parameter_compacting_v1.test.ts +120 -0
- package/test/src/parameter_compacting_v3.test.ts +192 -0
- package/test/src/parameter_compaction_fence.test.ts +276 -0
- package/test/src/storage.test.ts +280 -24
- package/test/src/storage_compacting.test.ts +1097 -253
- package/test/src/storage_object_storage_inline_threshold.test.ts +3 -3
- package/test/src/storage_s3_checksums.test.ts +6 -7
- package/test/src/storage_s3_compaction_lifecycle.test.ts +143 -17
- package/test/src/storage_s3_reading.test.ts +294 -6
- package/test/src/storage_s3_writing.test.ts +4 -3
- package/test/src/storage_sync.test.ts +412 -80
- package/test/src/storeCurrentData.test.ts +5 -5
- package/test/src/util.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoBucketStorage.js","sourceRoot":"","sources":["../../src/storage/MongoBucketStorage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MongoBucketStorage.js","sourceRoot":"","sources":["../../src/storage/MongoBucketStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import {
|
|
2
|
+
import { EventDefinitionId, HydratedEventDescriptor, HydratedSyncConfig } from '@powersync/service-sync-rules';
|
|
3
3
|
import * as bson from 'bson';
|
|
4
4
|
import { BaseObserver, Logger } from '@powersync/lib-services-framework';
|
|
5
5
|
import { BucketDefinitionMapping, BucketStorageMarkRecordUnavailable, InternalOpId, PerformanceTracer, storage } from '@powersync/service-core';
|
|
6
6
|
import { PersistedBatch } from './common/PersistedBatch.js';
|
|
7
7
|
import { SourceRecordStore } from './common/SourceRecordStore.js';
|
|
8
8
|
import type { VersionedPowerSyncMongo } from './db.js';
|
|
9
|
+
import { SyncRuleDocumentBase } from './models.js';
|
|
10
|
+
import { MongoOpIdAllocator } from './MongoOpIdAllocator.js';
|
|
9
11
|
import { MongoParsedSyncConfigSet } from './MongoParsedSyncConfigSet.js';
|
|
12
|
+
import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
|
|
13
|
+
import { MongoWriteBatch } from './MongoWriteBatch.js';
|
|
10
14
|
import { ObjectStorage } from './v3/object-storage/ObjectStorage.js';
|
|
11
15
|
export interface MongoBucketBatchOptions {
|
|
16
|
+
replicationLock: MongoSyncRulesLock;
|
|
17
|
+
opIdAllocator: MongoOpIdAllocator;
|
|
12
18
|
db: VersionedPowerSyncMongo;
|
|
13
19
|
/**
|
|
14
20
|
* The parsed sync config set for this batch.
|
|
@@ -37,6 +43,10 @@ export interface MongoBucketBatchOptions {
|
|
|
37
43
|
hooks: storage.StorageHooks | undefined;
|
|
38
44
|
logger: Logger;
|
|
39
45
|
tracer?: PerformanceTracer<'storage' | 'evaluate'>;
|
|
46
|
+
/**
|
|
47
|
+
* Aborts in-flight object storage uploads when replication stops.
|
|
48
|
+
*/
|
|
49
|
+
signal?: AbortSignal;
|
|
40
50
|
objectStorage?: ObjectStorage;
|
|
41
51
|
inlineThresholdBytes?: number;
|
|
42
52
|
}
|
|
@@ -61,8 +71,9 @@ export declare abstract class MongoBucketBatch extends BaseObserver<storage.Buck
|
|
|
61
71
|
private readonly storeCurrentData;
|
|
62
72
|
readonly skipExistingRows: boolean;
|
|
63
73
|
protected readonly mapping: BucketDefinitionMapping;
|
|
74
|
+
protected readonly objectStorageUsageWriterId: string;
|
|
64
75
|
private batch;
|
|
65
|
-
|
|
76
|
+
protected write_checkpoint_batch: storage.CustomWriteCheckpointOptions[];
|
|
66
77
|
private markRecordUnavailable;
|
|
67
78
|
private hooks;
|
|
68
79
|
private clearedError;
|
|
@@ -98,26 +109,37 @@ export declare abstract class MongoBucketBatch extends BaseObserver<storage.Buck
|
|
|
98
109
|
}): Promise<void>;
|
|
99
110
|
abstract markTableSnapshotRequired(table: storage.SourceTable): Promise<void>;
|
|
100
111
|
abstract markTableSnapshotDone(tables: storage.SourceTable[], no_checkpoint_before_lsn?: string): Promise<storage.SourceTable[]>;
|
|
112
|
+
protected abstract batchCreateCustomWriteCheckpoints(session: mongo.ClientSession, opId: InternalOpId): Promise<void>;
|
|
113
|
+
/** Perform any version-specific setup required before writing custom checkpoints. */
|
|
114
|
+
protected prepareCustomWriteCheckpoints(): Promise<void>;
|
|
101
115
|
flush(options?: storage.BatchBucketFlushOptions): Promise<storage.FlushedResult | null>;
|
|
116
|
+
/** Publish the checkpoint in the final flush transaction, or use the empty-commit path. */
|
|
117
|
+
protected flushAndCommit<T>(checkpoint: (stream: SyncRuleDocumentBase, lastOp: InternalOpId) => Promise<T>, commitWithoutFlush: () => Promise<T>, options?: storage.BatchBucketFlushOptions, projection?: mongo.Document): Promise<T>;
|
|
102
118
|
private flushInner;
|
|
103
119
|
private replicateBatch;
|
|
104
120
|
private saveOperation;
|
|
105
|
-
protected
|
|
121
|
+
protected fence(session?: mongo.ClientSession, projection?: mongo.Document): Promise<mongo.WithId<SyncRuleDocumentBase>>;
|
|
122
|
+
protected withTransaction<T>(cb: (stream: SyncRuleDocumentBase) => Promise<T>, session?: mongo.ClientSession): Promise<T>;
|
|
123
|
+
/** The first operation must modify the stream document conditional on lease ownership. */
|
|
124
|
+
protected withFencedTransaction<S, T>(acquireFence: () => Promise<S>, cb: (stream: S) => Promise<T>, session?: mongo.ClientSession): Promise<T>;
|
|
125
|
+
private withWriterLock;
|
|
126
|
+
/** Single-document updates enforce ownership atomically, without a separate transaction. */
|
|
127
|
+
protected updateStreamMetadata(set: mongo.Document, filter?: mongo.Document, writeConcern?: mongo.WriteConcernSettings): Promise<void>;
|
|
128
|
+
/** Caller must already be inside a fenced transaction holding the writer mutex. */
|
|
129
|
+
protected updateStreamMetadataInTransaction(set: mongo.Document, filter?: mongo.Document): Promise<void>;
|
|
130
|
+
private writeStreamMetadata;
|
|
106
131
|
private withReplicationTransaction;
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
* `last_persisted_op` durably within the same transaction.
|
|
112
|
-
*/
|
|
113
|
-
protected onReplicationTransactionFlush(_session: mongo.ClientSession, _lastOp: InternalOpId): Promise<void>;
|
|
132
|
+
/** Highest durably persisted operation, including operations not yet checkpointed. */
|
|
133
|
+
protected abstract persistedOpHead(stream: SyncRuleDocumentBase): InternalOpId;
|
|
134
|
+
/** Advance the persisted head in the same transaction as the operations. */
|
|
135
|
+
protected abstract onReplicationTransactionFlush(writes: MongoWriteBatch, lastOp: InternalOpId): void;
|
|
114
136
|
/**
|
|
115
137
|
* Called after a replication transaction has successfully committed, with the last persisted op id.
|
|
116
138
|
*
|
|
117
139
|
* v1 storage tracks this in memory to fold into the next checkpoint. v3 storage does not need it:
|
|
118
140
|
* the stream-level `last_persisted_op` is already advanced durably by
|
|
119
|
-
* {@link onReplicationTransactionFlush}
|
|
120
|
-
* from the document.
|
|
141
|
+
* {@link onReplicationTransactionFlush} or the combined checkpoint update within the same
|
|
142
|
+
* transaction, and empty commits read it from the document.
|
|
121
143
|
*
|
|
122
144
|
* Keep calls to this adjacent to {@link withReplicationTransaction} usage - both must observe
|
|
123
145
|
* every path that persists ops.
|
|
@@ -135,7 +157,10 @@ export declare abstract class MongoBucketBatch extends BaseObserver<storage.Buck
|
|
|
135
157
|
updateTableProgress(table: storage.SourceTable, progress: Partial<storage.TableSnapshotStatus>): Promise<storage.SourceTable>;
|
|
136
158
|
protected clearError(session: mongo.ClientSession): Promise<void>;
|
|
137
159
|
/**
|
|
138
|
-
* Gets relevant {@link
|
|
160
|
+
* Gets relevant {@link HydratedEventDescriptor}s for the given {@link SourceTable}
|
|
139
161
|
*/
|
|
140
|
-
protected getTableEvents(table: storage.SourceTable):
|
|
162
|
+
protected getTableEvents(table: storage.SourceTable): {
|
|
163
|
+
event: HydratedEventDescriptor;
|
|
164
|
+
eventId?: EventDefinitionId;
|
|
165
|
+
}[];
|
|
141
166
|
}
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
2
|
import * as bson from 'bson';
|
|
3
|
-
import { BaseObserver, container, ErrorCode, errors, ReplicationAssertionError, ServiceError } from '@powersync/lib-services-framework';
|
|
3
|
+
import { BaseObserver, container, ErrorCode, errors, ReplicationAbortedError, ReplicationAssertionError, ServiceError } from '@powersync/lib-services-framework';
|
|
4
4
|
import { deserializeBson, isCompleteRow, PerformanceTracer, SaveOperationTag, storage, utils } from '@powersync/service-core';
|
|
5
5
|
import * as timers from 'node:timers/promises';
|
|
6
6
|
import { mongoTableId } from '../../utils/util.js';
|
|
7
7
|
import { MAX_ROW_SIZE } from './MongoBucketBatchShared.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { OpIdRangeExhausted } from './MongoIdSequence.js';
|
|
9
|
+
import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
|
|
10
10
|
import { OperationBatch, RecordOperation } from './OperationBatch.js';
|
|
11
|
-
|
|
12
|
-
// While the MongoDB transaction retry mechanism handles this okay, using an in-process Mutex
|
|
13
|
-
// makes it more fair and has less overhead.
|
|
14
|
-
//
|
|
15
|
-
// In the future, we can investigate allowing multiple replication streams operating independently.
|
|
16
|
-
const replicationMutex = new utils.Mutex();
|
|
11
|
+
import { createObjectStorageUsageWriterId } from './v3/object-storage/ObjectStorageUsage.js';
|
|
17
12
|
export class MongoBucketBatch extends BaseObserver {
|
|
18
13
|
options;
|
|
19
14
|
logger;
|
|
@@ -35,6 +30,7 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
35
30
|
storeCurrentData;
|
|
36
31
|
skipExistingRows;
|
|
37
32
|
mapping;
|
|
33
|
+
objectStorageUsageWriterId = createObjectStorageUsageWriterId();
|
|
38
34
|
batch = null;
|
|
39
35
|
write_checkpoint_batch = [];
|
|
40
36
|
markRecordUnavailable;
|
|
@@ -59,7 +55,12 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
59
55
|
constructor(options) {
|
|
60
56
|
super();
|
|
61
57
|
this.logger = options.logger;
|
|
62
|
-
this.options =
|
|
58
|
+
this.options = {
|
|
59
|
+
...options,
|
|
60
|
+
signal: options.signal == null
|
|
61
|
+
? options.replicationLock.signal
|
|
62
|
+
: AbortSignal.any([options.signal, options.replicationLock.signal])
|
|
63
|
+
};
|
|
63
64
|
this.client = options.db.client;
|
|
64
65
|
this.db = options.db;
|
|
65
66
|
this.replicationStreamId = options.replicationStreamId;
|
|
@@ -81,6 +82,8 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
81
82
|
sync_rules_id: this.replicationStreamId
|
|
82
83
|
});
|
|
83
84
|
}
|
|
85
|
+
/** Perform any version-specific setup required before writing custom checkpoints. */
|
|
86
|
+
async prepareCustomWriteCheckpoints() { }
|
|
84
87
|
async flush(options) {
|
|
85
88
|
let result = null;
|
|
86
89
|
// One flush may be split over multiple transactions.
|
|
@@ -93,13 +96,30 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
93
96
|
}
|
|
94
97
|
return result;
|
|
95
98
|
}
|
|
96
|
-
|
|
99
|
+
/** Publish the checkpoint in the final flush transaction, or use the empty-commit path. */
|
|
100
|
+
async flushAndCommit(checkpoint, commitWithoutFlush, options, projection) {
|
|
101
|
+
if (this.batch == null && this.write_checkpoint_batch.length === 0) {
|
|
102
|
+
return commitWithoutFlush();
|
|
103
|
+
}
|
|
104
|
+
let result;
|
|
105
|
+
while (this.batch != null || this.write_checkpoint_batch.length > 0) {
|
|
106
|
+
await this.flushInner(options, async (stream, lastOp) => {
|
|
107
|
+
result = await checkpoint(stream, lastOp);
|
|
108
|
+
}, projection);
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
async flushInner(options, checkpoint, projection) {
|
|
97
113
|
const batch = this.batch;
|
|
98
114
|
let last_op = null;
|
|
99
115
|
let resumeBatch = null;
|
|
100
116
|
let clearedError = false;
|
|
101
117
|
using _ = this.tracer.span('storage', 'flush');
|
|
102
118
|
await this.hooks?.beforeBatchFlush?.(this);
|
|
119
|
+
if (this.write_checkpoint_batch.length > 0) {
|
|
120
|
+
// Collection/index creation cannot run inside the replication transaction.
|
|
121
|
+
await this.prepareCustomWriteCheckpoints();
|
|
122
|
+
}
|
|
103
123
|
await this.withReplicationTransaction(`Flushing ${batch?.length ?? 0} ops`, async (session, opSeq) => {
|
|
104
124
|
clearedError = false;
|
|
105
125
|
if (batch != null) {
|
|
@@ -109,11 +129,19 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
109
129
|
}
|
|
110
130
|
if (this.write_checkpoint_batch.length > 0) {
|
|
111
131
|
this.logger.info(`Writing ${this.write_checkpoint_batch.length} custom write checkpoints`);
|
|
112
|
-
await batchCreateCustomWriteCheckpoints(
|
|
113
|
-
this.write_checkpoint_batch = [];
|
|
132
|
+
await this.batchCreateCustomWriteCheckpoints(session, opSeq.next());
|
|
114
133
|
}
|
|
115
134
|
last_op = opSeq.last();
|
|
116
|
-
})
|
|
135
|
+
}, async (stream, lastOp) => {
|
|
136
|
+
if (checkpoint != null && resumeBatch == null) {
|
|
137
|
+
// The checkpoint must also persist the head, including when visibility is blocked.
|
|
138
|
+
await checkpoint(stream, lastOp);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
return false;
|
|
142
|
+
}, projection);
|
|
143
|
+
// Keep checkpoints available if the transaction retries after writing them.
|
|
144
|
+
this.write_checkpoint_batch = [];
|
|
117
145
|
if (clearedError) {
|
|
118
146
|
this.clearedError = true;
|
|
119
147
|
}
|
|
@@ -446,95 +474,117 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
446
474
|
}
|
|
447
475
|
return result;
|
|
448
476
|
}
|
|
449
|
-
async
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
try {
|
|
455
|
-
await cb();
|
|
456
|
-
}
|
|
457
|
-
catch (e) {
|
|
458
|
-
if (e instanceof mongo.MongoError && e.hasErrorLabel('TransientTransactionError')) {
|
|
459
|
-
// Likely write conflict caused by concurrent write stream replicating
|
|
460
|
-
}
|
|
461
|
-
else {
|
|
462
|
-
this.logger.warn('Transaction error', e);
|
|
463
|
-
}
|
|
464
|
-
const delay = Math.random() * 50;
|
|
465
|
-
using _ = this.tracer.span('storage', 'retry_delay');
|
|
466
|
-
await timers.setTimeout(delay);
|
|
467
|
-
throw e;
|
|
468
|
-
}
|
|
469
|
-
}, { maxCommitTimeMS: 10000 });
|
|
470
|
-
});
|
|
477
|
+
async fence(session = this.session, projection) {
|
|
478
|
+
// Graceful cancellation belongs to the source connector's page/batch boundary.
|
|
479
|
+
// It must still be able to persist progress for rows already flushed. Lease
|
|
480
|
+
// loss is different: the fence rejects every subsequent writer transaction.
|
|
481
|
+
return MongoSyncRulesLock.fence(this.db, this.replicationStreamId, this.options.replicationLock, session, projection);
|
|
471
482
|
}
|
|
472
|
-
async
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
throw new ServiceError(ErrorCode.PSYNC_S1402, 'Max transaction tries exceeded');
|
|
483
|
+
async withTransaction(cb, session = this.session) {
|
|
484
|
+
return this.withFencedTransaction(() => this.fence(session), cb, session);
|
|
485
|
+
}
|
|
486
|
+
/** The first operation must modify the stream document conditional on lease ownership. */
|
|
487
|
+
async withFencedTransaction(acquireFence, cb, session = this.session) {
|
|
488
|
+
return this.withWriterLock(() => session.withTransaction(async () => {
|
|
489
|
+
const stream = await acquireFence();
|
|
490
|
+
try {
|
|
491
|
+
const result = await cb(stream);
|
|
492
|
+
this.options.replicationLock.throwIfAborted();
|
|
493
|
+
return result;
|
|
484
494
|
}
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
$setOnInsert: { op_id: 0n },
|
|
489
|
-
$set: {
|
|
490
|
-
// Force update to ensure we get a mongo lock
|
|
491
|
-
ts: Date.now()
|
|
495
|
+
catch (e) {
|
|
496
|
+
if (e instanceof OpIdRangeExhausted) {
|
|
497
|
+
throw e;
|
|
492
498
|
}
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
returnDocument: 'after',
|
|
496
|
-
session
|
|
497
|
-
});
|
|
498
|
-
const opSeq = new MongoIdSequence(next_op_id_doc?.op_id ?? 0n);
|
|
499
|
-
await callback(session, opSeq);
|
|
500
|
-
await this.db.op_id_sequence.updateOne({
|
|
501
|
-
_id: 'main'
|
|
502
|
-
}, {
|
|
503
|
-
$set: {
|
|
504
|
-
op_id: opSeq.last()
|
|
499
|
+
if (e instanceof mongo.MongoError && e.hasErrorLabel('TransientTransactionError')) {
|
|
500
|
+
// Likely write conflict caused by concurrent writes to this replication stream.
|
|
505
501
|
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
});
|
|
509
|
-
await this.db.sync_rules.updateOne({
|
|
510
|
-
_id: this.replicationStreamId
|
|
511
|
-
}, {
|
|
512
|
-
$set: {
|
|
513
|
-
last_keepalive_ts: new Date()
|
|
502
|
+
else {
|
|
503
|
+
this.logger.warn('Transaction error', e);
|
|
514
504
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
505
|
+
const delay = Math.random() * 50;
|
|
506
|
+
using _ = this.tracer.span('storage', 'retry_delay');
|
|
507
|
+
await timers.setTimeout(delay);
|
|
508
|
+
throw e;
|
|
509
|
+
}
|
|
510
|
+
}, { maxCommitTimeMS: 10000, writeConcern: { w: 'majority' } }));
|
|
511
|
+
}
|
|
512
|
+
async withWriterLock(callback) {
|
|
513
|
+
using lockSpan = this.tracer.span('storage', 'internal_lock');
|
|
514
|
+
return this.options.replicationLock.writerMutex.exclusiveLock(async () => {
|
|
515
|
+
lockSpan.end();
|
|
516
|
+
this.options.replicationLock.throwIfAborted();
|
|
517
|
+
return callback();
|
|
520
518
|
});
|
|
521
519
|
}
|
|
522
|
-
/**
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
520
|
+
/** Single-document updates enforce ownership atomically, without a separate transaction. */
|
|
521
|
+
async updateStreamMetadata(set, filter = {}, writeConcern = { w: 'majority' }) {
|
|
522
|
+
await this.withWriterLock(() => this.writeStreamMetadata(set, filter, writeConcern));
|
|
523
|
+
}
|
|
524
|
+
/** Caller must already be inside a fenced transaction holding the writer mutex. */
|
|
525
|
+
async updateStreamMetadataInTransaction(set, filter = {}) {
|
|
526
|
+
await this.writeStreamMetadata(set, filter);
|
|
527
|
+
}
|
|
528
|
+
async writeStreamMetadata(set, filter, writeConcern) {
|
|
529
|
+
const result = await this.db.sync_rules.updateOne({ ...filter, ...MongoSyncRulesLock.ownerFilter(this.replicationStreamId, this.options.replicationLock) }, [{ $set: { ...set, ...MongoSyncRulesLock.heartbeatUpdate() } }], { session: this.session, ...(writeConcern == null ? {} : { writeConcern }) });
|
|
530
|
+
if (result.matchedCount === 0) {
|
|
531
|
+
throw new ReplicationAbortedError('Replication writer no longer owns the stream');
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
async withReplicationTransaction(description, callback, finish, projection) {
|
|
535
|
+
let flushTry = 0;
|
|
536
|
+
const lastTry = Date.now() + 90000;
|
|
537
|
+
const allocator = this.options.opIdAllocator;
|
|
538
|
+
let lastOp = 0n;
|
|
539
|
+
// Refill outside the publication transaction, before evaluating any rows.
|
|
540
|
+
// Exhaustion remains a fallback for large batches or a newer stream head.
|
|
541
|
+
this.options.replicationLock.throwIfAborted();
|
|
542
|
+
await allocator.ensureCapacity();
|
|
543
|
+
for (;;) {
|
|
544
|
+
try {
|
|
545
|
+
await this.withFencedTransaction(() => this.fence(this.session, projection), async (stream) => {
|
|
546
|
+
flushTry += 1;
|
|
547
|
+
if (flushTry % 10 == 0) {
|
|
548
|
+
this.logger.info(`${description} - try ${flushTry}`);
|
|
549
|
+
}
|
|
550
|
+
if (flushTry > 20 && Date.now() > lastTry) {
|
|
551
|
+
throw new ServiceError(ErrorCode.PSYNC_S1402, 'Max transaction tries exceeded');
|
|
552
|
+
}
|
|
553
|
+
// The fence already holds this stream document for the transaction.
|
|
554
|
+
// A different writer may have used higher IDs since our last flush.
|
|
555
|
+
const opSeq = allocator.sequence(this.persistedOpHead(stream));
|
|
556
|
+
await callback(this.session, opSeq);
|
|
557
|
+
lastOp = opSeq.last();
|
|
558
|
+
if (!(await finish?.(stream, lastOp))) {
|
|
559
|
+
const writes = this.db.createWriteBatch(this.session, { ordered: false });
|
|
560
|
+
// Allow subclasses to persist additional flush-time state in the same transaction.
|
|
561
|
+
this.onReplicationTransactionFlush(writes, lastOp);
|
|
562
|
+
await writes.execute();
|
|
563
|
+
}
|
|
564
|
+
// Notifications and cleanup must wait until the transaction commits.
|
|
565
|
+
});
|
|
566
|
+
allocator.committed(lastOp);
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
catch (error) {
|
|
570
|
+
if (!(error instanceof OpIdRangeExhausted)) {
|
|
571
|
+
throw error;
|
|
572
|
+
}
|
|
573
|
+
// withTransaction has aborted every write. Reserve outside that transaction,
|
|
574
|
+
// then replay evaluation from the same committed stream head. Existing
|
|
575
|
+
// ranges can be reused on retry because no operation from this attempt committed.
|
|
576
|
+
this.options.replicationLock.throwIfAborted();
|
|
577
|
+
await allocator.reserve();
|
|
578
|
+
}
|
|
579
|
+
}
|
|
530
580
|
}
|
|
531
581
|
/**
|
|
532
582
|
* Called after a replication transaction has successfully committed, with the last persisted op id.
|
|
533
583
|
*
|
|
534
584
|
* v1 storage tracks this in memory to fold into the next checkpoint. v3 storage does not need it:
|
|
535
585
|
* the stream-level `last_persisted_op` is already advanced durably by
|
|
536
|
-
* {@link onReplicationTransactionFlush}
|
|
537
|
-
* from the document.
|
|
586
|
+
* {@link onReplicationTransactionFlush} or the combined checkpoint update within the same
|
|
587
|
+
* transaction, and empty commits read it from the document.
|
|
538
588
|
*
|
|
539
589
|
* Keep calls to this adjacent to {@link withReplicationTransaction} usage - both must observe
|
|
540
590
|
* every path that persists ops.
|
|
@@ -558,11 +608,12 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
558
608
|
async save(record) {
|
|
559
609
|
const { after, before, sourceTable, tag } = record;
|
|
560
610
|
const storeCurrentData = this.storeCurrentData && sourceTable.storeCurrentData;
|
|
561
|
-
//
|
|
562
|
-
// SourceTables
|
|
563
|
-
//
|
|
611
|
+
// V3 source tables own disjoint event-definition ids for each physical table. Multiple
|
|
612
|
+
// SourceTables may evaluate different events, but each definition is evaluated through
|
|
613
|
+
// at most one record for this row change.
|
|
614
|
+
// Legacy storage leaves eventDefinitionIds undefined and selects by table ref.
|
|
564
615
|
if (sourceTable.syncEvent) {
|
|
565
|
-
for (const event of this.getTableEvents(sourceTable)) {
|
|
616
|
+
for (const { event, eventId } of this.getTableEvents(sourceTable)) {
|
|
566
617
|
this.iterateListeners((cb) => cb.replicationEvent?.({
|
|
567
618
|
batch: this,
|
|
568
619
|
table: sourceTable,
|
|
@@ -571,7 +622,8 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
571
622
|
after: after && utils.isCompleteRow(storeCurrentData, after) ? after : undefined,
|
|
572
623
|
before: before && utils.isCompleteRow(storeCurrentData, before) ? before : undefined
|
|
573
624
|
},
|
|
574
|
-
event
|
|
625
|
+
event,
|
|
626
|
+
event_id: eventId
|
|
575
627
|
}));
|
|
576
628
|
}
|
|
577
629
|
}
|
|
@@ -600,7 +652,9 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
600
652
|
const result = await this.flush();
|
|
601
653
|
await this.withTransaction(async () => {
|
|
602
654
|
for (let table of sourceTables) {
|
|
603
|
-
await this.db
|
|
655
|
+
await this.db
|
|
656
|
+
.commonSourceTables(this.replicationStreamId)
|
|
657
|
+
.deleteOne({ _id: mongoTableId(table.id) }, { session: this.session });
|
|
604
658
|
}
|
|
605
659
|
});
|
|
606
660
|
await this.cleanupDroppedSourceTables(sourceTables);
|
|
@@ -695,10 +749,27 @@ export class MongoBucketBatch extends BaseObserver {
|
|
|
695
749
|
});
|
|
696
750
|
}
|
|
697
751
|
/**
|
|
698
|
-
* Gets relevant {@link
|
|
752
|
+
* Gets relevant {@link HydratedEventDescriptor}s for the given {@link SourceTable}
|
|
699
753
|
*/
|
|
700
754
|
getTableEvents(table) {
|
|
701
|
-
|
|
755
|
+
// V3 storage assigns event-definition ids to each source table, so membership is authoritative.
|
|
756
|
+
// Iterate the table's distinct ids and resolve each through the stream's deduped event map, so a
|
|
757
|
+
// definition reused across configs has one evaluator for that id. The evaluator may still return
|
|
758
|
+
// multiple payloads from matching queries. Legacy storage leaves this undefined and selects by table ref.
|
|
759
|
+
if (table.eventDefinitionIds != null) {
|
|
760
|
+
const eventById = this.options.parsedSyncConfig.eventById;
|
|
761
|
+
const events = [];
|
|
762
|
+
for (const id of table.eventDefinitionIds) {
|
|
763
|
+
const event = eventById.get(id);
|
|
764
|
+
if (event != null && event.tableTriggersEvent(table.ref)) {
|
|
765
|
+
events.push({ event, eventId: id });
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
return events;
|
|
769
|
+
}
|
|
770
|
+
return this.sync_rules.eventDescriptors
|
|
771
|
+
.filter((event) => event.tableTriggersEvent(table.ref))
|
|
772
|
+
.map((event) => ({ event }));
|
|
702
773
|
}
|
|
703
774
|
}
|
|
704
775
|
//# sourceMappingURL=MongoBucketBatch.js.map
|