@powersync/service-module-mongodb-storage 0.0.0-dev-20260909133214 → 0.0.0-dev-20260929095716

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CHANGELOG.md +52 -6
  2. package/dist/storage/MongoBucketStorage.d.ts +11 -2
  3. package/dist/storage/MongoBucketStorage.js +43 -13
  4. package/dist/storage/MongoBucketStorage.js.map +1 -1
  5. package/dist/storage/implementation/MongoBucketBatch.d.ts +24 -10
  6. package/dist/storage/implementation/MongoBucketBatch.js +134 -89
  7. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  8. package/dist/storage/implementation/MongoCompactor.d.ts +2 -0
  9. package/dist/storage/implementation/MongoCompactor.js.map +1 -1
  10. package/dist/storage/implementation/MongoIdSequence.d.ts +10 -1
  11. package/dist/storage/implementation/MongoIdSequence.js +14 -1
  12. package/dist/storage/implementation/MongoIdSequence.js.map +1 -1
  13. package/dist/storage/implementation/MongoOpIdAllocator.d.ts +27 -0
  14. package/dist/storage/implementation/MongoOpIdAllocator.js +97 -0
  15. package/dist/storage/implementation/MongoOpIdAllocator.js.map +1 -0
  16. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +6 -2
  17. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
  18. package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +2 -1
  19. package/dist/storage/implementation/MongoPersistedReplicationStream.js +7 -4
  20. package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -1
  21. package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +3 -3
  22. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +6 -6
  23. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -1
  24. package/dist/storage/implementation/MongoStorageProvider.js +5 -3
  25. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  26. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +5 -0
  27. package/dist/storage/implementation/MongoSyncBucketStorage.js +17 -0
  28. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  29. package/dist/storage/implementation/MongoSyncRulesLock.d.ts +26 -2
  30. package/dist/storage/implementation/MongoSyncRulesLock.js +38 -1
  31. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  32. package/dist/storage/implementation/MongoWriteBatch.d.ts +49 -0
  33. package/dist/storage/implementation/MongoWriteBatch.js +149 -0
  34. package/dist/storage/implementation/MongoWriteBatch.js.map +1 -0
  35. package/dist/storage/implementation/MongoWriteCheckpointAPI.js +2 -2
  36. package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
  37. package/dist/storage/implementation/common/PersistedBatch.d.ts +5 -4
  38. package/dist/storage/implementation/common/PersistedBatch.js +6 -4
  39. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  40. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.d.ts +3 -0
  41. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +3 -0
  42. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
  43. package/dist/storage/implementation/db.d.ts +5 -0
  44. package/dist/storage/implementation/db.js +14 -0
  45. package/dist/storage/implementation/db.js.map +1 -1
  46. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +5 -0
  47. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +149 -139
  48. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  49. package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +2 -1
  50. package/dist/storage/implementation/v1/MongoCompactorV1.js +23 -17
  51. package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
  52. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +1 -1
  53. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
  54. package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +7 -5
  55. package/dist/storage/implementation/v1/PersistedBatchV1.js +22 -28
  56. package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
  57. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +6 -1
  58. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +148 -162
  59. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  60. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +10 -4
  61. package/dist/storage/implementation/v3/MongoCompactorV3.js +175 -76
  62. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  63. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +12 -8
  64. package/dist/storage/implementation/v3/PersistedBatchV3.js +25 -32
  65. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  66. package/dist/storage/implementation/v3/compact-utils.d.ts +3 -2
  67. package/dist/storage/implementation/v3/compact-utils.js +12 -5
  68. package/dist/storage/implementation/v3/compact-utils.js.map +1 -1
  69. package/dist/storage/implementation/v3/models.d.ts +1 -1
  70. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +8 -1
  71. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
  72. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +3 -3
  73. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +7 -9
  74. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
  75. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.d.ts +3 -2
  76. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js +4 -7
  77. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js.map +1 -1
  78. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +21 -3
  79. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -1
  80. package/dist/types/types.d.ts +5 -0
  81. package/dist/types/types.js +12 -0
  82. package/dist/types/types.js.map +1 -1
  83. package/dist/utils/test-utils.d.ts +4 -2
  84. package/dist/utils/test-utils.js +7 -4
  85. package/dist/utils/test-utils.js.map +1 -1
  86. package/package.json +6 -6
  87. package/src/storage/MongoBucketStorage.ts +54 -13
  88. package/src/storage/implementation/MongoBucketBatch.ts +205 -111
  89. package/src/storage/implementation/MongoCompactor.ts +2 -0
  90. package/src/storage/implementation/MongoIdSequence.ts +21 -1
  91. package/src/storage/implementation/MongoOpIdAllocator.ts +105 -0
  92. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +12 -1
  93. package/src/storage/implementation/MongoPersistedReplicationStream.ts +12 -4
  94. package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +48 -31
  95. package/src/storage/implementation/MongoStorageProvider.ts +13 -3
  96. package/src/storage/implementation/MongoSyncBucketStorage.ts +19 -0
  97. package/src/storage/implementation/MongoSyncRulesLock.ts +56 -3
  98. package/src/storage/implementation/MongoWriteBatch.ts +172 -0
  99. package/src/storage/implementation/MongoWriteCheckpointAPI.ts +4 -2
  100. package/src/storage/implementation/common/PersistedBatch.ts +12 -8
  101. package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +4 -0
  102. package/src/storage/implementation/db.ts +15 -0
  103. package/src/storage/implementation/models.ts +1 -0
  104. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +167 -160
  105. package/src/storage/implementation/v1/MongoCompactorV1.ts +29 -26
  106. package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +1 -1
  107. package/src/storage/implementation/v1/PersistedBatchV1.ts +25 -30
  108. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +217 -242
  109. package/src/storage/implementation/v3/MongoCompactorV3.ts +284 -108
  110. package/src/storage/implementation/v3/PersistedBatchV3.ts +36 -36
  111. package/src/storage/implementation/v3/compact-utils.ts +16 -7
  112. package/src/storage/implementation/v3/models.ts +1 -1
  113. package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +8 -1
  114. package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +11 -10
  115. package/src/storage/implementation/v3/object-storage/ObjectStorageUsage.ts +8 -9
  116. package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +23 -3
  117. package/src/types/types.ts +18 -0
  118. package/src/utils/test-utils.ts +9 -5
  119. package/test/src/__snapshots__/storage_sync.test.ts.snap +12 -12
  120. package/test/src/chunk_compaction_config.test.ts +38 -0
  121. package/test/src/cleanup-stopped-sync-configs.test.ts +19 -13
  122. package/test/src/compact-utils.test.ts +33 -8
  123. package/test/src/concurrent_writers.test.ts +599 -0
  124. package/test/src/connection_config.test.ts +159 -0
  125. package/test/src/helpers/concurrentWriter.mjs +29 -0
  126. package/test/src/helpers/s3TestFactory.ts +12 -12
  127. package/test/src/object_storage_usage.test.ts +18 -5
  128. package/test/src/parameter_compacting_v1.test.ts +2 -2
  129. package/test/src/parameter_compacting_v3.test.ts +2 -2
  130. package/test/src/parameter_compaction_fence.test.ts +3 -3
  131. package/test/src/storage.test.ts +15 -10
  132. package/test/src/storage_compacting.test.ts +397 -23
  133. package/test/src/storage_object_storage_inline_threshold.test.ts +3 -3
  134. package/test/src/storage_s3_checksums.test.ts +4 -4
  135. package/test/src/storage_s3_compaction_lifecycle.test.ts +8 -8
  136. package/test/src/storage_s3_reading.test.ts +51 -5
  137. package/test/src/storage_s3_writing.test.ts +3 -3
  138. package/test/src/storage_sync.test.ts +55 -47
  139. package/test/src/storeCurrentData.test.ts +5 -5
  140. package/tsconfig.tsbuildinfo +1 -1
