@powersync/service-module-mongodb-storage 0.17.0 → 0.18.1
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 +27 -0
- package/dist/storage/MongoBucketStorage.d.ts +34 -16
- package/dist/storage/MongoBucketStorage.js +219 -70
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +42 -23
- package/dist/storage/implementation/MongoBucketBatch.js +61 -44
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoChecksums.d.ts +10 -9
- package/dist/storage/implementation/MongoChecksums.js +3 -111
- package/dist/storage/implementation/MongoChecksums.js.map +1 -1
- package/dist/storage/implementation/MongoCompactor.d.ts +2 -0
- package/dist/storage/implementation/MongoCompactor.js +18 -9
- 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 +6 -5
- package/dist/storage/implementation/MongoParameterCompactor.js +24 -1
- package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +13 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js +64 -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 +123 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -0
- package/dist/storage/implementation/MongoStorageProvider.js +5 -2
- package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +41 -23
- package/dist/storage/implementation/MongoSyncBucketStorage.js +51 -43
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.js +3 -3
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +6 -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 +1 -2
- package/dist/storage/implementation/common/PersistedBatch.js +5 -0
- 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.js +9 -14
- package/dist/storage/implementation/db.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +4 -13
- package/dist/storage/implementation/models.js.map +1 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +9 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +42 -26
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoChecksumsV1.js +114 -3
- package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +15 -17
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +47 -45
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.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/v3/MongoBucketBatchV3.d.ts +8 -4
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +286 -259
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +27 -7
- package/dist/storage/implementation/v3/MongoChecksumsV3.js +202 -18
- package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +19 -2
- package/dist/storage/implementation/v3/MongoCompactorV3.js +511 -22
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +62 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +350 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -0
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +40 -28
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +232 -116
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
- package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +1 -1
- package/dist/storage/implementation/v3/PersistedBatchV3.js +43 -20
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js +52 -16
- package/dist/storage/implementation/v3/SingleBucketStoreV3.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 +13 -12
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +29 -27
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
- package/dist/storage/implementation/v3/bucket-format.d.ts +4 -0
- package/dist/storage/implementation/v3/bucket-format.js +58 -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 +28 -0
- package/dist/storage/implementation/v3/chunking.js.map +1 -0
- package/dist/storage/implementation/v3/models.d.ts +64 -21
- package/dist/storage/implementation/v3/models.js +11 -28
- package/dist/storage/implementation/v3/models.js.map +1 -1
- package/dist/storage/implementation/v3/source-table-utils.d.ts +55 -0
- package/dist/storage/implementation/v3/source-table-utils.js +214 -0
- package/dist/storage/implementation/v3/source-table-utils.js.map +1 -0
- package/dist/storage/storage-index.d.ts +4 -4
- package/dist/storage/storage-index.js +4 -4
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/types/types.d.ts +2 -2
- package/dist/utils/test-utils.d.ts +1 -2
- package/dist/utils/test-utils.js +5 -1
- package/dist/utils/test-utils.js.map +1 -1
- package/dist/utils/util.d.ts +1 -1
- package/dist/utils/util.js +3 -2
- package/dist/utils/util.js.map +1 -1
- package/package.json +9 -19
- package/src/storage/MongoBucketStorage.ts +334 -87
- package/src/storage/implementation/MongoBucketBatch.ts +86 -58
- package/src/storage/implementation/MongoChecksums.ts +6 -138
- package/src/storage/implementation/MongoCompactor.ts +19 -9
- package/src/storage/implementation/MongoHydrationState.ts +61 -0
- package/src/storage/implementation/MongoParameterCompactor.ts +24 -5
- package/src/storage/implementation/MongoParsedSyncConfigSet.ts +88 -0
- package/src/storage/implementation/MongoPersistedReplicationStream.ts +118 -0
- package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +154 -0
- package/src/storage/implementation/MongoStorageProvider.ts +5 -2
- package/src/storage/implementation/MongoSyncBucketStorage.ts +70 -56
- package/src/storage/implementation/MongoSyncRulesLock.ts +7 -4
- package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +7 -0
- package/src/storage/implementation/common/PersistedBatch.ts +7 -3
- package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +1 -1
- package/src/storage/implementation/createMongoSyncBucketStorage.ts +21 -7
- package/src/storage/implementation/db.ts +11 -19
- package/src/storage/implementation/models.ts +4 -14
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +55 -34
- package/src/storage/implementation/v1/MongoChecksumsV1.ts +137 -4
- package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +70 -64
- package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +11 -1
- package/src/storage/implementation/v1/models.ts +11 -1
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +358 -314
- package/src/storage/implementation/v3/MongoChecksumsV3.ts +262 -26
- package/src/storage/implementation/v3/MongoCompactorV3.ts +646 -29
- package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +480 -0
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +315 -157
- package/src/storage/implementation/v3/PersistedBatchV3.ts +62 -36
- package/src/storage/implementation/v3/SingleBucketStoreV3.ts +59 -19
- package/src/storage/implementation/v3/SourceRecordStoreV3.ts +12 -12
- package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +41 -36
- package/src/storage/implementation/v3/bucket-format.ts +70 -0
- package/src/storage/implementation/v3/chunking.ts +38 -0
- package/src/storage/implementation/v3/models.ts +93 -55
- package/src/storage/implementation/v3/source-table-utils.ts +392 -0
- package/src/storage/storage-index.ts +12 -4
- package/src/utils/test-utils.ts +6 -3
- package/src/utils/util.ts +3 -2
- package/test/src/__snapshots__/storage.test.ts.snap +0 -75
- package/test/src/__snapshots__/storage_sync.test.ts.snap +48 -48
- package/test/src/cleanup-stopped-sync-configs.test.ts +648 -0
- package/test/src/storage.test.ts +11 -11
- package/test/src/storage_compacting.test.ts +1956 -6
- package/test/src/storage_sync.test.ts +1077 -68
- package/test/src/storeCurrentData.test.ts +17 -7
- package/test/src/util.ts +2 -1
- 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/v3/MongoParameterCompactorV3.d.ts +0 -9
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +0 -18
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.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/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/v3/MongoParameterCompactorV3.ts +0 -24
- package/src/storage/implementation/v3/MongoParameterLookupV3.ts +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @powersync/service-module-mongodb-storage
|
|
2
2
|
|
|
3
|
+
## 0.18.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7e65360: Restructure replication locks for updated sync config.
|
|
8
|
+
- Updated dependencies [7e65360]
|
|
9
|
+
- @powersync/service-core@1.23.1
|
|
10
|
+
|
|
11
|
+
## 0.18.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- a91a08f: [Experimental] Enable incremental reprocessing for MongoDB source + MongoDB storage. This includes significant changes to the v3 storage format.
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 101ea67: Include table names in "Cannot mark snapshot done while source tables still require snapshotting" error.
|
|
20
|
+
- Updated dependencies [a91a08f]
|
|
21
|
+
- Updated dependencies [184c39f]
|
|
22
|
+
- Updated dependencies [c3f75df]
|
|
23
|
+
- Updated dependencies [4bd35ea]
|
|
24
|
+
- @powersync/service-core@1.23.0
|
|
25
|
+
- @powersync/service-types@0.16.0
|
|
26
|
+
- @powersync/service-sync-rules@0.38.0
|
|
27
|
+
- @powersync/lib-services-framework@0.9.6
|
|
28
|
+
- @powersync/lib-service-mongodb@0.6.27
|
|
29
|
+
|
|
3
30
|
## 0.17.0
|
|
4
31
|
|
|
5
32
|
### Minor Changes
|
|
@@ -3,33 +3,51 @@ import { DO_NOT_LOG } from '@powersync/lib-services-framework';
|
|
|
3
3
|
import type { MongoSyncBucketStorage } from './implementation/createMongoSyncBucketStorage.js';
|
|
4
4
|
import { PowerSyncMongo } from './implementation/db.js';
|
|
5
5
|
import { MongoChecksumOptions } from './implementation/MongoChecksums.js';
|
|
6
|
-
import {
|
|
6
|
+
import { MongoPersistedReplicationStream } from './implementation/MongoPersistedReplicationStream.js';
|
|
7
7
|
export interface MongoBucketStorageOptions {
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Prefix for replication stream name and Postgres logical replication slot name.
|
|
10
|
+
*/
|
|
11
|
+
replicationStreamNamePrefix: string;
|
|
12
|
+
checksumOptions?: Omit<MongoChecksumOptions, 'storageConfig'>;
|
|
13
|
+
/**
|
|
14
|
+
* Reuse a compatible active replication stream by appending a new sync config.
|
|
15
|
+
*
|
|
16
|
+
* This currently requires source replication support. MongoDB sources can process multiple
|
|
17
|
+
* sync configs in one replication stream, but other source connectors still expect a single
|
|
18
|
+
* sync config per stream.
|
|
19
|
+
*/
|
|
20
|
+
supportsMultipleSyncConfigs?: boolean;
|
|
9
21
|
}
|
|
10
22
|
export declare class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
11
|
-
private
|
|
23
|
+
private options;
|
|
12
24
|
[DO_NOT_LOG]: boolean;
|
|
13
25
|
private readonly client;
|
|
14
26
|
private readonly session;
|
|
15
|
-
readonly
|
|
27
|
+
readonly replicationStreamNamePrefix: string;
|
|
16
28
|
private activeStorageCache;
|
|
17
29
|
readonly db: PowerSyncMongo;
|
|
18
|
-
constructor(db: PowerSyncMongo, options:
|
|
19
|
-
slot_name_prefix: string;
|
|
20
|
-
}, internalOptions?: MongoBucketStorageOptions | undefined);
|
|
30
|
+
constructor(db: PowerSyncMongo, options: MongoBucketStorageOptions);
|
|
21
31
|
[Symbol.asyncDispose](): Promise<void>;
|
|
22
|
-
getInstance(
|
|
32
|
+
getInstance(replicationStream: storage.PersistedReplicationStream, options?: GetIntanceOptions): MongoSyncBucketStorage;
|
|
23
33
|
getSystemIdentifier(): Promise<storage.BucketStorageSystemIdentifier>;
|
|
24
|
-
restartReplication(
|
|
34
|
+
restartReplication(replicationStreamId: number): Promise<void>;
|
|
25
35
|
private updateSyncRulesV3;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
private loadSyncConfigDefinitions;
|
|
37
|
+
/**
|
|
38
|
+
* Load _all_ definition mappings for a replication stream - used as a base to generate new ids.
|
|
39
|
+
*/
|
|
40
|
+
private loadHistoricalSyncConfigRuleMappings;
|
|
41
|
+
private stopEmbeddedDeployingConfigs;
|
|
42
|
+
private logIncrementalDefinitionChanges;
|
|
43
|
+
private appendSyncConfigToStream;
|
|
44
|
+
updateSyncRules(options: storage.UpdateSyncRulesOptions): Promise<MongoPersistedReplicationStream>;
|
|
45
|
+
getActiveSyncConfig(): Promise<storage.ResolvedSyncConfig | null>;
|
|
46
|
+
private replicationStreamFromDoc;
|
|
47
|
+
getDeployingSyncConfig(): Promise<storage.ResolvedSyncConfig | null>;
|
|
48
|
+
getReplicatingReplicationStreams(): Promise<storage.PersistedReplicationStream[]>;
|
|
49
|
+
getStoppedReplicationStreams(): Promise<storage.PersistedReplicationStream[]>;
|
|
50
|
+
private resolvedSyncConfigFromDoc;
|
|
33
51
|
getStorageMetrics(): Promise<storage.StorageMetrics>;
|
|
34
52
|
getPowerSyncInstanceId(): Promise<string>;
|
|
35
53
|
}
|
|
@@ -1,55 +1,57 @@
|
|
|
1
|
-
import { LEGACY_STORAGE_VERSION, storage } from '@powersync/service-core';
|
|
2
|
-
import { DO_NOT_LOG, ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
1
|
+
import { LEGACY_STORAGE_VERSION, SingleSyncConfigBucketDefinitionMapping, storage } from '@powersync/service-core';
|
|
2
|
+
import { DO_NOT_LOG, ErrorCode, logger, ServiceError } from '@powersync/lib-services-framework';
|
|
3
3
|
import { v4 as uuid } from 'uuid';
|
|
4
4
|
import * as lib_mongo from '@powersync/lib-service-mongodb';
|
|
5
|
+
import { describeIncrementalSyncConfigUpdate, formatIncrementalSyncConfigUpdateLog, isCompatible } from '@powersync/service-core';
|
|
5
6
|
import { ObjectId } from 'bson';
|
|
6
|
-
import {
|
|
7
|
-
import { BucketDefinitionMapping } from './implementation/BucketDefinitionMapping.js';
|
|
7
|
+
import { generateReplicationStreamName } from '../utils/util.js';
|
|
8
8
|
import { createMongoSyncBucketStorage } from './implementation/createMongoSyncBucketStorage.js';
|
|
9
9
|
import { getMongoStorageConfig } from './implementation/models.js';
|
|
10
|
-
import {
|
|
10
|
+
import { MongoPersistedReplicationStream } from './implementation/MongoPersistedReplicationStream.js';
|
|
11
11
|
import { syncRuleStateUpdatePipeline } from './implementation/SyncRuleStateUpdate.js';
|
|
12
12
|
export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
13
|
-
|
|
13
|
+
options;
|
|
14
14
|
[DO_NOT_LOG] = true;
|
|
15
15
|
client;
|
|
16
16
|
session;
|
|
17
|
-
|
|
18
|
-
slot_name_prefix;
|
|
17
|
+
replicationStreamNamePrefix;
|
|
19
18
|
activeStorageCache;
|
|
20
19
|
db;
|
|
21
|
-
constructor(db, options
|
|
20
|
+
constructor(db, options) {
|
|
22
21
|
super();
|
|
23
|
-
this.
|
|
22
|
+
this.options = options;
|
|
24
23
|
this.client = db.client;
|
|
25
24
|
this.db = db;
|
|
26
25
|
this.session = this.client.startSession();
|
|
27
|
-
this.
|
|
26
|
+
this.replicationStreamNamePrefix = options.replicationStreamNamePrefix;
|
|
28
27
|
}
|
|
29
28
|
async [Symbol.asyncDispose]() {
|
|
30
29
|
// No-op
|
|
31
30
|
}
|
|
32
|
-
getInstance(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
id = Number(id);
|
|
31
|
+
getInstance(replicationStream, options) {
|
|
32
|
+
if (!(replicationStream instanceof MongoPersistedReplicationStream)) {
|
|
33
|
+
throw new Error(`Expected MongoPersistedReplicationStream`);
|
|
36
34
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
let { replicationStreamId, replicationStreamName } = replicationStream;
|
|
36
|
+
if (typeof replicationStreamId == 'bigint') {
|
|
37
|
+
replicationStreamId = Number(replicationStreamId);
|
|
38
|
+
}
|
|
39
|
+
const storageConfig = replicationStream.getStorageConfig();
|
|
40
|
+
const syncRuleStorage = createMongoSyncBucketStorage(this, replicationStreamId, replicationStream, replicationStreamName, undefined, {
|
|
41
|
+
checksumOptions: this.options.checksumOptions,
|
|
40
42
|
storageConfig
|
|
41
43
|
});
|
|
42
44
|
if (!options?.skipLifecycleHooks) {
|
|
43
|
-
this.iterateListeners((cb) => cb.syncStorageCreated?.(
|
|
45
|
+
this.iterateListeners((cb) => cb.syncStorageCreated?.(syncRuleStorage));
|
|
44
46
|
}
|
|
45
|
-
|
|
47
|
+
syncRuleStorage.registerListener({
|
|
46
48
|
batchStarted: (batch) => {
|
|
47
49
|
batch.registerListener({
|
|
48
50
|
replicationEvent: (payload) => this.iterateListeners((cb) => cb.replicationEvent?.(payload))
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
53
|
});
|
|
52
|
-
return
|
|
54
|
+
return syncRuleStorage;
|
|
53
55
|
}
|
|
54
56
|
async getSystemIdentifier() {
|
|
55
57
|
const { setName: id } = await this.db.db.command({
|
|
@@ -63,35 +65,35 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
63
65
|
type: lib_mongo.MONGO_CONNECTION_TYPE
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
|
-
async restartReplication(
|
|
67
|
-
const next = await this.
|
|
68
|
-
const active = await this.
|
|
69
|
-
if (next != null && next.
|
|
68
|
+
async restartReplication(replicationStreamId) {
|
|
69
|
+
const next = await this.getDeployingSyncConfig();
|
|
70
|
+
const active = await this.getActiveSyncConfig();
|
|
71
|
+
if (next != null && next.content.replicationStreamId == replicationStreamId) {
|
|
70
72
|
// We need to redo the "next" replication stream
|
|
71
|
-
await this.updateSyncRules(next.asUpdateOptions());
|
|
73
|
+
await this.updateSyncRules(next.content.asUpdateOptions());
|
|
72
74
|
// Pro-actively stop replicating
|
|
73
75
|
await this.db.sync_rules.updateOne({
|
|
74
|
-
_id: next.
|
|
76
|
+
_id: next.content.replicationStreamId,
|
|
75
77
|
state: storage.SyncRuleState.PROCESSING
|
|
76
78
|
}, syncRuleStateUpdatePipeline(storage.SyncRuleState.STOP));
|
|
77
79
|
await this.db.notifyCheckpoint();
|
|
78
80
|
}
|
|
79
|
-
else if (next == null && active?.
|
|
81
|
+
else if (next == null && active?.content.replicationStreamId == replicationStreamId) {
|
|
80
82
|
// Slot removed for "active" replication stream, while there is no "next" one.
|
|
81
|
-
await this.updateSyncRules(active.asUpdateOptions());
|
|
83
|
+
await this.updateSyncRules(active.content.asUpdateOptions());
|
|
82
84
|
// In this case we keep the old one as active for clients, so that that existing clients
|
|
83
85
|
// can still get the latest data while we replicate the new ones.
|
|
84
86
|
// It will however not replicate anymore.
|
|
85
87
|
await this.db.sync_rules.updateOne({
|
|
86
|
-
_id: active.
|
|
88
|
+
_id: active.content.replicationStreamId,
|
|
87
89
|
state: storage.SyncRuleState.ACTIVE
|
|
88
90
|
}, syncRuleStateUpdatePipeline(storage.SyncRuleState.ERRORED));
|
|
89
91
|
await this.db.notifyCheckpoint();
|
|
90
92
|
}
|
|
91
|
-
else if (next != null && active?.
|
|
93
|
+
else if (next != null && active?.content.replicationStreamId == replicationStreamId) {
|
|
92
94
|
// Already have next replication stream, but need to stop replicating the active one.
|
|
93
95
|
await this.db.sync_rules.updateOne({
|
|
94
|
-
_id: active.
|
|
96
|
+
_id: active.content.replicationStreamId,
|
|
95
97
|
state: storage.SyncRuleState.ACTIVE
|
|
96
98
|
}, syncRuleStateUpdatePipeline(storage.SyncRuleState.ERRORED));
|
|
97
99
|
await this.db.notifyCheckpoint();
|
|
@@ -102,6 +104,31 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
102
104
|
const versioned = this.db.versioned(storageConfig);
|
|
103
105
|
const session = this.session;
|
|
104
106
|
await session.withTransaction(async () => {
|
|
107
|
+
const active = await this.db.sync_rules.findOne({
|
|
108
|
+
state: storage.SyncRuleState.ACTIVE,
|
|
109
|
+
storage_version: storageVersion
|
|
110
|
+
}, { session, sort: { _id: -1 }, limit: 1 });
|
|
111
|
+
if (active != null) {
|
|
112
|
+
const existingConfigDocs = await this.loadSyncConfigDefinitions(versioned, active, session);
|
|
113
|
+
if (this.options.supportsMultipleSyncConfigs &&
|
|
114
|
+
isCompatible(existingConfigDocs.map((d) => d.serialized_plan ?? null), options.config, logger)) {
|
|
115
|
+
logger.info(`Using incremental reprocessing`);
|
|
116
|
+
await this.db.sync_rules.updateMany({
|
|
117
|
+
state: storage.SyncRuleState.PROCESSING
|
|
118
|
+
}, syncRuleStateUpdatePipeline(storage.SyncRuleState.STOP), { session });
|
|
119
|
+
await this.stopEmbeddedDeployingConfigs(active, session);
|
|
120
|
+
rules = await this.appendSyncConfigToStream({
|
|
121
|
+
versioned,
|
|
122
|
+
existing: active,
|
|
123
|
+
existingConfigDocs,
|
|
124
|
+
options,
|
|
125
|
+
storageVersion,
|
|
126
|
+
session
|
|
127
|
+
});
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
await this.stopEmbeddedDeployingConfigs(active, session);
|
|
131
|
+
}
|
|
105
132
|
// Only have a single replication stream with PROCESSING.
|
|
106
133
|
await this.db.sync_rules.updateMany({
|
|
107
134
|
state: storage.SyncRuleState.PROCESSING
|
|
@@ -118,8 +145,12 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
118
145
|
session
|
|
119
146
|
});
|
|
120
147
|
const id = Number(id_doc.op_id);
|
|
121
|
-
const
|
|
122
|
-
const mapping =
|
|
148
|
+
const replicationStreamName = generateReplicationStreamName(this.replicationStreamNamePrefix, id);
|
|
149
|
+
const mapping = options.config.plan == null
|
|
150
|
+
? // For legacy sync rules and streams, use the parsed config directly to create a mapping
|
|
151
|
+
SingleSyncConfigBucketDefinitionMapping.fromParsedSyncConfig(options.config.parsed)
|
|
152
|
+
: // For new sync streams, always use the serialized version
|
|
153
|
+
SingleSyncConfigBucketDefinitionMapping.constructIncrementalMappingFromSerializedPlans([], options.config.plan.plan, []);
|
|
123
154
|
const syncConfigDoc = {
|
|
124
155
|
_id: new ObjectId(),
|
|
125
156
|
replication_stream_id: id,
|
|
@@ -137,7 +168,6 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
137
168
|
{
|
|
138
169
|
_id: syncConfigDoc._id,
|
|
139
170
|
state: storage.SyncRuleState.PROCESSING,
|
|
140
|
-
keepalive_op: null,
|
|
141
171
|
last_checkpoint: null,
|
|
142
172
|
last_checkpoint_lsn: null,
|
|
143
173
|
no_checkpoint_before: null,
|
|
@@ -146,22 +176,126 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
146
176
|
],
|
|
147
177
|
snapshot_lsn: undefined,
|
|
148
178
|
state: storage.SyncRuleState.PROCESSING,
|
|
149
|
-
slot_name:
|
|
179
|
+
slot_name: replicationStreamName,
|
|
150
180
|
last_checkpoint_ts: null,
|
|
151
181
|
last_fatal_error: null,
|
|
152
182
|
last_fatal_error_ts: null,
|
|
153
183
|
last_keepalive_ts: null
|
|
154
184
|
};
|
|
155
185
|
await this.db.sync_rules.insertOne(doc, { session });
|
|
156
|
-
|
|
157
|
-
rules = new MongoPersistedSyncRulesContentV3(this.db, doc, syncConfigDoc);
|
|
186
|
+
rules = new MongoPersistedReplicationStream(this.db, doc, [syncConfigDoc]);
|
|
158
187
|
if (options.lock) {
|
|
159
188
|
// The lock is persisted on rules.current_lock
|
|
160
189
|
await rules.lock(session);
|
|
161
190
|
}
|
|
162
191
|
});
|
|
192
|
+
// Notify only after the transaction has committed, so listeners cannot observe pre-commit state.
|
|
193
|
+
await this.db.notifyCheckpoint();
|
|
163
194
|
return rules;
|
|
164
195
|
}
|
|
196
|
+
async loadSyncConfigDefinitions(versioned, existing, session) {
|
|
197
|
+
const activeConfigIds = existing.sync_configs
|
|
198
|
+
.filter((config) => config.state == storage.SyncRuleState.ACTIVE)
|
|
199
|
+
.map((config) => config._id);
|
|
200
|
+
return versioned.syncConfigDefinitions
|
|
201
|
+
.find({
|
|
202
|
+
_id: { $in: activeConfigIds }
|
|
203
|
+
}, { session })
|
|
204
|
+
.toArray();
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Load _all_ definition mappings for a replication stream - used as a base to generate new ids.
|
|
208
|
+
*/
|
|
209
|
+
async loadHistoricalSyncConfigRuleMappings(versioned, replicationStreamId, session) {
|
|
210
|
+
return versioned.syncConfigDefinitions
|
|
211
|
+
.find({
|
|
212
|
+
replication_stream_id: replicationStreamId
|
|
213
|
+
}, {
|
|
214
|
+
session,
|
|
215
|
+
projection: {
|
|
216
|
+
rule_mapping: 1
|
|
217
|
+
}
|
|
218
|
+
})
|
|
219
|
+
.toArray();
|
|
220
|
+
}
|
|
221
|
+
async stopEmbeddedDeployingConfigs(existing, session) {
|
|
222
|
+
const deployingConfigs = existing.sync_configs
|
|
223
|
+
.filter((config) => config.state == storage.SyncRuleState.PROCESSING)
|
|
224
|
+
.map((config) => config._id);
|
|
225
|
+
if (deployingConfigs.length == 0) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
await this.db.sync_rules.updateOne({
|
|
229
|
+
_id: existing._id,
|
|
230
|
+
'sync_configs._id': { $in: deployingConfigs }
|
|
231
|
+
}, {
|
|
232
|
+
$set: {
|
|
233
|
+
'sync_configs.$[config].state': storage.SyncRuleState.STOP
|
|
234
|
+
}
|
|
235
|
+
}, {
|
|
236
|
+
session,
|
|
237
|
+
arrayFilters: [{ 'config._id': { $in: deployingConfigs } }]
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
logIncrementalDefinitionChanges(changes) {
|
|
241
|
+
logger.info(`Incremental reprocessing sync config update:\n${formatIncrementalSyncConfigUpdateLog(changes)}`);
|
|
242
|
+
}
|
|
243
|
+
async appendSyncConfigToStream(options) {
|
|
244
|
+
const { versioned, existing, existingConfigDocs, options: updateOptions, storageVersion, session } = options;
|
|
245
|
+
const compatibleConfigs = existingConfigDocs.map((doc) => ({
|
|
246
|
+
plan: doc.serialized_plan.plan,
|
|
247
|
+
mapping: SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(doc.rule_mapping)
|
|
248
|
+
}));
|
|
249
|
+
const historicalRuleMappings = await this.loadHistoricalSyncConfigRuleMappings(versioned, existing._id, session);
|
|
250
|
+
const reservedMappings = historicalRuleMappings.map((doc) => SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(doc.rule_mapping));
|
|
251
|
+
const mappingResult = SingleSyncConfigBucketDefinitionMapping.constructIncrementalMappingWithChanges(compatibleConfigs, updateOptions.config.plan.plan, reservedMappings);
|
|
252
|
+
const mapping = mappingResult.mapping;
|
|
253
|
+
this.logIncrementalDefinitionChanges(describeIncrementalSyncConfigUpdate({
|
|
254
|
+
activeMappings: existingConfigDocs.map((doc) => SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(doc.rule_mapping)),
|
|
255
|
+
newMapping: mapping,
|
|
256
|
+
newSyncConfig: updateOptions.config.parsed,
|
|
257
|
+
mappingChanges: mappingResult.changes
|
|
258
|
+
}));
|
|
259
|
+
const syncConfigDoc = {
|
|
260
|
+
_id: new ObjectId(),
|
|
261
|
+
replication_stream_id: existing._id,
|
|
262
|
+
created_at: new Date(),
|
|
263
|
+
storage_version: storageVersion,
|
|
264
|
+
content: updateOptions.config.yaml,
|
|
265
|
+
serialized_plan: updateOptions.config.plan,
|
|
266
|
+
rule_mapping: mapping.serialize()
|
|
267
|
+
};
|
|
268
|
+
await versioned.syncConfigDefinitions.insertOne(syncConfigDoc, { session });
|
|
269
|
+
const syncConfigState = {
|
|
270
|
+
_id: syncConfigDoc._id,
|
|
271
|
+
state: storage.SyncRuleState.PROCESSING,
|
|
272
|
+
last_checkpoint: null,
|
|
273
|
+
last_checkpoint_lsn: null,
|
|
274
|
+
no_checkpoint_before: null,
|
|
275
|
+
snapshot_done: false
|
|
276
|
+
};
|
|
277
|
+
await this.db.sync_rules.updateOne({ _id: existing._id }, {
|
|
278
|
+
$push: {
|
|
279
|
+
sync_configs: syncConfigState
|
|
280
|
+
},
|
|
281
|
+
$set: {
|
|
282
|
+
last_fatal_error: null,
|
|
283
|
+
last_fatal_error_ts: null
|
|
284
|
+
}
|
|
285
|
+
}, { session });
|
|
286
|
+
const syncConfigStates = [
|
|
287
|
+
...existing.sync_configs.filter((config) => config.state == storage.SyncRuleState.ACTIVE),
|
|
288
|
+
syncConfigState
|
|
289
|
+
];
|
|
290
|
+
const stream = new MongoPersistedReplicationStream(this.db, {
|
|
291
|
+
...existing,
|
|
292
|
+
sync_configs: syncConfigStates
|
|
293
|
+
}, [...existingConfigDocs, syncConfigDoc]);
|
|
294
|
+
// The stream already exists, so an active replication job may already hold the stream lock.
|
|
295
|
+
// Deployment only persists the appended sync config; replication job locking is handled by
|
|
296
|
+
// the replicator.
|
|
297
|
+
return stream;
|
|
298
|
+
}
|
|
165
299
|
async updateSyncRules(options) {
|
|
166
300
|
const storageVersion = options.storageVersion ?? options.config.parsed.config.storageVersion ?? storage.CURRENT_STORAGE_VERSION;
|
|
167
301
|
const storageConfig = getMongoStorageConfig(storageVersion);
|
|
@@ -187,7 +321,7 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
187
321
|
session
|
|
188
322
|
});
|
|
189
323
|
const id = Number(id_doc.op_id);
|
|
190
|
-
const slot_name =
|
|
324
|
+
const slot_name = generateReplicationStreamName(this.replicationStreamNamePrefix, id);
|
|
191
325
|
const doc = {
|
|
192
326
|
_id: id,
|
|
193
327
|
storage_version: storageVersion,
|
|
@@ -208,7 +342,7 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
208
342
|
};
|
|
209
343
|
await this.db.sync_rules.insertOne(doc, { session });
|
|
210
344
|
await this.db.notifyCheckpoint();
|
|
211
|
-
rules = new
|
|
345
|
+
rules = new MongoPersistedReplicationStream(this.db, doc);
|
|
212
346
|
if (options.lock) {
|
|
213
347
|
// The lock is persisted on rules.current_lock
|
|
214
348
|
await rules.lock(session);
|
|
@@ -216,77 +350,92 @@ export class MongoBucketStorage extends storage.BucketStorageFactory {
|
|
|
216
350
|
});
|
|
217
351
|
return rules;
|
|
218
352
|
}
|
|
219
|
-
async
|
|
353
|
+
async getActiveSyncConfig() {
|
|
220
354
|
const doc = await this.db.sync_rules.findOne({
|
|
221
355
|
state: { $in: [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED] }
|
|
222
356
|
}, { sort: { _id: -1 }, limit: 1 });
|
|
223
|
-
return this.
|
|
357
|
+
return this.resolvedSyncConfigFromDoc(doc, [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED], {
|
|
358
|
+
cacheActiveStorage: true
|
|
359
|
+
});
|
|
224
360
|
}
|
|
225
|
-
async
|
|
361
|
+
async replicationStreamFromDoc(doc, stateFilter) {
|
|
226
362
|
if (doc == null) {
|
|
227
363
|
return null;
|
|
228
364
|
}
|
|
229
365
|
const storageConfig = getMongoStorageConfig(doc.storage_version ?? LEGACY_STORAGE_VERSION);
|
|
230
366
|
if (storageConfig.incrementalReprocessing) {
|
|
231
367
|
const v3 = doc;
|
|
232
|
-
const
|
|
233
|
-
if (
|
|
368
|
+
const matching = v3.sync_configs.filter((c) => stateFilter.includes(c.state));
|
|
369
|
+
if (matching.length == 0) {
|
|
234
370
|
return null;
|
|
235
371
|
}
|
|
236
372
|
// TODO: cache the config. It could specifically help for the main replication loop
|
|
237
373
|
// that checks for active replication streams.
|
|
238
374
|
// It is not a major bottleneck though, since it only runs once every couple of seconds at most.
|
|
239
375
|
const db = this.db.versioned(storageConfig);
|
|
240
|
-
const
|
|
241
|
-
|
|
376
|
+
const syncConfigDocs = await db.syncConfigDefinitions
|
|
377
|
+
.find({
|
|
378
|
+
_id: { $in: matching.map((config) => config._id) }
|
|
379
|
+
})
|
|
380
|
+
.toArray();
|
|
381
|
+
if (syncConfigDocs.length == 0) {
|
|
242
382
|
return null;
|
|
243
383
|
}
|
|
244
|
-
return new
|
|
384
|
+
return new MongoPersistedReplicationStream(this.db, v3, syncConfigDocs);
|
|
245
385
|
}
|
|
246
|
-
return new
|
|
386
|
+
return new MongoPersistedReplicationStream(this.db, doc);
|
|
247
387
|
}
|
|
248
|
-
async
|
|
388
|
+
async getDeployingSyncConfig() {
|
|
249
389
|
const doc = await this.db.sync_rules.findOne({
|
|
250
|
-
state: storage.SyncRuleState.PROCESSING
|
|
390
|
+
$or: [{ state: storage.SyncRuleState.PROCESSING }, { 'sync_configs.state': storage.SyncRuleState.PROCESSING }]
|
|
251
391
|
}, { sort: { _id: -1 }, limit: 1 });
|
|
252
|
-
return this.
|
|
392
|
+
return this.resolvedSyncConfigFromDoc(doc, [storage.SyncRuleState.PROCESSING]);
|
|
253
393
|
}
|
|
254
|
-
async
|
|
394
|
+
async getReplicatingReplicationStreams() {
|
|
255
395
|
const docs = await this.db.sync_rules
|
|
256
396
|
.find({
|
|
257
397
|
state: { $in: [storage.SyncRuleState.PROCESSING, storage.SyncRuleState.ACTIVE] }
|
|
258
398
|
})
|
|
259
399
|
.toArray();
|
|
260
400
|
return (await Promise.all(docs.map((doc) => {
|
|
261
|
-
return this.
|
|
401
|
+
return this.replicationStreamFromDoc(doc, [storage.SyncRuleState.PROCESSING, storage.SyncRuleState.ACTIVE]);
|
|
262
402
|
}))).filter((r) => r != null);
|
|
263
403
|
}
|
|
264
|
-
async
|
|
404
|
+
async getStoppedReplicationStreams() {
|
|
265
405
|
const docs = await this.db.sync_rules
|
|
266
406
|
.find({
|
|
267
407
|
state: storage.SyncRuleState.STOP
|
|
268
408
|
})
|
|
269
409
|
.toArray();
|
|
270
410
|
return (await Promise.all(docs.map((doc) => {
|
|
271
|
-
return this.
|
|
411
|
+
return this.replicationStreamFromDoc(doc, [storage.SyncRuleState.STOP]);
|
|
272
412
|
}))).filter((d) => d != null);
|
|
273
413
|
}
|
|
274
|
-
async
|
|
275
|
-
const
|
|
276
|
-
if (
|
|
414
|
+
async resolvedSyncConfigFromDoc(doc, stateFilter, options = {}) {
|
|
415
|
+
const stream = await this.replicationStreamFromDoc(doc, stateFilter);
|
|
416
|
+
if (stream == null) {
|
|
277
417
|
return null;
|
|
278
418
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
419
|
+
const content = stream.syncConfigContent[0];
|
|
420
|
+
const thisFactory = this;
|
|
421
|
+
return {
|
|
422
|
+
content,
|
|
423
|
+
replicationStream: stream,
|
|
424
|
+
get storage() {
|
|
425
|
+
// It is important that this instance is cached.
|
|
426
|
+
// Not for the instance construction itself, but to ensure that internal caches on the instance
|
|
427
|
+
// are re-used properly.
|
|
428
|
+
if (options.cacheActiveStorage &&
|
|
429
|
+
thisFactory.activeStorageCache?.replicationStream.replicationJobId == stream.replicationJobId) {
|
|
430
|
+
return thisFactory.activeStorageCache;
|
|
431
|
+
}
|
|
432
|
+
const instance = thisFactory.getInstance(stream);
|
|
433
|
+
if (options.cacheActiveStorage) {
|
|
434
|
+
thisFactory.activeStorageCache = instance;
|
|
435
|
+
}
|
|
436
|
+
return instance;
|
|
437
|
+
}
|
|
438
|
+
};
|
|
290
439
|
}
|
|
291
440
|
async getStorageMetrics() {
|
|
292
441
|
const ignoreNotExisting = (e) => {
|
|
@@ -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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"}
|