@powersync/service-module-mongodb-storage 0.23.2 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/LICENSE +201 -67
- package/dist/storage/MongoBucketStorage.d.ts +1 -0
- package/dist/storage/MongoBucketStorage.js +3 -0
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +60 -39
- package/dist/storage/implementation/MongoBucketBatch.js +123 -296
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoOpIdAllocator.d.ts +6 -1
- package/dist/storage/implementation/MongoOpIdAllocator.js +12 -5
- package/dist/storage/implementation/MongoOpIdAllocator.js.map +1 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +7 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js +28 -2
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
- package/dist/storage/implementation/MongoReplicationOptions.d.ts +27 -0
- package/dist/storage/implementation/MongoReplicationOptions.js +26 -0
- package/dist/storage/implementation/MongoReplicationOptions.js.map +1 -0
- package/dist/storage/implementation/MongoSyncBucketStorage.js +2 -3
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +15 -2
- package/dist/storage/implementation/MongoSyncRulesLock.js +36 -14
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/common/BatchOperationBuffer.d.ts +79 -0
- package/dist/storage/implementation/common/BatchOperationBuffer.js +286 -0
- package/dist/storage/implementation/common/BatchOperationBuffer.js.map +1 -0
- package/dist/storage/implementation/common/PersistedBatch.d.ts +10 -103
- package/dist/storage/implementation/common/PersistedBatch.js +1 -291
- package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
- package/dist/storage/implementation/common/PreparedPublication.d.ts +43 -0
- package/dist/storage/implementation/common/PreparedPublication.js +2 -0
- package/dist/storage/implementation/common/PreparedPublication.js.map +1 -0
- package/dist/storage/implementation/common/SourceRecordStore.d.ts +0 -2
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +17 -13
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +259 -18
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +21 -15
- package/dist/storage/implementation/v1/PersistedBatchV1.js +58 -24
- package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/SourceRecordStoreV1.d.ts +0 -2
- package/dist/storage/implementation/v1/SourceRecordStoreV1.js +0 -3
- package/dist/storage/implementation/v1/SourceRecordStoreV1.js.map +1 -1
- package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +25 -14
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +350 -23
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +1 -0
- package/dist/storage/implementation/v3/MongoCompactorV3.js +10 -4
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +39 -28
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
- package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +46 -24
- package/dist/storage/implementation/v3/PersistedBatchV3.js +159 -83
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +12 -0
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js +41 -13
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +4 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +4 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +27 -2
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +61 -5
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
- package/package.json +9 -10
- package/src/storage/MongoBucketStorage.ts +4 -0
- package/src/storage/implementation/MongoBucketBatch.ts +185 -392
- package/src/storage/implementation/MongoOpIdAllocator.ts +12 -5
- package/src/storage/implementation/MongoParsedSyncConfigSet.ts +40 -1
- package/src/storage/implementation/MongoReplicationOptions.ts +28 -0
- package/src/storage/implementation/MongoSyncBucketStorage.ts +2 -3
- package/src/storage/implementation/MongoSyncRulesLock.ts +39 -17
- package/src/storage/implementation/common/BatchOperationBuffer.ts +353 -0
- package/src/storage/implementation/common/PersistedBatch.ts +12 -390
- package/src/storage/implementation/common/PreparedPublication.ts +49 -0
- package/src/storage/implementation/common/SourceRecordStore.ts +0 -2
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +339 -27
- package/src/storage/implementation/v1/PersistedBatchV1.ts +74 -32
- package/src/storage/implementation/v1/SourceRecordStoreV1.ts +0 -5
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +430 -32
- package/src/storage/implementation/v3/MongoCompactorV3.ts +13 -4
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +43 -29
- package/src/storage/implementation/v3/PersistedBatchV3.ts +209 -108
- package/src/storage/implementation/v3/SourceRecordStoreV3.ts +45 -15
- package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +9 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +79 -5
- package/test/src/checkpoint_cleanup.test.ts +75 -0
- package/test/src/concurrent_writers.test.ts +127 -53
- package/test/src/helpers/PublicationCommandMonitor.ts +119 -0
- package/test/src/helpers/concurrentWriter.mjs +2 -2
- package/test/src/invalid_sync_config.test.ts +9 -0
- package/test/src/object_storage_lifecycle.test.ts +72 -2
- package/test/src/prepared_publication.test.ts +388 -0
- package/test/src/replication_preparation.test.ts +829 -0
- package/test/src/replication_publication_baseline.test.ts +203 -0
- package/test/src/replication_publication_batching.test.ts +212 -0
- package/test/src/replication_uploads.test.ts +393 -0
- package/test/src/source_table_config.test.ts +4 -4
- package/test/src/storage_object_storage_inline_threshold.test.ts +1 -1
- package/test/src/storage_s3_compaction_lifecycle.test.ts +93 -1
- package/test/src/storage_sync.test.ts +83 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,21 +1,61 @@
|
|
|
1
1
|
import { ReplicationAssertionError } from '@powersync/lib-services-framework';
|
|
2
2
|
import { storage } from '@powersync/service-core';
|
|
3
3
|
import * as bson from 'bson';
|
|
4
|
+
import { BatchOperationBuffer } from '../common/BatchOperationBuffer.js';
|
|
4
5
|
import { mongoTableId } from '../../../utils/util.js';
|
|
5
6
|
import { EMPTY_DATA } from '../MongoBucketBatchShared.js';
|
|
6
|
-
import { PersistedBatch } from '../common/PersistedBatch.js';
|
|
7
7
|
import { LEGACY_BUCKET_DATA_DEFINITION_ID, LEGACY_BUCKET_PARAMETER_INDEX_ID } from '../models.js';
|
|
8
8
|
import { serializeBucketDataV1, taggedBucketParameterDocumentToV1 } from './models.js';
|
|
9
|
-
export class PersistedBatchV1
|
|
9
|
+
export class PersistedBatchV1 {
|
|
10
|
+
db;
|
|
11
|
+
group_id;
|
|
12
|
+
operations;
|
|
10
13
|
// Each upsert supplies the complete source-record state. Only its final
|
|
11
14
|
// state matters within a flush; bucket and parameter history is kept separately.
|
|
12
15
|
currentData = new Map();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
constructor(db, group_id, writtenSize, options) {
|
|
17
|
+
this.db = db;
|
|
18
|
+
this.group_id = group_id;
|
|
19
|
+
this.operations = new BatchOperationBuffer(group_id, writtenSize, {
|
|
20
|
+
checkDefinitionId: () => LEGACY_BUCKET_DATA_DEFINITION_ID,
|
|
21
|
+
getBucketDefinitionId: () => LEGACY_BUCKET_DATA_DEFINITION_ID
|
|
22
|
+
}, options?.logger);
|
|
16
23
|
}
|
|
17
|
-
|
|
18
|
-
return
|
|
24
|
+
get currentSize() {
|
|
25
|
+
return this.operations.currentSize;
|
|
26
|
+
}
|
|
27
|
+
saveBucketData(options) {
|
|
28
|
+
this.operations.saveBucketData(options);
|
|
29
|
+
}
|
|
30
|
+
shouldFlushTransaction() {
|
|
31
|
+
return this.operations.shouldFlushTransaction(this.currentData.size);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Keeps track of bulkwrite operations within a transaction.
|
|
35
|
+
*
|
|
36
|
+
* There may be multiple of these batches per transaction, but it may not span
|
|
37
|
+
* multiple transactions.
|
|
38
|
+
*/
|
|
39
|
+
async flush(session, options) {
|
|
40
|
+
const startAt = performance.now();
|
|
41
|
+
const writes = this.db.createWriteBatch(session, { ordered: false });
|
|
42
|
+
if (this.operations.bucketDataCount > 0) {
|
|
43
|
+
await this.queueBucketData(writes);
|
|
44
|
+
}
|
|
45
|
+
if (this.operations.bucketParameters.length > 0) {
|
|
46
|
+
this.queueBucketParameters(writes);
|
|
47
|
+
}
|
|
48
|
+
if (this.currentData.size > 0) {
|
|
49
|
+
this.queueCurrentData(writes);
|
|
50
|
+
}
|
|
51
|
+
if (this.operations.bucketStates.size > 0) {
|
|
52
|
+
this.queueBucketStates(writes);
|
|
53
|
+
}
|
|
54
|
+
await writes.execute();
|
|
55
|
+
const stats = this.operations.logFlush(startAt, this.currentData.size, options);
|
|
56
|
+
this.currentData.clear();
|
|
57
|
+
this.operations.clear();
|
|
58
|
+
return stats;
|
|
19
59
|
}
|
|
20
60
|
saveParameterData(data) {
|
|
21
61
|
const { sourceTable, sourceKey, evaluated } = data;
|
|
@@ -30,7 +70,7 @@ export class PersistedBatchV1 extends PersistedBatch {
|
|
|
30
70
|
const binLookup = storage.serializeLookup(result.lookup);
|
|
31
71
|
remaining_lookups.delete(binLookup.toString('base64'));
|
|
32
72
|
const op_id = data.op_seq.next();
|
|
33
|
-
this.debugLastOpId = op_id;
|
|
73
|
+
this.operations.debugLastOpId = op_id;
|
|
34
74
|
const values = {
|
|
35
75
|
_id: op_id,
|
|
36
76
|
key: {
|
|
@@ -41,15 +81,15 @@ export class PersistedBatchV1 extends PersistedBatch {
|
|
|
41
81
|
lookup: binLookup,
|
|
42
82
|
bucket_parameters: result.bucketParameters
|
|
43
83
|
};
|
|
44
|
-
this.bucketParameters.push({
|
|
84
|
+
this.operations.bucketParameters.push({
|
|
45
85
|
...values,
|
|
46
86
|
index: LEGACY_BUCKET_PARAMETER_INDEX_ID
|
|
47
87
|
});
|
|
48
|
-
this.currentSize += 200;
|
|
88
|
+
this.operations.currentSize += 200;
|
|
49
89
|
}
|
|
50
90
|
for (let lookup of remaining_lookups.values()) {
|
|
51
91
|
const op_id = data.op_seq.next();
|
|
52
|
-
this.debugLastOpId = op_id;
|
|
92
|
+
this.operations.debugLastOpId = op_id;
|
|
53
93
|
const values = {
|
|
54
94
|
_id: op_id,
|
|
55
95
|
key: {
|
|
@@ -60,11 +100,11 @@ export class PersistedBatchV1 extends PersistedBatch {
|
|
|
60
100
|
lookup,
|
|
61
101
|
bucket_parameters: []
|
|
62
102
|
};
|
|
63
|
-
this.bucketParameters.push({
|
|
103
|
+
this.operations.bucketParameters.push({
|
|
64
104
|
...values,
|
|
65
105
|
index: LEGACY_BUCKET_PARAMETER_INDEX_ID
|
|
66
106
|
});
|
|
67
|
-
this.currentSize += 200;
|
|
107
|
+
this.operations.currentSize += 200;
|
|
68
108
|
}
|
|
69
109
|
}
|
|
70
110
|
hardDeleteCurrentData(sourceTableId, replicaId) {
|
|
@@ -73,7 +113,7 @@ export class PersistedBatchV1 extends PersistedBatch {
|
|
|
73
113
|
filter: { _id: this.currentDataId(sourceTableId, replicaId) }
|
|
74
114
|
}
|
|
75
115
|
});
|
|
76
|
-
this.currentSize += 50;
|
|
116
|
+
this.operations.currentSize += 50;
|
|
77
117
|
}
|
|
78
118
|
softDeleteCurrentData(sourceTableId, replicaId, _checkpointGreaterThan) {
|
|
79
119
|
this.hardDeleteCurrentData(sourceTableId, replicaId);
|
|
@@ -108,20 +148,17 @@ export class PersistedBatchV1 extends PersistedBatch {
|
|
|
108
148
|
upsert: true
|
|
109
149
|
}
|
|
110
150
|
});
|
|
111
|
-
this.currentSize += (values.data?.length() ?? 0) + 100;
|
|
112
|
-
}
|
|
113
|
-
get currentDataCount() {
|
|
114
|
-
return this.currentData.size;
|
|
151
|
+
this.operations.currentSize += (values.data?.length() ?? 0) + 100;
|
|
115
152
|
}
|
|
116
153
|
async queueBucketData(writes) {
|
|
117
|
-
writes.bulkWriteUnordered(this.db.bucketDataV1, this.bucketData.map((document) => ({
|
|
154
|
+
writes.bulkWriteUnordered(this.db.bucketDataV1, this.operations.bucketData.map((document) => ({
|
|
118
155
|
insertOne: {
|
|
119
156
|
document: serializeBucketDataV1(document)
|
|
120
157
|
}
|
|
121
158
|
})));
|
|
122
159
|
}
|
|
123
160
|
queueBucketParameters(writes) {
|
|
124
|
-
writes.bulkWriteUnordered(this.db.parameterIndexV1, this.bucketParameters.map((document) => ({
|
|
161
|
+
writes.bulkWriteUnordered(this.db.parameterIndexV1, this.operations.bucketParameters.map((document) => ({
|
|
125
162
|
insertOne: {
|
|
126
163
|
document: taggedBucketParameterDocumentToV1(document)
|
|
127
164
|
}
|
|
@@ -136,11 +173,8 @@ export class PersistedBatchV1 extends PersistedBatch {
|
|
|
136
173
|
queueBucketStates(writes) {
|
|
137
174
|
writes.bulkWriteUnordered(this.db.bucketStateV1, this.getBucketStateUpdates());
|
|
138
175
|
}
|
|
139
|
-
resetCurrentData() {
|
|
140
|
-
this.currentData.clear();
|
|
141
|
-
}
|
|
142
176
|
getBucketStateUpdates() {
|
|
143
|
-
return Array.from(this.bucketStates.values()).map((state) => {
|
|
177
|
+
return Array.from(this.operations.bucketStates.values()).map((state) => {
|
|
144
178
|
return {
|
|
145
179
|
updateOne: {
|
|
146
180
|
filter: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistedBatchV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/PersistedBatchV1.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PersistedBatchV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/PersistedBatchV1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import { Logger } from '@powersync/lib-services-framework';
|
|
3
2
|
import { EvaluatedParameters, EvaluatedRow } from '@powersync/service-sync-rules';
|
|
4
3
|
import * as bson from 'bson';
|
|
5
4
|
import { LoadedSourceRecord, SourceRecordLookupEntry, SourceRecordLookupState, SourceRecordStore } from '../common/SourceRecordStore.js';
|
|
@@ -15,5 +14,4 @@ export declare class SourceRecordStoreV1 implements SourceRecordStore {
|
|
|
15
14
|
loadSizes(session: mongo.ClientSession, entries: SourceRecordLookupEntry[]): Promise<Map<string, number>>;
|
|
16
15
|
loadDocuments(session: mongo.ClientSession, entries: SourceRecordLookupEntry[], idsOnly: boolean): Promise<Map<string, LoadedSourceRecord>>;
|
|
17
16
|
loadTruncateBatch(session: mongo.ClientSession, sourceTableId: bson.ObjectId, limit: number): Promise<LoadedSourceRecord[]>;
|
|
18
|
-
postCommitCleanup(_lastCheckpoint: bigint, _logger: Logger): Promise<void>;
|
|
19
17
|
}
|
|
@@ -98,8 +98,5 @@ export class SourceRecordStoreV1 {
|
|
|
98
98
|
});
|
|
99
99
|
return (await cursor.toArray()).map((doc) => this.createLoadedDocument(sourceTableId, doc._id, null, doc.buckets, doc.lookups));
|
|
100
100
|
}
|
|
101
|
-
async postCommitCleanup(_lastCheckpoint, _logger) {
|
|
102
|
-
// No-op for V1.
|
|
103
|
-
}
|
|
104
101
|
}
|
|
105
102
|
//# sourceMappingURL=SourceRecordStoreV1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceRecordStoreV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/SourceRecordStoreV1.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SourceRecordStoreV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/SourceRecordStoreV1.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import * as lib_mongo from '@powersync/lib-service-mongodb';
|
|
|
2
2
|
import { InternalOpId, storage } from '@powersync/service-core';
|
|
3
3
|
import { MongoBucketBatch, MongoBucketBatchOptions } from '../MongoBucketBatch.js';
|
|
4
4
|
import { MongoWriteBatch } from '../MongoWriteBatch.js';
|
|
5
|
-
import { PersistedBatch } from '../common/PersistedBatch.js';
|
|
6
|
-
import { SourceRecordStore } from '../common/SourceRecordStore.js';
|
|
7
5
|
import { SyncRuleDocumentBase } from '../models.js';
|
|
6
|
+
import { PersistedBatchV3 } from './PersistedBatchV3.js';
|
|
7
|
+
import { SourceRecordStoreV3 } from './SourceRecordStoreV3.js';
|
|
8
8
|
import { VersionedPowerSyncMongoV3 } from './VersionedPowerSyncMongoV3.js';
|
|
9
9
|
export declare class MongoBucketBatchV3 extends MongoBucketBatch {
|
|
10
10
|
readonly db: VersionedPowerSyncMongoV3;
|
|
@@ -16,8 +16,20 @@ export declare class MongoBucketBatchV3 extends MongoBucketBatch {
|
|
|
16
16
|
private needsActivationV3;
|
|
17
17
|
private lastWaitingLogThrottledV3;
|
|
18
18
|
constructor(options: MongoBucketBatchOptions);
|
|
19
|
-
protected createPersistedBatch(writtenSize: number):
|
|
20
|
-
protected get sourceRecordStore():
|
|
19
|
+
protected createPersistedBatch(writtenSize: number): PersistedBatchV3;
|
|
20
|
+
protected get sourceRecordStore(): SourceRecordStoreV3;
|
|
21
|
+
protected withTransaction<T>(callback: (stream: SyncRuleDocumentBase) => Promise<T>, session?: lib_mongo.mongo.ClientSession): Promise<T>;
|
|
22
|
+
protected flushInner(options?: storage.BatchBucketFlushOptions, checkpoint?: (stream: SyncRuleDocumentBase, lastOp: InternalOpId, writes?: MongoWriteBatch) => Promise<void>, projection?: lib_mongo.mongo.Document): Promise<storage.FlushedResult | null>;
|
|
23
|
+
private assertPreparationContext;
|
|
24
|
+
/**
|
|
25
|
+
* Internal publisher: the public operation holds the mutex through commit.
|
|
26
|
+
* finish() must only queue writes independent of the final data group, using
|
|
27
|
+
* the fresh fence and planned IDs; it must not execute the supplied batch or
|
|
28
|
+
* read results from unpublished data. Activation and cleanup remain separate.
|
|
29
|
+
*/
|
|
30
|
+
private publishPrepared;
|
|
31
|
+
private prepareRows;
|
|
32
|
+
protected truncateSingleInternal(sourceTable: storage.SourceTable): Promise<InternalOpId>;
|
|
21
33
|
protected persistedOpHead(stream: SyncRuleDocumentBase): InternalOpId;
|
|
22
34
|
protected onReplicationTransactionFlush(writes: MongoWriteBatch, lastOp: InternalOpId): void;
|
|
23
35
|
private selectedSyncConfigObjectIds;
|
|
@@ -25,21 +37,20 @@ export declare class MongoBucketBatchV3 extends MongoBucketBatch {
|
|
|
25
37
|
private relevantSyncConfigIdsForTables;
|
|
26
38
|
private snapshotBlockingSourceTablesFilter;
|
|
27
39
|
protected cleanupDroppedSourceTables(sourceTables: storage.SourceTable[]): Promise<void>;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
setResumeLsn(lsn: string): Promise<void>;
|
|
40
|
+
protected resolveTablesInternal(options: storage.ResolveTablesOptions): Promise<storage.ResolveTablesResult>;
|
|
41
|
+
protected getSourceTableStatusInternal(table: storage.SourceTable): Promise<storage.SourceTable | null>;
|
|
42
|
+
protected commitInternal(lsn: string, options?: storage.BucketBatchCommitOptions): Promise<storage.CheckpointResult>;
|
|
43
|
+
protected setResumeLsnInternal(lsn: string): Promise<void>;
|
|
33
44
|
private autoActivateV3;
|
|
34
45
|
private syncConfigMetadataUpdate;
|
|
35
46
|
private snapshotDoneUpdate;
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
protected markAllSnapshotDoneInternal(no_checkpoint_before_lsn: string): Promise<void>;
|
|
48
|
+
protected markSnapshotDoneInternal(no_checkpoint_before_lsn: string, options?: {
|
|
38
49
|
throwOnConflict?: boolean;
|
|
39
50
|
}): Promise<void>;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
protected markTableSnapshotRequiredInternal(table: storage.SourceTable): Promise<void>;
|
|
52
|
+
protected markTableSnapshotDoneInternal(tables: storage.SourceTable[], no_checkpoint_before_lsn?: string): Promise<storage.SourceTable[]>;
|
|
53
|
+
private queueCustomWriteCheckpoints;
|
|
43
54
|
protected prepareCustomWriteCheckpoints(): Promise<void>;
|
|
44
55
|
private validateCustomCheckpointEventId;
|
|
45
56
|
private batchCreateEventCustomWriteCheckpoints;
|