@@ -1,7 +1,7 @@
1
1
  import * as sqlite from 'node:sqlite';
2
- import { ServiceAssertionError } from '@powersync/lib-services-framework';
2
+ import { ReplicationAssertionError, ServiceAssertionError } from '@powersync/lib-services-framework';
3
3
  import { MultiSyncConfigBucketDefinitionMapping, SingleSyncConfigBucketDefinitionMapping } from '@powersync/service-core';
4
- import { CompatibilityOption, DEFAULT_HYDRATION_STATE, HydratedSyncConfig, nodeSqlite, versionedHydrationState } from '@powersync/service-sync-rules';
4
+ import { CompatibilityOption, connectionConfigsEqual, DEFAULT_HYDRATION_STATE, HydratedSyncConfig, nodeSqlite, versionedHydrationState } from '@powersync/service-sync-rules';
5
5
  import { MongoHydrationState } from './MongoHydrationState.js';
6
6
  export class MongoParsedSyncConfigSet {
7
7
  replicationStreamId;
@@ -27,6 +27,10 @@ export class MongoParsedSyncConfigSet {
27
27
  throw new ServiceAssertionError(`All sync configs in a replication stream must use the same compatibility options`);
28
28
  }
29
29
  if (storageConfig.incrementalReprocessing) {
30
+ // Active and processing configs share one source reader and must use the same connection options.
31
+ if (this.syncConfigs.some(({ config }) => !connectionConfigsEqual(firstConfig.config.connectionConfig, config.connectionConfig))) {
32
+ throw new ReplicationAssertionError(`Sync configs in replication stream ${this.replicationStreamId} have different connection configuration.`);
33
+ }
30
34
  if (syncConfigs.some((c) => c.mapping == null)) {
31
35
  throw new ServiceAssertionError(`mapping is required for v3 storage`);
32
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MongoParsedSyncConfigSet.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoParsedSyncConfigSet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoParsedSyncConfigSet.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoParsedSyncConfigSet.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,10 @@ export declare class MongoPersistedReplicationStream extends storage.PersistedRe
12
12
  private readonly db;
13
13
  private readonly doc;
14
14
  private readonly configs;
15
+ private readonly syncConfigParser;
15
16
  current_lock: MongoSyncRulesLock | null;
16
17
  readonly syncConfigContent: readonly MongoPersistedSyncConfigContentBase[];
17
- constructor(db: PowerSyncMongo, doc: SyncRuleDocumentV1 | ReplicationStreamDocumentV3, configs?: SyncConfigDefinition[]);
18
+ constructor(db: PowerSyncMongo, doc: SyncRuleDocumentV1 | ReplicationStreamDocumentV3, configs: SyncConfigDefinition[], syncConfigParser: storage.SyncConfigParser);
18
19
  getStorageConfig(): import("./models.js").StorageConfig;
19
20
  private createSyncConfigContent;
20
21
  get syncConfigIds(): bson.ObjectId[];
@@ -8,9 +8,10 @@ export class MongoPersistedReplicationStream extends storage.PersistedReplicatio
8
8
  db;
9
9
  doc;
10
10
  configs;
11
+ syncConfigParser;
11
12
  current_lock = null;
12
13
  syncConfigContent;
13
- constructor(db, doc, configs = []) {
14
+ constructor(db, doc, configs, syncConfigParser) {
14
15
  const storageVersion = doc.storage_version ?? storage.LEGACY_STORAGE_VERSION;
15
16
  const replicationJobId = configs.length == 0
16
17
  ? String(doc._id)
@@ -28,6 +29,7 @@ export class MongoPersistedReplicationStream extends storage.PersistedReplicatio
28
29
  this.db = db;
29
30
  this.doc = doc;
30
31
  this.configs = configs;
32
+ this.syncConfigParser = syncConfigParser;
31
33
  this.syncConfigContent = this.createSyncConfigContent();
32
34
  }
33
35
  getStorageConfig() {
@@ -38,9 +40,9 @@ export class MongoPersistedReplicationStream extends storage.PersistedReplicatio
38
40
  if (this.configs.length == 0) {
39
41
  throw new ServiceAssertionError(`Cannot create v3 storage without sync config definitions`);
40
42
  }
41
- return this.configs.map((config) => new MongoPersistedSyncConfigContentV3(this.db, this.doc, config));
43
+ return this.configs.map((config) => new MongoPersistedSyncConfigContentV3(this.db, this.doc, config, this.syncConfigParser));
42
44
  }
43
- return [new MongoPersistedSyncConfigContentV1(this.db, this.doc)];
45
+ return [new MongoPersistedSyncConfigContentV1(this.db, this.doc, this.syncConfigParser)];
44
46
  }
45
47
  get syncConfigIds() {
46
48
  return this.configs.map((config) => config._id);
@@ -74,7 +76,8 @@ export class MongoPersistedReplicationStream extends storage.PersistedReplicatio
74
76
  content: config.content,
75
77
  compiledPlan: config.serialized_plan ?? null,
76
78
  storageVersion: this.storageVersion,
77
- parseOptions: options
79
+ parseOptions: options,
80
+ syncConfigParser: this.syncConfigParser
78
81
  }),
79
82
  mapping: SingleSyncConfigBucketDefinitionMapping.fromPersistedMapping(config.rule_mapping)
80
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MongoPersistedReplicationStream.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoPersistedReplicationStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoPersistedReplicationStream.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoPersistedReplicationStream.ts"],"names":[],"mappings":"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"}
@@ -10,16 +10,16 @@ export declare abstract class MongoPersistedSyncConfigContentBase extends storag
10
10
  protected constructor(db: PowerSyncMongo, options: Omit<storage.PersistedSyncConfigContentData, 'syncConfigId'> & {
11
11
  mapping: SingleSyncConfigBucketDefinitionMapping;
12
12
  syncConfigId: bson.ObjectId | null;
13
- });
13
+ }, syncConfigParser: storage.SyncConfigParser);
14
14
  getStorageConfig(): import("./models.js").StorageConfig;
