@powersync/service-module-mongodb-storage 0.15.4 → 0.17.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 +69 -0
- package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.js +1 -1
- package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.js.map +1 -1
- package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js +2 -2
- package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js.map +1 -1
- package/dist/storage/MongoBucketStorage.d.ts +8 -6
- package/dist/storage/MongoBucketStorage.js +153 -66
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/BucketDefinitionMapping.d.ts +15 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js +58 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js.map +1 -0
- package/dist/storage/implementation/CheckpointState.d.ts +20 -0
- package/dist/storage/implementation/CheckpointState.js +31 -0
- package/dist/storage/implementation/CheckpointState.js.map +1 -0
- package/dist/storage/implementation/MongoBucketBatch.d.ts +48 -35
- package/dist/storage/implementation/MongoBucketBatch.js +118 -379
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatchShared.d.ts +5 -0
- package/dist/storage/implementation/MongoBucketBatchShared.js +8 -0
- package/dist/storage/implementation/MongoBucketBatchShared.js.map +1 -0
- package/dist/storage/implementation/MongoChecksums.d.ts +29 -17
- package/dist/storage/implementation/MongoChecksums.js +13 -72
- package/dist/storage/implementation/MongoChecksums.js.map +1 -1
- package/dist/storage/implementation/MongoCompactor.d.ts +98 -58
- package/dist/storage/implementation/MongoCompactor.js +229 -296
- package/dist/storage/implementation/MongoCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoParameterCompactor.d.ts +11 -6
- package/dist/storage/implementation/MongoParameterCompactor.js +11 -8
- package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoPersistedSyncRules.d.ts +14 -0
- package/dist/storage/implementation/MongoPersistedSyncRules.js +67 -0
- package/dist/storage/implementation/MongoPersistedSyncRules.js.map +1 -0
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +22 -5
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +56 -13
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +61 -32
- package/dist/storage/implementation/MongoSyncBucketStorage.js +85 -523
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +10 -4
- package/dist/storage/implementation/MongoSyncRulesLock.js +19 -13
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js +1 -1
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
- package/dist/storage/implementation/OperationBatch.js +1 -1
- package/dist/storage/implementation/SyncRuleStateUpdate.d.ts +14 -0
- package/dist/storage/implementation/SyncRuleStateUpdate.js +36 -0
- package/dist/storage/implementation/SyncRuleStateUpdate.js.map +1 -0
- package/dist/storage/implementation/common/BucketDataDoc.d.ts +35 -0
- package/dist/storage/implementation/common/BucketDataDoc.js +2 -0
- package/dist/storage/implementation/common/BucketDataDoc.js.map +1 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.d.ts +13 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js +2 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js.map +1 -0
- package/dist/storage/implementation/common/PersistedBatch.d.ts +108 -0
- package/dist/storage/implementation/common/PersistedBatch.js +237 -0
- package/dist/storage/implementation/common/PersistedBatch.js.map +1 -0
- package/dist/storage/implementation/common/SingleBucketStore.d.ts +54 -0
- package/dist/storage/implementation/common/SingleBucketStore.js +3 -0
- package/dist/storage/implementation/common/SingleBucketStore.js.map +1 -0
- package/dist/storage/implementation/common/SourceRecordStore.d.ts +35 -0
- package/dist/storage/implementation/common/SourceRecordStore.js +2 -0
- package/dist/storage/implementation/common/SourceRecordStore.js.map +1 -0
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.d.ts +27 -0
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +57 -0
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -0
- package/dist/storage/implementation/createMongoSyncBucketStorage.d.ts +7 -0
- package/dist/storage/implementation/createMongoSyncBucketStorage.js +9 -0
- package/dist/storage/implementation/createMongoSyncBucketStorage.js.map +1 -0
- package/dist/storage/implementation/db.d.ts +41 -36
- package/dist/storage/implementation/db.js +77 -99
- package/dist/storage/implementation/db.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +79 -66
- package/dist/storage/implementation/models.js +20 -1
- package/dist/storage/implementation/models.js.map +1 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +27 -0
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +407 -0
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -0
- package/dist/storage/implementation/v1/MongoChecksumsV1.d.ts +12 -0
- package/dist/storage/implementation/v1/MongoChecksumsV1.js +56 -0
- package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -0
- package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +23 -0
- package/dist/storage/implementation/v1/MongoCompactorV1.js +52 -0
- package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -0
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.d.ts +9 -0
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.js +20 -0
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.js.map +1 -0
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +50 -0
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +354 -0
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -0
- package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +25 -0
- package/dist/storage/implementation/v1/PersistedBatchV1.js +183 -0
- package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -0
- package/dist/storage/implementation/v1/SingleBucketStoreV1.d.ts +18 -0
- package/dist/storage/implementation/v1/SingleBucketStoreV1.js +57 -0
- package/dist/storage/implementation/v1/SingleBucketStoreV1.js.map +1 -0
- package/dist/storage/implementation/v1/SourceRecordStoreV1.d.ts +19 -0
- package/dist/storage/implementation/v1/SourceRecordStoreV1.js +105 -0
- package/dist/storage/implementation/v1/SourceRecordStoreV1.js.map +1 -0
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.d.ts +12 -0
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js +20 -0
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js.map +1 -0
- package/dist/storage/implementation/v1/models.d.ts +45 -0
- package/dist/storage/implementation/v1/models.js +37 -0
- package/dist/storage/implementation/v1/models.js.map +1 -0
- package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +30 -0
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +463 -0
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -0
- package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +15 -0
- package/dist/storage/implementation/v3/MongoChecksumsV3.js +84 -0
- package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -0
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +23 -0
- package/dist/storage/implementation/v3/MongoCompactorV3.js +68 -0
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -0
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +9 -0
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +18 -0
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +1 -0
- package/dist/storage/implementation/v3/MongoParameterLookupV3.d.ts +4 -0
- package/dist/storage/implementation/v3/MongoParameterLookupV3.js +9 -0
- package/dist/storage/implementation/v3/MongoParameterLookupV3.js.map +1 -0
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +63 -0
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +508 -0
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -0
- package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +28 -0
- package/dist/storage/implementation/v3/PersistedBatchV3.js +259 -0
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -0
- package/dist/storage/implementation/v3/SingleBucketStoreV3.d.ts +18 -0
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js +48 -0
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js.map +1 -0
- package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +22 -0
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js +164 -0
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -0
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +22 -0
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +74 -0
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -0
- package/dist/storage/implementation/v3/models.d.ts +101 -0
- package/dist/storage/implementation/v3/models.js +34 -0
- package/dist/storage/implementation/v3/models.js.map +1 -0
- package/dist/storage/storage-index.d.ts +6 -3
- package/dist/storage/storage-index.js +6 -3
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/utils/util.d.ts +10 -3
- package/dist/utils/util.js +24 -3
- package/dist/utils/util.js.map +1 -1
- package/package.json +9 -9
- package/src/migrations/db/migrations/1688556755264-initial-sync-rules.ts +1 -1
- package/src/migrations/db/migrations/1702295701188-sync-rule-state.ts +7 -7
- package/src/storage/MongoBucketStorage.ts +254 -99
- package/src/storage/implementation/BucketDefinitionMapping.ts +75 -0
- package/src/storage/implementation/CheckpointState.ts +59 -0
- package/src/storage/implementation/MongoBucketBatch.ts +182 -490
- package/src/storage/implementation/MongoBucketBatchShared.ts +11 -0
- package/src/storage/implementation/MongoChecksums.ts +53 -75
- package/src/storage/implementation/MongoCompactor.ts +374 -404
- package/src/storage/implementation/MongoParameterCompactor.ts +37 -24
- package/src/storage/implementation/MongoPersistedSyncRules.ts +82 -0
- package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +78 -16
- package/src/storage/implementation/MongoSyncBucketStorage.ts +179 -628
- package/src/storage/implementation/MongoSyncRulesLock.ts +20 -16
- package/src/storage/implementation/MongoWriteCheckpointAPI.ts +3 -1
- package/src/storage/implementation/OperationBatch.ts +1 -1
- package/src/storage/implementation/SyncRuleStateUpdate.ts +38 -0
- package/src/storage/implementation/common/BucketDataDoc.ts +37 -0
- package/src/storage/implementation/common/MongoSyncBucketStorageContext.ts +15 -0
- package/src/storage/implementation/common/PersistedBatch.ts +364 -0
- package/src/storage/implementation/common/SingleBucketStore.ts +63 -0
- package/src/storage/implementation/common/SourceRecordStore.ts +48 -0
- package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +80 -0
- package/src/storage/implementation/createMongoSyncBucketStorage.ts +25 -0
- package/src/storage/implementation/db.ts +110 -131
- package/src/storage/implementation/models.ts +102 -79
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +509 -0
- package/src/storage/implementation/v1/MongoChecksumsV1.ts +75 -0
- package/src/storage/implementation/v1/MongoCompactorV1.ts +93 -0
- package/src/storage/implementation/v1/MongoParameterCompactorV1.ts +26 -0
- package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +543 -0
- package/src/storage/implementation/v1/PersistedBatchV1.ts +229 -0
- package/src/storage/implementation/v1/SingleBucketStoreV1.ts +74 -0
- package/src/storage/implementation/v1/SourceRecordStoreV1.ts +156 -0
- package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +28 -0
- package/src/storage/implementation/v1/models.ts +99 -0
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +607 -0
- package/src/storage/implementation/v3/MongoChecksumsV3.ts +120 -0
- package/src/storage/implementation/v3/MongoCompactorV3.ts +107 -0
- package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +24 -0
- package/src/storage/implementation/v3/MongoParameterLookupV3.ts +11 -0
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +678 -0
- package/src/storage/implementation/v3/PersistedBatchV3.ts +317 -0
- package/src/storage/implementation/v3/SingleBucketStoreV3.ts +68 -0
- package/src/storage/implementation/v3/SourceRecordStoreV3.ts +226 -0
- package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +117 -0
- package/src/storage/implementation/v3/models.ts +164 -0
- package/src/storage/storage-index.ts +6 -3
- package/src/utils/util.ts +34 -5
- package/test/src/storage_compacting.test.ts +57 -29
- package/test/src/storage_sync.test.ts +767 -5
- package/test/src/storeCurrentData.test.ts +211 -0
- package/test/tsconfig.json +0 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/storage/implementation/PersistedBatch.d.ts +0 -71
- package/dist/storage/implementation/PersistedBatch.js +0 -354
- package/dist/storage/implementation/PersistedBatch.js.map +0 -1
- package/src/storage/implementation/PersistedBatch.ts +0 -432
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CheckpointStateInput {
|
|
2
|
+
lsn: string;
|
|
3
|
+
snapshotDone: boolean;
|
|
4
|
+
lastCheckpointLsn: string | null;
|
|
5
|
+
noCheckpointBefore: string | null;
|
|
6
|
+
keepaliveOp: bigint | null;
|
|
7
|
+
lastCheckpoint: bigint | null;
|
|
8
|
+
persistedOp: bigint | null;
|
|
9
|
+
createEmptyCheckpoints: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface CheckpointStateResult {
|
|
12
|
+
canCheckpoint: boolean;
|
|
13
|
+
checkpointBlocked: boolean;
|
|
14
|
+
checkpointCreated: boolean;
|
|
15
|
+
notEmpty: boolean;
|
|
16
|
+
newKeepaliveOp: bigint | null;
|
|
17
|
+
newLastCheckpoint: bigint | null;
|
|
18
|
+
}
|
|
19
|
+
export declare function canCheckpointState(lsn: string, state: Pick<CheckpointStateInput, 'snapshotDone' | 'lastCheckpointLsn' | 'noCheckpointBefore'>): boolean;
|
|
20
|
+
export declare function calculateCheckpointState(input: CheckpointStateInput): CheckpointStateResult;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function maxOpId(...values) {
|
|
2
|
+
let max = 0n;
|
|
3
|
+
for (const value of values) {
|
|
4
|
+
if (value != null && value > max) {
|
|
5
|
+
max = value;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return max;
|
|
9
|
+
}
|
|
10
|
+
export function canCheckpointState(lsn, state) {
|
|
11
|
+
return (state.snapshotDone === true &&
|
|
12
|
+
(state.lastCheckpointLsn == null || state.lastCheckpointLsn <= lsn) &&
|
|
13
|
+
(state.noCheckpointBefore == null || state.noCheckpointBefore <= lsn));
|
|
14
|
+
}
|
|
15
|
+
export function calculateCheckpointState(input) {
|
|
16
|
+
const canCheckpoint = canCheckpointState(input.lsn, input);
|
|
17
|
+
const newKeepaliveOp = canCheckpoint ? null : maxOpId(input.keepaliveOp, input.persistedOp);
|
|
18
|
+
const newLastCheckpoint = canCheckpoint
|
|
19
|
+
? maxOpId(input.lastCheckpoint, input.persistedOp, input.keepaliveOp)
|
|
20
|
+
: input.lastCheckpoint;
|
|
21
|
+
const notEmpty = input.createEmptyCheckpoints || input.keepaliveOp !== newKeepaliveOp || input.lastCheckpoint !== newLastCheckpoint;
|
|
22
|
+
return {
|
|
23
|
+
canCheckpoint,
|
|
24
|
+
checkpointBlocked: !canCheckpoint,
|
|
25
|
+
checkpointCreated: canCheckpoint && notEmpty,
|
|
26
|
+
notEmpty,
|
|
27
|
+
newKeepaliveOp,
|
|
28
|
+
newLastCheckpoint
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=CheckpointState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckpointState.js","sourceRoot":"","sources":["../../../src/storage/implementation/CheckpointState.ts"],"names":[],"mappings":"AAoBA,SAAS,OAAO,CAAC,GAAG,MAAqC;IACvD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YACjC,GAAG,GAAG,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,KAA8F;IAE9F,OAAO,CACL,KAAK,CAAC,YAAY,KAAK,IAAI;QAC3B,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,IAAI,KAAK,CAAC,iBAAiB,IAAI,GAAG,CAAC;QACnE,CAAC,KAAK,CAAC,kBAAkB,IAAI,IAAI,IAAI,KAAK,CAAC,kBAAkB,IAAI,GAAG,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA2B;IAClE,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5F,MAAM,iBAAiB,GAAG,aAAa;QACrC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;QACrE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IACzB,MAAM,QAAQ,GACZ,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAC,WAAW,KAAK,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,iBAAiB,CAAC;IAErH,OAAO;QACL,aAAa;QACb,iBAAiB,EAAE,CAAC,aAAa;QACjC,iBAAiB,EAAE,aAAa,IAAI,QAAQ;QAC5C,QAAQ;QACR,cAAc;QACd,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1,44 +1,59 @@
|
|
|
1
1
|
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import {
|
|
2
|
+
import { HydratedSyncConfig, SqlEventDescriptor } from '@powersync/service-sync-rules';
|
|
3
|
+
import * as bson from 'bson';
|
|
3
4
|
import { BaseObserver, Logger } from '@powersync/lib-services-framework';
|
|
4
|
-
import { BucketStorageMarkRecordUnavailable,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
export declare const MAX_ROW_SIZE: number;
|
|
11
|
-
export declare const EMPTY_DATA: mongo.Binary;
|
|
5
|
+
import { BucketStorageMarkRecordUnavailable, InternalOpId, PerformanceTracer, storage } from '@powersync/service-core';
|
|
6
|
+
import { BucketDefinitionMapping } from './BucketDefinitionMapping.js';
|
|
7
|
+
import { PersistedBatch } from './common/PersistedBatch.js';
|
|
8
|
+
import { SourceRecordStore } from './common/SourceRecordStore.js';
|
|
9
|
+
import type { VersionedPowerSyncMongo } from './db.js';
|
|
12
10
|
export interface MongoBucketBatchOptions {
|
|
13
11
|
db: VersionedPowerSyncMongo;
|
|
14
|
-
syncRules:
|
|
12
|
+
syncRules: HydratedSyncConfig;
|
|
15
13
|
groupId: number;
|
|
16
14
|
slotName: string;
|
|
15
|
+
syncConfigId?: bson.ObjectId | null;
|
|
17
16
|
lastCheckpointLsn: string | null;
|
|
18
17
|
keepaliveOp: InternalOpId | null;
|
|
19
18
|
resumeFromLsn: string | null;
|
|
20
19
|
storeCurrentData: boolean;
|
|
20
|
+
mapping: BucketDefinitionMapping;
|
|
21
21
|
/**
|
|
22
22
|
* Set to true for initial replication.
|
|
23
23
|
*/
|
|
24
24
|
skipExistingRows: boolean;
|
|
25
25
|
markRecordUnavailable: BucketStorageMarkRecordUnavailable | undefined;
|
|
26
|
-
|
|
26
|
+
hooks: storage.StorageHooks | undefined;
|
|
27
|
+
logger: Logger;
|
|
28
|
+
tracer?: PerformanceTracer<'storage' | 'evaluate'>;
|
|
27
29
|
}
|
|
28
|
-
export declare class MongoBucketBatch extends BaseObserver<storage.BucketBatchStorageListener> implements storage.BucketStorageBatch {
|
|
29
|
-
|
|
30
|
+
export declare abstract class MongoBucketBatch extends BaseObserver<storage.BucketBatchStorageListener> implements storage.BucketStorageBatch {
|
|
31
|
+
protected readonly options: MongoBucketBatchOptions;
|
|
32
|
+
protected logger: Logger;
|
|
30
33
|
private readonly client;
|
|
31
34
|
readonly db: VersionedPowerSyncMongo;
|
|
32
35
|
readonly session: mongo.ClientSession;
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
protected readonly sync_rules: HydratedSyncConfig;
|
|
37
|
+
protected readonly group_id: number;
|
|
35
38
|
private readonly slot_name;
|
|
39
|
+
/**
|
|
40
|
+
* Source-level setting for whether raw row data should be stored in current_data.
|
|
41
|
+
*
|
|
42
|
+
* Some sources always send complete rows (MongoDB, MySQL with binlog_row_image=full),
|
|
43
|
+
* in which case this is false for the whole batch. For sources where it depends on the
|
|
44
|
+
* table (Postgres REPLICA IDENTITY), this is true and the decision is refined per-table
|
|
45
|
+
* via SourceTable.storeCurrentData. The effective per-record value is the conjunction of
|
|
46
|
+
* the two.
|
|
47
|
+
*/
|
|
36
48
|
private readonly storeCurrentData;
|
|
37
|
-
|
|
49
|
+
readonly skipExistingRows: boolean;
|
|
50
|
+
protected readonly mapping: BucketDefinitionMapping;
|
|
38
51
|
private batch;
|
|
39
52
|
private write_checkpoint_batch;
|
|
40
53
|
private markRecordUnavailable;
|
|
54
|
+
private hooks;
|
|
41
55
|
private clearedError;
|
|
56
|
+
private tracer;
|
|
42
57
|
/**
|
|
43
58
|
* Last LSN received associated with a checkpoint.
|
|
44
59
|
*
|
|
@@ -46,8 +61,8 @@ export declare class MongoBucketBatch extends BaseObserver<storage.BucketBatchSt
|
|
|
46
61
|
* 1. A commit LSN.
|
|
47
62
|
* 2. A keepalive message LSN.
|
|
48
63
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
64
|
+
protected last_checkpoint_lsn: string | null;
|
|
65
|
+
protected persisted_op: InternalOpId | null;
|
|
51
66
|
/**
|
|
52
67
|
* Last written op, if any. This may not reflect a consistent checkpoint.
|
|
53
68
|
*/
|
|
@@ -63,29 +78,31 @@ export declare class MongoBucketBatch extends BaseObserver<storage.BucketBatchSt
|
|
|
63
78
|
* This is set when creating the batch, but may not be updated afterwards.
|
|
64
79
|
*/
|
|
65
80
|
resumeFromLsn: string | null;
|
|
66
|
-
private needsActivation;
|
|
67
81
|
constructor(options: MongoBucketBatchOptions);
|
|
68
82
|
addCustomWriteCheckpoint(checkpoint: storage.BatchedCustomWriteCheckpointOptions): void;
|
|
69
83
|
get lastCheckpointLsn(): string | null;
|
|
84
|
+
abstract resolveTables(options: storage.ResolveTablesOptions): Promise<storage.ResolveTablesResult>;
|
|
85
|
+
protected abstract createPersistedBatch(writtenSize: number): PersistedBatch;
|
|
86
|
+
protected abstract get sourceRecordStore(): SourceRecordStore;
|
|
87
|
+
protected abstract cleanupDroppedSourceTables(sourceTables: storage.SourceTable[]): Promise<void>;
|
|
88
|
+
abstract commit(lsn: string, options?: storage.BucketBatchCommitOptions): Promise<storage.CheckpointResult>;
|
|
89
|
+
abstract keepalive(lsn: string): Promise<storage.CheckpointResult>;
|
|
90
|
+
abstract setResumeLsn(lsn: string): Promise<void>;
|
|
91
|
+
abstract getSourceTableStatus(table: storage.SourceTable): Promise<storage.SourceTable | null>;
|
|
92
|
+
abstract markAllSnapshotDone(no_checkpoint_before_lsn: string): Promise<void>;
|
|
93
|
+
abstract markSnapshotDone(no_checkpoint_before_lsn: string, options?: {
|
|
94
|
+
throwOnConflict?: boolean;
|
|
95
|
+
}): Promise<void>;
|
|
96
|
+
abstract markTableSnapshotRequired(table: storage.SourceTable): Promise<void>;
|
|
97
|
+
abstract markTableSnapshotDone(tables: storage.SourceTable[], no_checkpoint_before_lsn?: string): Promise<storage.SourceTable[]>;
|
|
70
98
|
flush(options?: storage.BatchBucketFlushOptions): Promise<storage.FlushedResult | null>;
|
|
71
99
|
private flushInner;
|
|
72
100
|
private replicateBatch;
|
|
73
101
|
private saveOperation;
|
|
74
|
-
|
|
102
|
+
protected withTransaction(cb: () => Promise<void>): Promise<void>;
|
|
75
103
|
private withReplicationTransaction;
|
|
76
104
|
[Symbol.asyncDispose](): Promise<void>;
|
|
77
105
|
dispose(): Promise<void>;
|
|
78
|
-
private lastWaitingLogThottled;
|
|
79
|
-
commit(lsn: string, options?: storage.BucketBatchCommitOptions): Promise<CheckpointResult>;
|
|
80
|
-
private cleanupCurrentData;
|
|
81
|
-
/**
|
|
82
|
-
* Switch from processing -> active if relevant.
|
|
83
|
-
*
|
|
84
|
-
* Called on new commits.
|
|
85
|
-
*/
|
|
86
|
-
private autoActivate;
|
|
87
|
-
keepalive(lsn: string): Promise<CheckpointResult>;
|
|
88
|
-
setResumeLsn(lsn: string): Promise<void>;
|
|
89
106
|
save(record: storage.SaveOptions): Promise<storage.FlushedResult | null>;
|
|
90
107
|
/**
|
|
91
108
|
* Drop is equivalent to TRUNCATE, plus removing our record of the table.
|
|
@@ -94,13 +111,9 @@ export declare class MongoBucketBatch extends BaseObserver<storage.BucketBatchSt
|
|
|
94
111
|
truncate(sourceTables: storage.SourceTable[]): Promise<storage.FlushedResult | null>;
|
|
95
112
|
truncateSingle(sourceTable: storage.SourceTable): Promise<InternalOpId>;
|
|
96
113
|
updateTableProgress(table: storage.SourceTable, progress: Partial<storage.TableSnapshotStatus>): Promise<storage.SourceTable>;
|
|
97
|
-
markAllSnapshotDone(no_checkpoint_before_lsn: string): Promise<void>;
|
|
98
|
-
markTableSnapshotRequired(table: storage.SourceTable): Promise<void>;
|
|
99
|
-
markTableSnapshotDone(tables: storage.SourceTable[], no_checkpoint_before_lsn?: string): Promise<storage.SourceTable[]>;
|
|
100
114
|
protected clearError(): Promise<void>;
|
|
101
115
|
/**
|
|
102
116
|
* Gets relevant {@link SqlEventDescriptor}s for the given {@link SourceTable}
|
|
103
117
|
*/
|
|
104
118
|
protected getTableEvents(table: storage.SourceTable): SqlEventDescriptor[];
|
|
105
119
|
}
|
|
106
|
-
export declare function currentBucketKey(b: CurrentBucket): string;
|