@powersync/service-module-mongodb-storage 0.0.0-dev-20260602073133 → 0.0.0-dev-20260909133214
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 +177 -5
- package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.d.ts +3 -0
- package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js +41 -0
- package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js.map +1 -0
- package/dist/storage/MongoBucketStorage.d.ts +71 -18
- package/dist/storage/MongoBucketStorage.js +516 -202
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +71 -29
- package/dist/storage/implementation/MongoBucketBatch.js +140 -66
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoChecksums.d.ts +41 -13
- package/dist/storage/implementation/MongoChecksums.js +36 -121
- package/dist/storage/implementation/MongoChecksums.js.map +1 -1
- package/dist/storage/implementation/MongoCompactor.d.ts +28 -90
- package/dist/storage/implementation/MongoCompactor.js +87 -481
- package/dist/storage/implementation/MongoCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoHydrationState.d.ts +11 -0
- package/dist/storage/implementation/MongoHydrationState.js +49 -0
- package/dist/storage/implementation/MongoHydrationState.js.map +1 -0
- package/dist/storage/implementation/MongoParameterCompactor.d.ts +82 -8
- package/dist/storage/implementation/MongoParameterCompactor.js +312 -76
- package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +21 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js +93 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -0
- package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +36 -0
- package/dist/storage/implementation/MongoPersistedReplicationStream.js +90 -0
- package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +25 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +125 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -0
- package/dist/storage/implementation/MongoStorageProvider.js +41 -4
- package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +81 -37
- package/dist/storage/implementation/MongoSyncBucketStorage.js +159 -86
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.js +23 -11
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +11 -8
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js +159 -33
- 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 +28 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js +2 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js.map +1 -0
- package/dist/storage/implementation/common/PersistedBatch.d.ts +34 -2
- package/dist/storage/implementation/common/PersistedBatch.js +63 -10
- package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +1 -1
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
- package/dist/storage/implementation/createMongoSyncBucketStorage.d.ts +2 -2
- package/dist/storage/implementation/createMongoSyncBucketStorage.js +4 -4
- package/dist/storage/implementation/createMongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/db.d.ts +4 -1
- package/dist/storage/implementation/db.js +31 -16
- package/dist/storage/implementation/db.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +55 -13
- package/dist/storage/implementation/models.js.map +1 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +15 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +135 -107
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoChecksumsV1.d.ts +4 -4
- package/dist/storage/implementation/v1/MongoChecksumsV1.js +119 -7
- package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +47 -7
- package/dist/storage/implementation/v1/MongoCompactorV1.js +478 -8
- 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 +33 -27
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +146 -73
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
- package/dist/storage/implementation/v1/SingleBucketStoreV1.d.ts +9 -10
- package/dist/storage/implementation/v1/SingleBucketStoreV1.js +2 -8
- package/dist/storage/implementation/v1/SingleBucketStoreV1.js.map +1 -1
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.d.ts +2 -1
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js +3 -0
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js.map +1 -1
- package/dist/storage/implementation/v1/models.d.ts +10 -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/BucketDataContextV3.d.ts +13 -0
- package/dist/storage/implementation/v3/BucketDataContextV3.js +23 -0
- package/dist/storage/implementation/v3/BucketDataContextV3.js.map +1 -0
- 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 +16 -5
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +393 -262
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +30 -9
- package/dist/storage/implementation/v3/MongoChecksumsV3.js +161 -20
- package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +108 -18
- package/dist/storage/implementation/v3/MongoCompactorV3.js +1115 -47
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +12 -3
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +13 -8
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +54 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +319 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -0
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +61 -36
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +353 -161
- 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 +8 -3
- package/dist/storage/implementation/v3/PersistedBatchV3.js +131 -29
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +3 -3
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js +13 -11
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +26 -14
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +73 -29
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
- package/dist/storage/implementation/v3/bucket-format.d.ts +13 -0
- package/dist/storage/implementation/v3/bucket-format.js +79 -0
- package/dist/storage/implementation/v3/bucket-format.js.map +1 -0
- package/dist/storage/implementation/v3/chunking.d.ts +10 -0
- package/dist/storage/implementation/v3/chunking.js +30 -0
- package/dist/storage/implementation/v3/chunking.js.map +1 -0
- package/dist/storage/implementation/v3/compact-utils.d.ts +107 -0
- package/dist/storage/implementation/v3/compact-utils.js +216 -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 +187 -23
- package/dist/storage/implementation/v3/models.js +11 -28
- package/dist/storage/implementation/v3/models.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +20 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +48 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +33 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.js +12 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +68 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +154 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.d.ts +37 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js +167 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +67 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +439 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -0
- package/dist/storage/implementation/v3/source-table-utils.d.ts +63 -0
- package/dist/storage/implementation/v3/source-table-utils.js +206 -0
- package/dist/storage/implementation/v3/source-table-utils.js.map +1 -0
- package/dist/storage/storage-index.d.ts +5 -4
- package/dist/storage/storage-index.js +5 -4
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/types/types.d.ts +71 -3
- package/dist/types/types.js +58 -2
- package/dist/types/types.js.map +1 -1
- package/dist/utils/test-utils.d.ts +1 -2
- package/dist/utils/test-utils.js +7 -1
- package/dist/utils/test-utils.js.map +1 -1
- package/dist/utils/util.d.ts +9 -2
- package/dist/utils/util.js +131 -5
- package/dist/utils/util.js.map +1 -1
- package/package.json +13 -19
- package/src/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.ts +55 -0
- package/src/storage/MongoBucketStorage.ts +728 -242
- package/src/storage/implementation/MongoBucketBatch.ts +196 -91
- package/src/storage/implementation/MongoChecksums.ts +93 -153
- package/src/storage/implementation/MongoCompactor.ts +106 -631
- package/src/storage/implementation/MongoHydrationState.ts +61 -0
- package/src/storage/implementation/MongoParameterCompactor.ts +392 -87
- package/src/storage/implementation/MongoParsedSyncConfigSet.ts +122 -0
- package/src/storage/implementation/MongoPersistedReplicationStream.ts +118 -0
- package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +156 -0
- package/src/storage/implementation/MongoStorageProvider.ts +48 -4
- package/src/storage/implementation/MongoSyncBucketStorage.ts +226 -118
- package/src/storage/implementation/MongoSyncRulesLock.ts +28 -12
- package/src/storage/implementation/MongoWriteCheckpointAPI.ts +194 -52
- package/src/storage/implementation/SyncRuleStateUpdate.ts +13 -6
- package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +31 -0
- package/src/storage/implementation/common/PersistedBatch.ts +83 -15
- package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +1 -1
- package/src/storage/implementation/createMongoSyncBucketStorage.ts +21 -7
- package/src/storage/implementation/db.ts +40 -22
- package/src/storage/implementation/models.ts +58 -14
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +174 -125
- package/src/storage/implementation/v1/MongoChecksumsV1.ts +154 -12
- package/src/storage/implementation/v1/MongoCompactorV1.ts +594 -25
- package/src/storage/implementation/v1/MongoParameterCompactorV1.ts +25 -9
- package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +226 -129
- package/src/storage/implementation/v1/SingleBucketStoreV1.ts +18 -27
- package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +11 -1
- package/src/storage/implementation/v1/models.ts +12 -1
- package/src/storage/implementation/v3/BucketDataContextV3.ts +32 -0
- package/src/storage/implementation/v3/CompactionLease.ts +152 -0
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +502 -324
- package/src/storage/implementation/v3/MongoChecksumsV3.ts +250 -32
- package/src/storage/implementation/v3/MongoCompactorV3.ts +1439 -70
- package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +19 -9
- package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +473 -0
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +453 -211
- package/src/storage/implementation/v3/MongoWriteCheckpointAPIV3.ts +111 -0
- package/src/storage/implementation/v3/PersistedBatchV3.ts +169 -45
- package/src/storage/implementation/v3/SourceRecordStoreV3.ts +12 -12
- package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +99 -38
- package/src/storage/implementation/v3/bucket-format.ts +99 -0
- package/src/storage/implementation/v3/chunking.ts +40 -0
- package/src/storage/implementation/v3/compact-utils.ts +320 -0
- package/src/storage/implementation/v3/compaction-constants.ts +5 -0
- package/src/storage/implementation/v3/models.ts +228 -58
- package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +62 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +44 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +182 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorageUsage.ts +230 -0
- package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +573 -0
- package/src/storage/implementation/v3/source-table-utils.ts +398 -0
- package/src/storage/storage-index.ts +14 -4
- package/src/types/types.ts +76 -2
- package/src/utils/test-utils.ts +8 -3
- package/src/utils/util.ts +188 -7
- package/test/src/__snapshots__/storage.test.ts.snap +4 -54
- package/test/src/__snapshots__/storage_sync.test.ts.snap +652 -645
- package/test/src/cleanup-stopped-sync-configs.test.ts +698 -0
- package/test/src/compact-utils.test.ts +226 -0
- package/test/src/helpers/MemoryObjectStorage.ts +61 -0
- package/test/src/helpers/s3TestFactory.ts +69 -0
- package/test/src/object_storage_lifecycle.test.ts +59 -0
- package/test/src/object_storage_usage.test.ts +255 -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/setup.ts +6 -1
- package/test/src/storage.test.ts +478 -13
- package/test/src/storage_compacting.test.ts +2516 -107
- package/test/src/storage_object_storage_inline_threshold.test.ts +116 -0
- package/test/src/storage_s3_checksums.test.ts +190 -0
- package/test/src/storage_s3_compaction_lifecycle.test.ts +543 -0
- package/test/src/storage_s3_reading.test.ts +768 -0
- package/test/src/storage_s3_writing.test.ts +136 -0
- package/test/src/storage_sync.test.ts +1507 -76
- package/test/src/storeCurrentData.test.ts +227 -0
- package/test/src/util.ts +3 -2
- package/tsconfig.json +1 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/storage/implementation/BucketDefinitionMapping.d.ts +0 -15
- package/dist/storage/implementation/BucketDefinitionMapping.js +0 -58
- package/dist/storage/implementation/BucketDefinitionMapping.js.map +0 -1
- package/dist/storage/implementation/MongoPersistedSyncRules.d.ts +0 -14
- package/dist/storage/implementation/MongoPersistedSyncRules.js +0 -67
- package/dist/storage/implementation/MongoPersistedSyncRules.js.map +0 -1
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +0 -29
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +0 -76
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +0 -1
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.d.ts +0 -13
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js +0 -2
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js.map +0 -1
- package/dist/storage/implementation/common/SingleBucketStore.d.ts +0 -54
- package/dist/storage/implementation/common/SingleBucketStore.js +0 -3
- package/dist/storage/implementation/common/SingleBucketStore.js.map +0 -1
- package/dist/storage/implementation/v3/MongoParameterLookupV3.d.ts +0 -4
- package/dist/storage/implementation/v3/MongoParameterLookupV3.js +0 -9
- package/dist/storage/implementation/v3/MongoParameterLookupV3.js.map +0 -1
- package/dist/storage/implementation/v3/SingleBucketStoreV3.d.ts +0 -18
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js +0 -48
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js.map +0 -1
- package/src/storage/implementation/BucketDefinitionMapping.ts +0 -75
- package/src/storage/implementation/MongoPersistedSyncRules.ts +0 -82
- package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +0 -101
- package/src/storage/implementation/common/MongoSyncBucketStorageContext.ts +0 -15
- package/src/storage/implementation/common/SingleBucketStore.ts +0 -63
- package/src/storage/implementation/v3/MongoParameterLookupV3.ts +0 -11
- package/src/storage/implementation/v3/SingleBucketStoreV3.ts +0 -68
|
@@ -27,7 +27,7 @@ export declare function taggedBucketParameterDocumentToV1(document: TaggedBucket
|
|
|
27
27
|
export interface SourceTableDocumentV1 extends SourceTableDocument {
|
|
28
28
|
group_id: number;
|
|
29
29
|
}
|
|
30
|
-
export interface SyncRuleDocumentV1 extends SyncRuleDocumentBase, SyncRuleCheckpointFields
|
|
30
|
+
export interface SyncRuleDocumentV1 extends SyncRuleDocumentBase, SyncRuleCheckpointFields {
|
|
31
31
|
content: string;
|
|
32
32
|
serialized_plan?: SerializedSyncPlan | null;
|
|
33
33
|
/**
|
|
@@ -36,6 +36,15 @@ export interface SyncRuleDocumentV1 extends SyncRuleDocumentBase, SyncRuleCheckp
|
|
|
36
36
|
* Can only be false if state == PROCESSING.
|
|
37
37
|
*/
|
|
38
38
|
snapshot_done: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Goes together with no_checkpoint_before.
|
|
41
|
+
*
|
|
42
|
+
* If a keepalive is triggered that creates the checkpoint > no_checkpoint_before,
|
|
43
|
+
* then the checkpoint must be equal to this keepalive_op.
|
|
44
|
+
*
|
|
45
|
+
* string for legacy reasons - it's always a number.
|
|
46
|
+
*/
|
|
47
|
+
keepalive_op: string | null;
|
|
39
48
|
}
|
|
40
49
|
export interface BucketStateDocumentV1 extends BucketStateDocumentBase {
|
|
41
50
|
_id: BucketStateDocumentBase['_id'] & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,gCAAgC,EAMjC,MAAM,cAAc,CAAC;AAwBtB,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;IAClC,OAAO;QACL,GAAG,EAAE;YACH,CAAC,EAAE,SAAS,CAAC,mBAAmB;YAChC,CAAC,EAAE,SAAS,CAAC,MAAM;YACnB,CAAC,EAAE,CAAC;SACL;QACD,iFAAiF;QACjF,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAyB;IAChE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE;YACT,mBAAmB,EAAE,GAAG,CAAC,CAAC;YAC1B,YAAY,EAAE,gCAAgC;YAC9C,MAAM,EAAE,GAAG,CAAC,CAAC;SACd;QACD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,QAAuC;IACvF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC5C,OAAO,IAA+B,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,gCAAgC,EAMjC,MAAM,cAAc,CAAC;AAwBtB,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;IAClC,OAAO;QACL,GAAG,EAAE;YACH,CAAC,EAAE,SAAS,CAAC,mBAAmB;YAChC,CAAC,EAAE,SAAS,CAAC,MAAM;YACnB,CAAC,EAAE,CAAC;SACL;QACD,iFAAiF;QACjF,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAyB;IAChE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE;YACT,mBAAmB,EAAE,GAAG,CAAC,CAAC;YAC1B,YAAY,EAAE,gCAAgC;YAC9C,MAAM,EAAE,GAAG,CAAC,CAAC;SACd;QACD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,QAAuC;IACvF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC5C,OAAO,IAA+B,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { InternalOpId } from '@powersync/service-core';
|
|
3
|
+
import { BucketKey } from '../common/BucketDataDoc.js';
|
|
4
|
+
import { BucketDataKey } from '../models.js';
|
|
5
|
+
import { VersionedPowerSyncMongoV3 } from './VersionedPowerSyncMongoV3.js';
|
|
6
|
+
import { BucketDataDocumentV3 } from './models.js';
|
|
7
|
+
export declare class BucketDataContextV3 {
|
|
8
|
+
readonly key: BucketKey;
|
|
9
|
+
readonly collection: mongo.Collection<BucketDataDocumentV3>;
|
|
10
|
+
constructor(db: VersionedPowerSyncMongoV3, key: BucketKey);
|
|
11
|
+
docId(o: InternalOpId): BucketDataKey;
|
|
12
|
+
get minId(): BucketDataKey;
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
+
export class BucketDataContextV3 {
|
|
3
|
+
key;
|
|
4
|
+
collection;
|
|
5
|
+
constructor(db, key) {
|
|
6
|
+
this.key = key;
|
|
7
|
+
this.collection = db.bucketData(key.replicationStreamId, key.definitionId);
|
|
8
|
+
}
|
|
9
|
+
docId(o) {
|
|
10
|
+
return {
|
|
11
|
+
b: this.key.bucket,
|
|
12
|
+
o
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
get minId() {
|
|
16
|
+
// MongoDB's MinKey sentinel does not match the bigint type for _id.o.
|
|
17
|
+
return {
|
|
18
|
+
b: this.key.bucket,
|
|
19
|
+
o: new mongo.MinKey()
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=BucketDataContextV3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketDataContextV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/BucketDataContextV3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAOvD,MAAM,OAAO,mBAAmB;IAKZ;IAJF,UAAU,CAAyC;IAEnE,YACE,EAA6B,EACb,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;QAE9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,CAAe;QACnB,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YAClB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK;QACP,sEAAsE;QACtE,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YAClB,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;SACM,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { InternalOpId } from '@powersync/service-core';
|
|
3
|
+
import { BucketStateDocumentV3 } from './models.js';
|
|
4
|
+
/**
|
|
5
|
+
* Filters for buckets that have no lease or an expired lease.
|
|
6
|
+
*/
|
|
7
|
+
export declare const AVAILABLE_LEASE_EXPR: {
|
|
8
|
+
$expr: {
|
|
9
|
+
$or: ({
|
|
10
|
+
$eq: (string | {
|
|
11
|
+
$type: string;
|
|
12
|
+
})[];
|
|
13
|
+
$lte?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
$lte: string[];
|
|
16
|
+
$eq?: undefined;
|
|
17
|
+
})[];
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Owns one V3 bucket-compaction lease, including its server-time renewal and
|
|
22
|
+
* the owner-fenced operations which release it.
|
|
23
|
+
*
|
|
24
|
+
* This is intended as a way to reduce redundant work if multiple jobs attempt to
|
|
25
|
+
* compact the same bucket concurrently, but it's not an absolute safety guarantee.
|
|
26
|
+
* The individual operations must still be designed to be safe with concurrent compacting.
|
|
27
|
+
*/
|
|
28
|
+
export declare class CompactionLease implements AsyncDisposable {
|
|
29
|
+
private readonly collection;
|
|
30
|
+
readonly state: BucketStateDocumentV3;
|
|
31
|
+
readonly id: mongo.ObjectId;
|
|
32
|
+
private readonly durationMs;
|
|
33
|
+
readonly startedAt: Date;
|
|
34
|
+
readonly lastOp: InternalOpId;
|
|
35
|
+
private timer;
|
|
36
|
+
private renewalInFlight;
|
|
37
|
+
private renewalError;
|
|
38
|
+
private finalizing;
|
|
39
|
+
private finished;
|
|
40
|
+
private constructor();
|
|
41
|
+
static claim(collection: mongo.Collection<BucketStateDocumentV3>, filter: mongo.Filter<BucketStateDocumentV3>, sort: mongo.Sort | undefined, durationMs: number): Promise<CompactionLease | null>;
|
|
42
|
+
startRenewal(): void;
|
|
43
|
+
throwIfLost(): Promise<void>;
|
|
44
|
+
reschedule(nextCompactCheck: mongo.Document): Promise<void>;
|
|
45
|
+
finalize(update: mongo.Document): Promise<void>;
|
|
46
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
47
|
+
private get filter();
|
|
48
|
+
private renew;
|
|
49
|
+
private finish;
|
|
50
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { CompactionLeaseLostError } from '../MongoCompactor.js';
|
|
3
|
+
const LEASE_RENEW_INTERVAL_MS = 60 * 1000;
|
|
4
|
+
/**
|
|
5
|
+
* Filters for buckets that have no lease or an expired lease.
|
|
6
|
+
*/
|
|
7
|
+
export const AVAILABLE_LEASE_EXPR = {
|
|
8
|
+
// $$NOW is evaluated by MongoDB, avoiding lease expiry races due
|
|
9
|
+
// to clocks on separate compact workers.
|
|
10
|
+
$expr: {
|
|
11
|
+
$or: [{ $eq: [{ $type: '$compact_lease' }, 'missing'] }, { $lte: ['$compact_lease.expires_at', '$$NOW'] }]
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Owns one V3 bucket-compaction lease, including its server-time renewal and
|
|
16
|
+
* the owner-fenced operations which release it.
|
|
17
|
+
*
|
|
18
|
+
* This is intended as a way to reduce redundant work if multiple jobs attempt to
|
|
19
|
+
* compact the same bucket concurrently, but it's not an absolute safety guarantee.
|
|
20
|
+
* The individual operations must still be designed to be safe with concurrent compacting.
|
|
21
|
+
*/
|
|
22
|
+
export class CompactionLease {
|
|
23
|
+
collection;
|
|
24
|
+
state;
|
|
25
|
+
id;
|
|
26
|
+
durationMs;
|
|
27
|
+
startedAt;
|
|
28
|
+
lastOp;
|
|
29
|
+
timer;
|
|
30
|
+
renewalInFlight = false;
|
|
31
|
+
renewalError;
|
|
32
|
+
finalizing = false;
|
|
33
|
+
finished = false;
|
|
34
|
+
constructor(collection, state, id, durationMs) {
|
|
35
|
+
this.collection = collection;
|
|
36
|
+
this.state = state;
|
|
37
|
+
this.id = id;
|
|
38
|
+
this.durationMs = durationMs;
|
|
39
|
+
this.startedAt = new Date(state.compact_lease.expires_at.getTime() - durationMs);
|
|
40
|
+
this.lastOp = state.last_op;
|
|
41
|
+
}
|
|
42
|
+
static async claim(collection, filter, sort, durationMs) {
|
|
43
|
+
const id = new mongo.ObjectId();
|
|
44
|
+
const state = await collection.findOneAndUpdate({
|
|
45
|
+
$and: [filter, AVAILABLE_LEASE_EXPR]
|
|
46
|
+
}, [
|
|
47
|
+
{
|
|
48
|
+
$set: {
|
|
49
|
+
compact_lease: {
|
|
50
|
+
id,
|
|
51
|
+
expires_at: { $dateAdd: { startDate: '$$NOW', unit: 'millisecond', amount: durationMs } }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
], { sort, returnDocument: 'after' });
|
|
56
|
+
return state == null ? null : new CompactionLease(collection, state, id, durationMs);
|
|
57
|
+
}
|
|
58
|
+
startRenewal() {
|
|
59
|
+
const interval = Math.max(1, Math.min(LEASE_RENEW_INTERVAL_MS, Math.floor(this.durationMs / 2)));
|
|
60
|
+
this.timer = setInterval(() => {
|
|
61
|
+
if (this.renewalInFlight) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.renewalInFlight = true;
|
|
65
|
+
void this.renew()
|
|
66
|
+
.catch((error) => {
|
|
67
|
+
this.renewalError = error;
|
|
68
|
+
})
|
|
69
|
+
.finally(() => {
|
|
70
|
+
this.renewalInFlight = false;
|
|
71
|
+
});
|
|
72
|
+
}, interval);
|
|
73
|
+
this.timer.unref();
|
|
74
|
+
}
|
|
75
|
+
async throwIfLost() {
|
|
76
|
+
if (this.renewalError != null) {
|
|
77
|
+
throw this.renewalError;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async reschedule(nextCompactCheck) {
|
|
81
|
+
await this.finish([{ $set: { next_compact_check: nextCompactCheck } }, { $unset: 'compact_lease' }]);
|
|
82
|
+
}
|
|
83
|
+
async finalize(update) {
|
|
84
|
+
await this.finish([{ $set: update }, { $unset: 'compact_lease' }]);
|
|
85
|
+
}
|
|
86
|
+
async [Symbol.asyncDispose]() {
|
|
87
|
+
if (this.timer != null) {
|
|
88
|
+
clearInterval(this.timer);
|
|
89
|
+
this.timer = undefined;
|
|
90
|
+
}
|
|
91
|
+
if (this.finished) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.finalizing = true;
|
|
95
|
+
await this.collection.updateOne(this.filter, { $unset: { compact_lease: '' } });
|
|
96
|
+
this.finished = true;
|
|
97
|
+
}
|
|
98
|
+
get filter() {
|
|
99
|
+
return { _id: this.state._id, 'compact_lease.id': this.id };
|
|
100
|
+
}
|
|
101
|
+
async renew() {
|
|
102
|
+
const result = await this.collection.updateOne(this.filter, [
|
|
103
|
+
{
|
|
104
|
+
$set: {
|
|
105
|
+
'compact_lease.expires_at': {
|
|
106
|
+
$dateAdd: { startDate: '$$NOW', unit: 'millisecond', amount: this.durationMs }
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
]);
|
|
111
|
+
// A finalization in progress owns the authoritative fenced result.
|
|
112
|
+
if (result.matchedCount != 1 && !this.finalizing) {
|
|
113
|
+
throw new CompactionLeaseLostError(`Lost compaction lease for bucket ${this.state._id.b}`);
|
|
114
|
+
}
|
|
115
|
+
// A successful renewal confirms that a transient failure has passed. A
|
|
116
|
+
// lease-loss error remains sticky: it means another worker may own it.
|
|
117
|
+
if (!(this.renewalError instanceof CompactionLeaseLostError)) {
|
|
118
|
+
this.renewalError = undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async finish(update) {
|
|
122
|
+
await this.throwIfLost();
|
|
123
|
+
this.finalizing = true;
|
|
124
|
+
const result = await this.collection.updateOne(this.filter, update);
|
|
125
|
+
if (result.matchedCount != 1) {
|
|
126
|
+
throw new CompactionLeaseLostError(`Lost compaction lease for bucket ${this.state._id.b}`);
|
|
127
|
+
}
|
|
128
|
+
this.finished = true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=CompactionLease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompactionLease.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/CompactionLease.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as lib_mongo from '@powersync/lib-service-mongodb';
|
|
2
|
+
import { InternalOpId, storage } from '@powersync/service-core';
|
|
2
3
|
import { MongoBucketBatch, MongoBucketBatchOptions } from '../MongoBucketBatch.js';
|
|
3
4
|
import { PersistedBatch } from '../common/PersistedBatch.js';
|
|
4
5
|
import { SourceRecordStore } from '../common/SourceRecordStore.js';
|
|
@@ -6,16 +7,22 @@ import { VersionedPowerSyncMongoV3 } from './VersionedPowerSyncMongoV3.js';
|
|
|
6
7
|
export declare class MongoBucketBatchV3 extends MongoBucketBatch {
|
|
7
8
|
readonly db: VersionedPowerSyncMongoV3;
|
|
8
9
|
private readonly store;
|
|
9
|
-
|
|
10
|
+
/** Avoid repeating idempotent createIndexes calls for every checkpoint flush. */
|
|
11
|
+
private readonly initializedCustomCheckpointEventIds;
|
|
12
|
+
private readonly knownEventIds;
|
|
13
|
+
private readonly syncConfigIds;
|
|
10
14
|
private needsActivationV3;
|
|
11
15
|
private lastWaitingLogThrottledV3;
|
|
12
16
|
constructor(options: MongoBucketBatchOptions);
|
|
13
17
|
protected createPersistedBatch(writtenSize: number): PersistedBatch;
|
|
14
18
|
protected get sourceRecordStore(): SourceRecordStore;
|
|
19
|
+
protected onReplicationTransactionFlush(session: lib_mongo.mongo.ClientSession, lastOp: bigint): Promise<void>;
|
|
20
|
+
private selectedSyncConfigObjectIds;
|
|
21
|
+
private relevantSyncConfigIds;
|
|
22
|
+
private relevantSyncConfigIdsForTables;
|
|
23
|
+
private snapshotBlockingSourceTablesFilter;
|
|
15
24
|
protected cleanupDroppedSourceTables(sourceTables: storage.SourceTable[]): Promise<void>;
|
|
16
25
|
resolveTables(options: storage.ResolveTablesOptions): Promise<storage.ResolveTablesResult>;
|
|
17
|
-
private sourceTableFromDocument;
|
|
18
|
-
private sourceTableMembershipsFromDocument;
|
|
19
26
|
getSourceTableStatus(table: storage.SourceTable): Promise<storage.SourceTable | null>;
|
|
20
27
|
commit(lsn: string, options?: storage.BucketBatchCommitOptions): Promise<storage.CheckpointResult>;
|
|
21
28
|
keepalive(lsn: string): Promise<storage.CheckpointResult>;
|
|
@@ -25,6 +32,10 @@ export declare class MongoBucketBatchV3 extends MongoBucketBatch {
|
|
|
25
32
|
markSnapshotDone(no_checkpoint_before_lsn: string, options?: {
|
|
26
33
|
throwOnConflict?: boolean;
|
|
27
34
|
}): Promise<void>;
|
|
28
|
-
markTableSnapshotRequired(
|
|
35
|
+
markTableSnapshotRequired(table: storage.SourceTable): Promise<void>;
|
|
29
36
|
markTableSnapshotDone(tables: storage.SourceTable[], no_checkpoint_before_lsn?: string): Promise<storage.SourceTable[]>;
|
|
37
|
+
protected batchCreateCustomWriteCheckpoints(session: lib_mongo.mongo.ClientSession, opId: InternalOpId): Promise<void>;
|
|
38
|
+
protected prepareCustomWriteCheckpoints(): Promise<void>;
|
|
39
|
+
private validateCustomCheckpointEventId;
|
|
40
|
+
private batchCreateEventCustomWriteCheckpoints;
|
|
30
41
|
}
|