15
15
  parsed(options: storage.ParseSyncConfigOptions): MongoParsedSyncConfigSet;
16
16
  }
17
17
  export declare class MongoPersistedSyncConfigContentV1 extends MongoPersistedSyncConfigContentBase {
18
- constructor(db: PowerSyncMongo, doc: SyncRuleDocumentV1);
18
+ constructor(db: PowerSyncMongo, doc: SyncRuleDocumentV1, syncConfigParser: storage.SyncConfigParser);
19
19
  getSyncConfigStatus(): Promise<storage.PersistedSyncConfigStatus | null>;
20
20
  }
21
21
  export declare class MongoPersistedSyncConfigContentV3 extends MongoPersistedSyncConfigContentBase {
22
22
  readonly syncConfigObjectId: bson.ObjectId;
23
- constructor(db: PowerSyncMongo, doc: ReplicationStreamDocumentV3, config: SyncConfigDefinition);
23
+ constructor(db: PowerSyncMongo, doc: ReplicationStreamDocumentV3, config: SyncConfigDefinition, syncConfigParser: storage.SyncConfigParser);
24
24
  getSyncConfigStatus(): Promise<storage.PersistedSyncConfigStatus | null>;
25
25
  }
@@ -6,12 +6,12 @@ export class MongoPersistedSyncConfigContentBase extends storage.PersistedSyncCo
6
6
  db;
7
7
  mapping;
8
8
  syncConfigObjectId;
9
- constructor(db, options) {
9
+ constructor(db, options, syncConfigParser) {
10
10
  const { mapping, syncConfigId, ...base } = options;
11
11
  super({
12
12
  ...base,
13
13
  syncConfigId: syncConfigId?.toHexString() ?? null
14
- });
14
+ }, syncConfigParser);
15
15
  this.db = db;
16
16
  this.mapping = mapping;
17
17
  this.syncConfigObjectId = syncConfigId;
@@ -41,7 +41,7 @@ export class MongoPersistedSyncConfigContentBase extends storage.PersistedSyncCo
41
41
  }
42
42
  }
43
43
  export class MongoPersistedSyncConfigContentV1 extends MongoPersistedSyncConfigContentBase {
44
- constructor(db, doc) {
44
+ constructor(db, doc, syncConfigParser) {
45
45
  super(db, {
46
46
  replicationStreamId: doc._id,
47
47
  sync_rules_content: doc.content,
@@ -53,7 +53,7 @@ export class MongoPersistedSyncConfigContentV1 extends MongoPersistedSyncConfigC
53
53
  syncConfigId: null,
54
54
  syncConfigState: doc.state,
55
55
  version_label: doc.version_label ?? undefined
56
- });
56
+ }, syncConfigParser);
57
57
  }
58
58
  async getSyncConfigStatus() {
59
59
  const doc = await this.db.sync_rules.findOne({ _id: this.replicationStreamId });
@@ -64,7 +64,7 @@ export class MongoPersistedSyncConfigContentV1 extends MongoPersistedSyncConfigC
64
64
  }
65
65
  }
66
66
  export class MongoPersistedSyncConfigContentV3 extends MongoPersistedSyncConfigContentBase {
67
- constructor(db, doc, config) {
67
+ constructor(db, doc, config, syncConfigParser) {
68
68
  const state = doc.sync_configs.find((c) => c._id.equals(config._id));
69
69
  if (state == null) {
70
70
  throw new ServiceAssertionError(`Cannot find sync config ${config._id} in replication stream ${doc._id}`);
@@ -79,7 +79,7 @@ export class MongoPersistedSyncConfigContentV3 extends MongoPersistedSyncConfigC
79
79
  syncConfigId: config._id,
80
80
  syncConfigState: state.state,
81
81
  version_label: config.version_label
82
- });
82
+ }, syncConfigParser);
83
83
  }
84
84
  async getSyncConfigStatus() {
85
85
  const doc = await this.db.sync_rules.findOne({
@@ -1 +1 @@
1
- {"version":3,"file":"MongoPersistedSyncConfigContent.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoPersistedSyncConfigContent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoPersistedSyncConfigContent.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoPersistedSyncConfigContent.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as lib_mongo from '@powersync/lib-service-mongodb';
2
2
  import { ErrorCode, logger, ServiceAssertionError, ServiceError } from '@powersync/lib-services-framework';
3
3
  import { POWERSYNC_VERSION } from '@powersync/service-core';
4
- import { MongoStorageConfig, normalizeClearBatchThrottleRate } from '../../types/types.js';
4
+ import { MongoStorageConfig, normalizeChunkCompactionConcurrency, normalizeClearBatchThrottleRate } from '../../types/types.js';
5
5
  import { MongoBucketStorage } from '../MongoBucketStorage.js';
6
6
  import { MongoReportStorage } from '../MongoReportStorage.js';
7
7
  import { PowerSyncMongo } from './db.js';
@@ -17,6 +17,7 @@ export class MongoStorageProvider {
17
17
  throw new ServiceAssertionError(`Cannot create MongoDB bucket storage with provided config ${storage.type} !== ${this.type}`);
18
18
  }
19
19
  const decodedConfig = MongoStorageConfig.decode(storage);
20
+ const chunkCompactionConcurrency = normalizeChunkCompactionConcurrency(decodedConfig.chunk_compaction_concurrency, decodedConfig.object_storage != null);
20
21
  let objectStorage;
21
22
  if (decodedConfig.object_storage?.type === 's3') {
22
23
  // Dynamically import S3ObjectStorage to avoid loading AWS SDK unless needed.
@@ -37,6 +38,7 @@ export class MongoStorageProvider {
37
38
  powersyncVersion: POWERSYNC_VERSION,
38
39
  maxPoolSize: resolvedConfig.storage.max_pool_size ?? 8
39
40
  });
41
+ const database = new PowerSyncMongo(client, { database: resolvedConfig.storage.database });
40
42
  let shuttingDown = false;
41
43
  // Explicitly connect on startup.
42
44
  // Connection errors during startup are typically not recoverable - we get topologyClosed.
@@ -44,7 +46,6 @@ export class MongoStorageProvider {
44
46
  // to serve API requests.
45
47
  // Errors here will cause the process to exit.
46
48
  await client.connect();
47
- const database = new PowerSyncMongo(client, { database: resolvedConfig.storage.database });
48
49
  const readPreference = decodedConfig.bulk_read_preference == null
49
50
  ? undefined
50
51
  : new lib_mongo.mongo.ReadPreference(decodedConfig.bulk_read_preference, undefined, {
@@ -52,7 +53,8 @@ export class MongoStorageProvider {
52
53
  // 90 is the minimum value.
53
54
  maxStalenessSeconds: decodedConfig.bulk_read_preference == 'primary' ? undefined : 90
54
55
  });
55
- const syncStorageFactory = new MongoBucketStorage(database, {
56
+ const syncStorageFactory = new MongoBucketStorage(database, options.syncConfigParser, {
57
+ chunkCompactionConcurrency,
56
58
  replicationStreamNamePrefix: resolvedConfig.slot_name_prefix,
57
59
  readPreference,
58
60
  clearBatchThrottleRate: normalizeClearBatchThrottleRate(decodedConfig.clear_batch_throttle_rate),
@@ -1 +1 @@
1
- {"version":3,"file":"MongoStorageProvider.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoStorageProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoStorageProvider.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoStorageProvider.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,10 @@ export declare abstract class MongoSyncBucketStorage extends BaseObserver<storag
60
60
  readonly storageConfig: StorageConfig;
61
61
  readonly readPreference: mongo.ReadPreference | undefined;
62
62
  readonly clearBatchThrottleRate: number;
63
+ /**
64
+ * Required for writing, optional for reading.
65
+ */
66
+ private readonly replicationLock;
63
67
  constructor(factory: MongoBucketStorage, replicationStreamId: number, replicationStream: MongoPersistedReplicationStream, replicationStreamName: string, writeCheckpointMode: storage.WriteCheckpointMode | undefined, options: MongoSyncBucketStorageOptions);
64
68
  /**
65
69
  * Not for external use - public here for tests only.
@@ -97,6 +101,7 @@ export declare abstract class MongoSyncBucketStorage extends BaseObserver<storag
97
101
  * The version-independent part of the batch options.
98
102
  */
99
103
  protected writerBatchOptions(options: storage.CreateWriterOptions): Omit<MongoBucketBatchOptions, 'resumeFromLsn'>;
104
+ private requireReplicationLock;
100
105
  createWriter(options: storage.CreateWriterOptions): Promise<storage.BucketStorageBatch>;
101
106
  startBatch(options: storage.CreateWriterOptions, callback: (batch: storage.BucketStorageBatch) => Promise<void>): Promise<storage.FlushedResult | null>;
102
107
  protected abstract getParameterSetsImpl(checkpoint: MongoReplicationCheckpoint, lookups: ScopedParameterLookup[], limit: number): Promise<ParameterLookupRows[]>;
@@ -40,12 +40,17 @@ export class MongoSyncBucketStorage extends BaseObserver {
40
40
  readPreference;
41
41
  clearBatchThrottleRate;
42
42
  #storageInitialized = false;
43
+ /**
44
+ * Required for writing, optional for reading.
45
+ */
46
+ replicationLock;
43
47
  constructor(factory, replicationStreamId, replicationStream, replicationStreamName, writeCheckpointMode, options) {
44
48
  super();
45
49
  this.factory = factory;
46
50
  this.replicationStreamId = replicationStreamId;
47
51
  this.replicationStream = replicationStream;
48
52
  this.replicationStreamName = replicationStreamName;
53
+ this.replicationLock = replicationStream.current_lock;
49
54
  this.storageConfig = options.storageConfig;
50
55
  this.objectStorage = options.objectStorage;
51
56
  // Keep small chunks inline in MongoDB rather than offloading them to S3.
@@ -147,12 +152,15 @@ export class MongoSyncBucketStorage extends BaseObserver {
147
152
  * The version-independent part of the batch options.
148
153
  */
149
154
  writerBatchOptions(options) {
155
+ const replicationLock = this.requireReplicationLock();
150
156
  return {
151
157
  logger: options.logger ?? this.logger,
152
158
  db: this.db,
153
159
  parsedSyncConfig: this.getParsedSyncConfigSet(options),
154
160
  replicationStreamId: this.replicationStreamId,
155
161
  replicationStreamName: this.replicationStreamName,
162
+ replicationLock,
163
+ opIdAllocator: this.factory.getOpIdAllocator(this.replicationStream, replicationLock),
156
164
  storeCurrentData: options.storeCurrentData,
157
165
  skipExistingRows: options.skipExistingRows ?? false,
158
166
  markRecordUnavailable: options.markRecordUnavailable,
@@ -163,7 +171,15 @@ export class MongoSyncBucketStorage extends BaseObserver {
163
171
  inlineThresholdBytes: this.inlineThresholdBytes
164
172
  };
165
173
  }
174
+ requireReplicationLock() {
175
+ if (this.replicationLock == null) {
176
+ throw new ServiceAssertionError('A replication lease is required to create a writer');
177
+ }
178
+ this.replicationLock.throwIfAborted();
179
+ return this.replicationLock;
180
+ }
166
181
  async createWriter(options) {
182
+ this.requireReplicationLock();
167
183
  await this.initializeStorage();
168
184
  const writer = await this.createWriterImpl(options);
169
185
  this.iterateListeners((cb) => cb.batchStarted?.(writer));
@@ -209,6 +225,7 @@ export class MongoSyncBucketStorage extends BaseObserver {
209
225
  if (signal?.aborted) {
210
226
  throw new ReplicationAbortedError('Aborted clearing data', signal.reason);
211
227
  }
228
+ this.factory.discardOpIdAllocator(this.replicationStreamId);
212
229
  await this.clearSyncRuleState();
213
230
  await this.clearBucketData(signal);
214
231
  await this.clearParameterIndexes(signal);
@@ -1 +1 @@
1
- {"version":3,"file":"MongoSyncBucketStorage.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoSyncBucketStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoSyncBucketStorage.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoSyncBucketStorage.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { mongo } from '@powersync/lib-service-mongodb';
2
2
  import { Logger } from '@powersync/lib-services-framework';
3
- import { storage } from '@powersync/service-core';
3
+ import { storage, utils } from '@powersync/service-core';
4
4
  import { VersionedPowerSyncMongo } from './db.js';
5
5
  /**
6
6
  * Manages a lock on a replication stream document, so that only one process
@@ -9,8 +9,12 @@ import { VersionedPowerSyncMongo } from './db.js';
9
9
  export declare class MongoSyncRulesLock implements storage.ReplicationLock {
10
10
  private db;
11
11
  sync_rules_id: number;
12
- private lock_id;
12
+ readonly lock_id: string;
13
13
  private logger;
14
+ /** FIFO admission shared by this lease's writers; database fencing still enforces ownership. */
15
+ readonly writerMutex: utils.Mutex;
16
+ private readonly abort;
17
+ readonly signal: AbortSignal;
14
18
  private readonly refreshInterval;
15
19
  /**
16
20
  * @param session optional session to create the lock within another transaction
@@ -18,5 +22,25 @@ export declare class MongoSyncRulesLock implements storage.ReplicationLock {
18
22
  static createLock(db: VersionedPowerSyncMongo, sync_rules: storage.PersistedReplicationStream, session?: mongo.ClientSession): Promise<MongoSyncRulesLock>;
19
23
  constructor(db: VersionedPowerSyncMongo, sync_rules_id: number, lock_id: string, logger: Logger);
20
24
  release(): Promise<void>;
25
+ throwIfAborted(): void;
26
+ static ownerFilter(streamId: number, lock: MongoSyncRulesLock): {
27
+ _id: number;
28
+ 'lock.id': string;
29
+ };
30
+ static heartbeatUpdate(): {
31
+ last_keepalive_ts: {
32
+ $max: (string | {
33
+ $add: (number | {
34
+ $ifNull: (string | Date)[];
35
+ })[];
36
+ })[];
37
+ };
38
+ };
39
+ static assertOwned<T>(document: T | null): T;
40
+ /**
41
+ * A write, not just an ownership read: takeover conflicts with every transaction
42
+ * that publishes under this owner. Every writer must hold a stream lease.
43
+ */
44
+ static fence(db: VersionedPowerSyncMongo, streamId: number, lock: MongoSyncRulesLock, session: mongo.ClientSession, projection?: mongo.Document): Promise<mongo.WithId<import("./models.js").SyncRuleDocumentBase>>;
21
45
  private refresh;
22
46
  }
@@ -1,5 +1,6 @@
1
1
  import crypto from 'crypto';
2
- import { ErrorCode, ServiceError } from '@powersync/lib-services-framework';
2
+ import { ErrorCode, ReplicationAbortedError, ServiceError } from '@powersync/lib-services-framework';
3
+ import { utils } from '@powersync/service-core';
3
4
  const LOCK_DURATION_MS = 60 * 1000;
4
5
  /**
5
6
  * Manages a lock on a replication stream document, so that only one process
@@ -10,6 +11,10 @@ export class MongoSyncRulesLock {
10
11
  sync_rules_id;
11
12
  lock_id;
12
13
  logger;
14
+ /** FIFO admission shared by this lease's writers; database fencing still enforces ownership. */
15
+ writerMutex = new utils.Mutex();
16
+ abort = new AbortController();
17
+ signal = this.abort.signal;
13
18
  refreshInterval;
14
19
  /**
15
20
  * @param session optional session to create the lock within another transaction
@@ -56,12 +61,14 @@ export class MongoSyncRulesLock {
56
61
  await this.refresh();
57
62
  }
58
63
  catch (e) {
64
+ this.abort.abort(e);
59
65
  this.logger.error('Failed to refresh lock', e);
60
66
  clearInterval(this.refreshInterval);
61
67
  }
62
68
  }, 30_130);
63
69
  }
64
70
  async release() {
71
+ this.abort.abort(new Error('Replication lock released'));
65
72
  clearInterval(this.refreshInterval);
66
73
  const result = await this.db.sync_rules.updateOne({
67
74
  _id: this.sync_rules_id,
@@ -74,6 +81,36 @@ export class MongoSyncRulesLock {
74
81
  this.logger.warn(`Lock already released: ${this.sync_rules_id}/${this.lock_id}`);
75
82
  }
76
83
  }
84
+ throwIfAborted() {
85
+ this.signal.throwIfAborted();
86
+ }
87
+ static ownerFilter(streamId, lock) {
88
+ lock.throwIfAborted();
89
+ return { _id: streamId, 'lock.id': lock.lock_id };
90
+ }
91
+ static heartbeatUpdate() {
92
+ // Always change the existing heartbeat, even for writes in the same
93
+ // millisecond. A no-op update is not sufficient for a transactional fence.
94
+ return {
95
+ last_keepalive_ts: {
96
+ $max: ['$$NOW', { $add: [{ $ifNull: ['$last_keepalive_ts', new Date(0)] }, 1] }]
97
+ }
98
+ };
99
+ }
100
+ static assertOwned(document) {
101
+ if (document == null) {
102
+ throw new ReplicationAbortedError('Replication writer no longer owns the stream');
103
+ }
104
+ return document;
105
+ }
106
+ /**
107
+ * A write, not just an ownership read: takeover conflicts with every transaction
108
+ * that publishes under this owner. Every writer must hold a stream lease.
109
+ */
110
+ static async fence(db, streamId, lock, session, projection = { last_persisted_op: 1, last_checkpoint: 1, keepalive_op: 1 }) {
111
+ const doc = await db.sync_rules.findOneAndUpdate(this.ownerFilter(streamId, lock), [{ $set: this.heartbeatUpdate() }], { session, returnDocument: 'after', projection });
112
+ return this.assertOwned(doc);
113
+ }
77
114
  async refresh() {
78
115
  const result = await this.db.sync_rules.findOneAndUpdate({
79
116
  _id: this.sync_rules_id,
@@ -1 +1 @@
1
- {"version":3,"file":"MongoSyncRulesLock.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoSyncRulesLock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoSyncRulesLock.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoSyncRulesLock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { mongo } from '@powersync/lib-service-mongodb';
2
+ /**
3
+ * Explicitly groups writes with no intervening reads or result dependencies.
4
+ * Callers retain responsibility for transaction and ordering boundaries.
5
+ *
6
+ * On MongoDB 8.0+, this uses the client-level bulkWrite API.
7
+ *
8
+ * On MongoDB earlier versions, this uses the the collection-level bulkWrite API, or individual operations.
9
+ * This is less efficient, but produces the same results.
10
+ */
11
+ export declare class MongoWriteBatch {
12
+ private readonly client;
13
+ private readonly supportsClientBulkWrite;
14
+ private readonly session;
15
+ private readonly operations;
16
+ private readonly deleteChecks;
17
+ private readonly fallback;
18
+ private readonly ordered;
19
+ constructor(client: mongo.MongoClient, supportsClientBulkWrite: boolean, session: mongo.ClientSession | undefined, options: {
20
+ ordered: boolean;
21
+ });
22
+ /**
23
+ * Perform a collection-level bulkWrite.
24
+ *
25
+ * On MongoDB 8.0+, these operations join the client-level bulkWrite with the batch's ordering.
26
+ * The driver may split commands to respect server batch limits.
27
+ *
28
+ * On earlier MongoDB versions, this always uses an unordered collection-level bulkWrite.
29
+ * Operations within this collection bulk must therefore be independent of their order.
30
+ */
31
+ bulkWriteUnordered<T extends mongo.Document>(collection: mongo.Collection<T>, operations: mongo.AnyBulkWriteOperation<T>[]): void;
32
+ insertOne<T extends mongo.Document>(collection: mongo.Collection<T>, document: mongo.OptionalUnlessRequiredId<T>): void;
33
+ insertMany<T extends mongo.Document>(collection: mongo.Collection<T>, documents: mongo.OptionalUnlessRequiredId<T>[]): void;
34
+ deleteMany<T extends mongo.Document>(collection: mongo.Collection<T>, filter: mongo.Filter<T>, checkDeletedCount?: (count: number) => void): void;
35
+ updateOne<T extends mongo.Document>(collection: mongo.Collection<T>, filter: mongo.Filter<T>, update: mongo.UpdateFilter<T> | mongo.Document[], options?: Pick<mongo.UpdateOptions, 'upsert' | 'arrayFilters'>): void;
36
+ updateMany<T extends mongo.Document>(collection: mongo.Collection<T>, filter: mongo.Filter<T>, update: mongo.UpdateFilter<T> | mongo.Document[], options?: Pick<mongo.UpdateOptions, 'upsert' | 'arrayFilters'>): void;
37
+ private addModel;
38
+ /**
39
+ * Execute the queued writes.
40
+ *
41
+ * On MongoDB 8.0+, this uses the client-level bulkWrite API, typically resulting in a single command.
42
+ * The command may be split if there are a large number of operations.
43
+ *
44
+ * On earlier MongoDB versions, this executes each queued operation individually.
45
+ *
46
+ * If no operations were queued, this is a no-op.
47
+ */
48
+ execute(): Promise<void>;
49
+ }