@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.
Files changed (185) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/storage/MongoBucketStorage.d.ts +34 -16
  3. package/dist/storage/MongoBucketStorage.js +219 -70
  4. package/dist/storage/MongoBucketStorage.js.map +1 -1
  5. package/dist/storage/implementation/MongoBucketBatch.d.ts +42 -23
  6. package/dist/storage/implementation/MongoBucketBatch.js +61 -44
  7. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  8. package/dist/storage/implementation/MongoChecksums.d.ts +10 -9
  9. package/dist/storage/implementation/MongoChecksums.js +3 -111
  10. package/dist/storage/implementation/MongoChecksums.js.map +1 -1
  11. package/dist/storage/implementation/MongoCompactor.d.ts +2 -0
  12. package/dist/storage/implementation/MongoCompactor.js +18 -9
  13. package/dist/storage/implementation/MongoCompactor.js.map +1 -1
  14. package/dist/storage/implementation/MongoHydrationState.d.ts +11 -0
  15. package/dist/storage/implementation/MongoHydrationState.js +49 -0
  16. package/dist/storage/implementation/MongoHydrationState.js.map +1 -0
  17. package/dist/storage/implementation/MongoParameterCompactor.d.ts +6 -5
  18. package/dist/storage/implementation/MongoParameterCompactor.js +24 -1
  19. package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
  20. package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +13 -0
  21. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +64 -0
  22. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -0
  23. package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +36 -0
  24. package/dist/storage/implementation/MongoPersistedReplicationStream.js +90 -0
  25. package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -0
  26. package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +25 -0
  27. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +123 -0
  28. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -0
  29. package/dist/storage/implementation/MongoStorageProvider.js +5 -2
  30. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  31. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +41 -23
  32. package/dist/storage/implementation/MongoSyncBucketStorage.js +51 -43
  33. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  34. package/dist/storage/implementation/MongoSyncRulesLock.d.ts +1 -1
  35. package/dist/storage/implementation/MongoSyncRulesLock.js +3 -3
  36. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  37. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +6 -0
  38. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js +2 -0
  39. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js.map +1 -0
  40. package/dist/storage/implementation/common/PersistedBatch.d.ts +1 -2
  41. package/dist/storage/implementation/common/PersistedBatch.js +5 -0
  42. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  43. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +1 -1
  44. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
  45. package/dist/storage/implementation/createMongoSyncBucketStorage.d.ts +2 -2
  46. package/dist/storage/implementation/createMongoSyncBucketStorage.js +4 -4
  47. package/dist/storage/implementation/createMongoSyncBucketStorage.js.map +1 -1
  48. package/dist/storage/implementation/db.js +9 -14
  49. package/dist/storage/implementation/db.js.map +1 -1
  50. package/dist/storage/implementation/models.d.ts +4 -13
  51. package/dist/storage/implementation/models.js.map +1 -1
  52. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +9 -1
  53. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +42 -26
  54. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  55. package/dist/storage/implementation/v1/MongoChecksumsV1.js +114 -3
  56. package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -1
  57. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +15 -17
  58. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +47 -45
  59. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
  60. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.d.ts +2 -1
  61. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js +3 -0
  62. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js.map +1 -1
  63. package/dist/storage/implementation/v1/models.d.ts +10 -1
  64. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +8 -4
  65. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +286 -259
  66. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  67. package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +27 -7
  68. package/dist/storage/implementation/v3/MongoChecksumsV3.js +202 -18
  69. package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -1
  70. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +19 -2
  71. package/dist/storage/implementation/v3/MongoCompactorV3.js +511 -22
  72. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  73. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +62 -0
  74. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +350 -0
  75. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -0
  76. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +40 -28
  77. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +232 -116
  78. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
  79. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +1 -1
  80. package/dist/storage/implementation/v3/PersistedBatchV3.js +43 -20
  81. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  82. package/dist/storage/implementation/v3/SingleBucketStoreV3.js +52 -16
  83. package/dist/storage/implementation/v3/SingleBucketStoreV3.js.map +1 -1
  84. package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +3 -3
  85. package/dist/storage/implementation/v3/SourceRecordStoreV3.js +13 -11
  86. package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
  87. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +13 -12
  88. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +29 -27
  89. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
  90. package/dist/storage/implementation/v3/bucket-format.d.ts +4 -0
  91. package/dist/storage/implementation/v3/bucket-format.js +58 -0
  92. package/dist/storage/implementation/v3/bucket-format.js.map +1 -0
  93. package/dist/storage/implementation/v3/chunking.d.ts +10 -0
  94. package/dist/storage/implementation/v3/chunking.js +28 -0
  95. package/dist/storage/implementation/v3/chunking.js.map +1 -0
  96. package/dist/storage/implementation/v3/models.d.ts +64 -21
  97. package/dist/storage/implementation/v3/models.js +11 -28
  98. package/dist/storage/implementation/v3/models.js.map +1 -1
  99. package/dist/storage/implementation/v3/source-table-utils.d.ts +55 -0
  100. package/dist/storage/implementation/v3/source-table-utils.js +214 -0
  101. package/dist/storage/implementation/v3/source-table-utils.js.map +1 -0
  102. package/dist/storage/storage-index.d.ts +4 -4
  103. package/dist/storage/storage-index.js +4 -4
  104. package/dist/storage/storage-index.js.map +1 -1
  105. package/dist/types/types.d.ts +2 -2
  106. package/dist/utils/test-utils.d.ts +1 -2
  107. package/dist/utils/test-utils.js +5 -1
  108. package/dist/utils/test-utils.js.map +1 -1
  109. package/dist/utils/util.d.ts +1 -1
  110. package/dist/utils/util.js +3 -2
  111. package/dist/utils/util.js.map +1 -1
  112. package/package.json +9 -19
  113. package/src/storage/MongoBucketStorage.ts +334 -87
  114. package/src/storage/implementation/MongoBucketBatch.ts +86 -58
  115. package/src/storage/implementation/MongoChecksums.ts +6 -138
  116. package/src/storage/implementation/MongoCompactor.ts +19 -9
  117. package/src/storage/implementation/MongoHydrationState.ts +61 -0
  118. package/src/storage/implementation/MongoParameterCompactor.ts +24 -5
  119. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +88 -0
  120. package/src/storage/implementation/MongoPersistedReplicationStream.ts +118 -0
  121. package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +154 -0
  122. package/src/storage/implementation/MongoStorageProvider.ts +5 -2
  123. package/src/storage/implementation/MongoSyncBucketStorage.ts +70 -56
  124. package/src/storage/implementation/MongoSyncRulesLock.ts +7 -4
  125. package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +7 -0
  126. package/src/storage/implementation/common/PersistedBatch.ts +7 -3
  127. package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +1 -1
  128. package/src/storage/implementation/createMongoSyncBucketStorage.ts +21 -7
  129. package/src/storage/implementation/db.ts +11 -19
  130. package/src/storage/implementation/models.ts +4 -14
  131. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +55 -34
  132. package/src/storage/implementation/v1/MongoChecksumsV1.ts +137 -4
  133. package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +70 -64
  134. package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +11 -1
  135. package/src/storage/implementation/v1/models.ts +11 -1
  136. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +358 -314
  137. package/src/storage/implementation/v3/MongoChecksumsV3.ts +262 -26
  138. package/src/storage/implementation/v3/MongoCompactorV3.ts +646 -29
  139. package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +480 -0
  140. package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +315 -157
  141. package/src/storage/implementation/v3/PersistedBatchV3.ts +62 -36
  142. package/src/storage/implementation/v3/SingleBucketStoreV3.ts +59 -19
  143. package/src/storage/implementation/v3/SourceRecordStoreV3.ts +12 -12
  144. package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +41 -36
  145. package/src/storage/implementation/v3/bucket-format.ts +70 -0
  146. package/src/storage/implementation/v3/chunking.ts +38 -0
  147. package/src/storage/implementation/v3/models.ts +93 -55
  148. package/src/storage/implementation/v3/source-table-utils.ts +392 -0
  149. package/src/storage/storage-index.ts +12 -4
  150. package/src/utils/test-utils.ts +6 -3
  151. package/src/utils/util.ts +3 -2
  152. package/test/src/__snapshots__/storage.test.ts.snap +0 -75
  153. package/test/src/__snapshots__/storage_sync.test.ts.snap +48 -48
  154. package/test/src/cleanup-stopped-sync-configs.test.ts +648 -0
  155. package/test/src/storage.test.ts +11 -11
  156. package/test/src/storage_compacting.test.ts +1956 -6
  157. package/test/src/storage_sync.test.ts +1077 -68
  158. package/test/src/storeCurrentData.test.ts +17 -7
  159. package/test/src/util.ts +2 -1
  160. package/tsconfig.json +1 -4
  161. package/tsconfig.tsbuildinfo +1 -1
  162. package/dist/storage/implementation/BucketDefinitionMapping.d.ts +0 -15
  163. package/dist/storage/implementation/BucketDefinitionMapping.js +0 -58
  164. package/dist/storage/implementation/BucketDefinitionMapping.js.map +0 -1
  165. package/dist/storage/implementation/MongoPersistedSyncRules.d.ts +0 -14
  166. package/dist/storage/implementation/MongoPersistedSyncRules.js +0 -67
  167. package/dist/storage/implementation/MongoPersistedSyncRules.js.map +0 -1
  168. package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +0 -29
  169. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +0 -76
  170. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +0 -1
  171. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.d.ts +0 -13
  172. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js +0 -2
  173. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js.map +0 -1
  174. package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +0 -9
  175. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +0 -18
  176. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +0 -1
  177. package/dist/storage/implementation/v3/MongoParameterLookupV3.d.ts +0 -4
  178. package/dist/storage/implementation/v3/MongoParameterLookupV3.js +0 -9
  179. package/dist/storage/implementation/v3/MongoParameterLookupV3.js.map +0 -1
  180. package/src/storage/implementation/BucketDefinitionMapping.ts +0 -75
  181. package/src/storage/implementation/MongoPersistedSyncRules.ts +0 -82
  182. package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +0 -101
  183. package/src/storage/implementation/common/MongoSyncBucketStorageContext.ts +0 -15
  184. package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +0 -24
  185. package/src/storage/implementation/v3/MongoParameterLookupV3.ts +0 -11
@@ -1,38 +1,66 @@
1
1
  import * as lib_mongo from '@powersync/lib-service-mongodb';
2
2
  import { ServiceAssertionError } from '@powersync/lib-services-framework';
3
- import { internalToExternalOpId, maxLsn, ParameterSetLimitExceededError, storage } from '@powersync/service-core';
3
+ import { internalToExternalOpId, ParameterSetLimitExceededError, storage } from '@powersync/service-core';
4
4
  import { JSONBig } from '@powersync/service-jsonbig';
5
5
  import * as bson from 'bson';
6
6
  import { mapOpEntry, readSingleBatch, setSessionSnapshotTime } from '../../../utils/util.js';
7
- import { MongoPersistedSyncRulesContentV3 } from '../MongoPersistedSyncRulesContent.js';
7
+ import { MongoParameterCompactor } from '../MongoParameterCompactor.js';
8
8
  import { MongoSyncBucketStorage } from '../MongoSyncBucketStorage.js';
9
- import { loadBucketDataDocumentV3 } from './models.js';
9
+ import { loadBucketDataDocument } from './bucket-format.js';
10
+ import { deserializeParameterLookup, serializeParameterLookup } from './models.js';
10
11
  import { MongoBucketBatchV3 } from './MongoBucketBatchV3.js';
11
12
  import { MongoChecksumsV3 } from './MongoChecksumsV3.js';
12
13
  import { MongoCompactorV3 } from './MongoCompactorV3.js';
13
- import { MongoParameterCompactorV3 } from './MongoParameterCompactorV3.js';
14
- import { deserializeParameterLookupV3, serializeParameterLookupV3 } from './MongoParameterLookupV3.js';
14
+ import { MongoStoppedSyncConfigCleanup } from './MongoStoppedSyncConfigCleanup.js';
15
+ function* walkDocumentOps(data, documentOpCounts, documentSizes) {
16
+ let opIndex = 0;
17
+ for (const [docIndex, opCount] of documentOpCounts.entries()) {
18
+ for (let i = 0; i < opCount; i++) {
19
+ yield { row: data[opIndex++], docIndex, isLastOpInDocument: i === opCount - 1 };
20
+ }
21
+ }
22
+ }
23
+ function extractRowsFromDocument(doc, context, bucketMap, endOpId, remainingLimit) {
24
+ const rows = [];
25
+ for (const row of loadBucketDataDocument(context, doc)) {
26
+ const bucket = row.bucketKey.bucket;
27
+ const bucketStart = bucketMap.get(bucket);
28
+ if (bucketStart == null) {
29
+ throw new Error(`data for unexpected bucket: ${bucket}`);
30
+ }
31
+ if (row.o <= bucketStart) {
32
+ continue;
33
+ }
34
+ if (row.o > endOpId) {
35
+ continue;
36
+ }
37
+ rows.push(row);
38
+ remainingLimit--;
39
+ if (remainingLimit <= 0) {
40
+ return { rows, remainingLimit, limitReached: true };
41
+ }
42
+ }
43
+ return { rows, remainingLimit, limitReached: false };
44
+ }
15
45
  export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
16
- syncRulesV3;
17
- constructor(factory, group_id, sync_rules, slot_name, writeCheckpointMode, options) {
18
- super(factory, group_id, sync_rules, slot_name, writeCheckpointMode, options);
19
- if (!(sync_rules instanceof MongoPersistedSyncRulesContentV3)) {
46
+ constructor(factory, replicationStreamId, replicationStream, replicationStreamName, writeCheckpointMode, options) {
47
+ super(factory, replicationStreamId, replicationStream, replicationStreamName, writeCheckpointMode, options);
48
+ if (replicationStream.syncConfigIds.length == 0) {
20
49
  throw new ServiceAssertionError('Missing sync config id for storage v3');
21
50
  }
22
- this.syncRulesV3 = sync_rules;
23
51
  }
24
- get syncConfigId() {
25
- return this.syncRulesV3.syncConfigId;
52
+ get syncConfigIds() {
53
+ return this.replicationStream.syncConfigIds;
26
54
  }
27
55
  get syncRulesCollection() {
28
56
  return this.db.sync_rules;
29
57
  }
30
58
  syncConfigMatch(extra = {}) {
31
59
  return {
32
- _id: this.group_id,
60
+ _id: this.replicationStreamId,
33
61
  sync_configs: {
34
62
  $elemMatch: {
35
- _id: this.syncConfigId,
63
+ _id: { $in: this.syncConfigIds },
36
64
  ...extra
37
65
  }
38
66
  }
@@ -41,39 +69,25 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
41
69
  syncConfigProjection(extra = {}) {
42
70
  return {
43
71
  ...extra,
44
- sync_configs: {
45
- $elemMatch: {
46
- _id: this.syncConfigId
47
- }
48
- }
72
+ sync_configs: 1
49
73
  };
50
74
  }
51
- syncConfigArrayFilters() {
52
- return [{ 'config._id': this.syncConfigId }];
53
- }
54
- /**
55
- * For now, we only support a single sync config per replication stream.
56
- *
57
- * In the future we'll add support for multiple.
58
- */
59
- selectedSyncConfig(doc) {
60
- return doc?.sync_configs?.[0] ?? null;
75
+ selectedSyncConfigs(doc) {
76
+ return doc?.sync_configs?.filter((config) => this.syncConfigIds.some((id) => id.equals(config._id))) ?? [];
61
77
  }
62
78
  async initializeVersionStorage() {
63
- const mapping = this.mapping;
64
- for (let source of mapping.allBucketDefinitionIds()) {
65
- const collection = this.db.bucketDataV3(this.group_id, source).collectionName;
66
- await this.db.db
67
- .createCollection(collection, { clusteredIndex: { name: '_id', unique: true, key: { _id: 1 } } })
68
- .catch((error) => {
79
+ const storageIds = this.storageIds;
80
+ for (const source of storageIds.bucketDefinitionIds) {
81
+ const collection = this.db.bucketData(this.replicationStreamId, source).collectionName;
82
+ await this.db.db.createCollection(collection, {}).catch((error) => {
69
83
  if (lib_mongo.isMongoServerError(error) && error.codeName === 'NamespaceExists') {
70
84
  return;
71
85
  }
72
86
  throw error;
73
87
  });
74
88
  }
75
- for (let indexId of mapping.allParameterIndexIds()) {
76
- await this.db.parameterIndexV3(this.group_id, indexId).createIndex({
89
+ for (const indexId of storageIds.parameterIndexIds) {
90
+ await this.db.parameterIndex(this.replicationStreamId, indexId).createIndex({
77
91
  lookup: 1,
78
92
  key: 1,
79
93
  _id: -1
@@ -83,20 +97,33 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
83
97
  }
84
98
  }
85
99
  createMongoChecksums(options) {
86
- return new MongoChecksumsV3(this.db, this.group_id, {
100
+ return new MongoChecksumsV3(this.db, this.replicationStreamId, {
87
101
  ...options.checksumOptions,
88
102
  storageConfig: options?.storageConfig,
89
- mapping: this.sync_rules.mapping
103
+ syncConfigMapping: () => this.singleSyncConfigMapping()
90
104
  });
91
105
  }
92
106
  createMongoCompactor(options) {
93
107
  return new MongoCompactorV3(this, this.db, options);
94
108
  }
95
109
  createMongoParameterCompactor(checkpoint, options) {
96
- return new MongoParameterCompactorV3(this.db, this.group_id, checkpoint, options);
97
- }
98
- createWriterImpl(batchOptions) {
99
- return new MongoBucketBatchV3(batchOptions);
110
+ return new MongoParameterCompactor(this.db, this.replicationStreamId, checkpoint, options, () => this.db
111
+ .listParameterIndexCollections(this.replicationStreamId)
112
+ .then((collections) => collections.map((c) => c.collection)));
113
+ }
114
+ async fetchPersistedOpHead() {
115
+ const doc = await this.syncRulesCollection.findOne({ _id: this.replicationStreamId }, { projection: { last_persisted_op: 1 } });
116
+ return doc?.last_persisted_op == null ? null : BigInt(doc.last_persisted_op);
117
+ }
118
+ async createWriterImpl(options) {
119
+ const doc = await this.syncRulesCollection.findOne({ _id: this.replicationStreamId }, { projection: { resume_lsn: 1 } });
120
+ return new MongoBucketBatchV3({
121
+ ...this.writerBatchOptions(options),
122
+ // The stream-level replication position - per-config checkpoint LSNs are consistency
123
+ // markers and do not affect where replication resumes.
124
+ resumeFromLsn: doc?.resume_lsn ?? null,
125
+ syncConfigIds: this.syncConfigIds
126
+ });
100
127
  }
101
128
  async fetchCheckpointState(session) {
102
129
  const doc = await this.syncRulesCollection.findOne(this.syncConfigMatch({
@@ -105,8 +132,16 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
105
132
  session,
106
133
  projection: this.syncConfigProjection()
107
134
  });
108
- const syncConfig = this.selectedSyncConfig(doc);
109
- if (!syncConfig?.snapshot_done) {
135
+ // Checkpoints are served from the single active config. A PROCESSING config in the same
136
+ // stream (incremental reprocessing) does not affect checkpoints until it is activated.
137
+ const syncConfigs = this.selectedSyncConfigs(doc).filter((config) => [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED].includes(config.state));
138
+ if (syncConfigs.length > 1) {
139
+ // Activation atomically replaces the previous active config, so this cannot happen unless
140
+ // the stored state is corrupt.
141
+ throw new ServiceAssertionError(`Expected a single active sync config, got ${syncConfigs.map((config) => config._id.toHexString()).join(', ')}`);
142
+ }
143
+ const syncConfig = syncConfigs[0];
144
+ if (syncConfig == null || !syncConfig.snapshot_done) {
110
145
  return null;
111
146
  }
112
147
  return {
@@ -114,22 +149,9 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
114
149
  lsn: syncConfig.last_checkpoint_lsn ?? null
115
150
  };
116
151
  }
117
- async getWriterSyncState() {
118
- const doc = await this.syncRulesCollection.findOne(this.syncConfigMatch(), {
119
- projection: this.syncConfigProjection({ snapshot_lsn: 1 })
120
- });
121
- const syncConfig = this.selectedSyncConfig(doc);
122
- const checkpointLsn = syncConfig?.last_checkpoint_lsn ?? null;
123
- return {
124
- lastCheckpointLsn: checkpointLsn,
125
- resumeFromLsn: maxLsn(checkpointLsn, doc?.snapshot_lsn),
126
- keepaliveOp: syncConfig?.keepalive_op ?? null,
127
- syncConfigId: this.syncConfigId
128
- };
129
- }
130
152
  async terminateSyncRuleState() {
131
153
  await this.db.sync_rules.updateOne({
132
- _id: this.group_id
154
+ _id: this.replicationStreamId
133
155
  }, {
134
156
  $set: {
135
157
  state: storage.SyncRuleState.TERMINATED,
@@ -140,43 +162,67 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
140
162
  }
141
163
  async getStatusImpl() {
142
164
  const doc = await this.syncRulesCollection.findOne(this.syncConfigMatch(), {
143
- projection: this.syncConfigProjection({ state: 1, snapshot_lsn: 1, keepalive_op: 1 })
165
+ projection: this.syncConfigProjection({ resume_lsn: 1 })
144
166
  });
145
- const syncConfig = this.selectedSyncConfig(doc);
146
- if (doc == null || syncConfig == null) {
167
+ const syncConfigs = this.selectedSyncConfigs(doc);
168
+ if (doc == null || syncConfigs.length == 0) {
147
169
  throw new ServiceAssertionError('Cannot find replication stream status');
148
170
  }
149
171
  return {
150
- snapshot_done: syncConfig.snapshot_done ?? false,
151
- snapshot_lsn: doc.snapshot_lsn ?? null,
152
- active: doc.state == storage.SyncRuleState.ACTIVE && syncConfig.state == storage.SyncRuleState.ACTIVE,
153
- checkpoint_lsn: syncConfig.last_checkpoint_lsn ?? null,
154
- keepalive_op: syncConfig.keepalive_op ?? null
172
+ snapshotDone: syncConfigs.every((config) => config.snapshot_done ?? false) &&
173
+ syncConfigs.every((config) => config.last_checkpoint_lsn != null),
174
+ resumeLsn: doc.resume_lsn ?? null
155
175
  };
156
176
  }
157
177
  async clearSyncRuleState() {
158
- await this.syncRulesCollection.updateOne(this.syncConfigMatch(), {
178
+ // Clearing resets the entire replication stream (bucket data and the op sequence), so reset
179
+ // the checkpoint state for _all_ embedded sync configs, not only the ones selected for this
180
+ // storage instance. This maintains the invariant that no config has a last_checkpoint past
181
+ // the stream-level last_persisted_op.
182
+ await this.syncRulesCollection.updateOne({ _id: this.replicationStreamId }, {
159
183
  $set: {
160
184
  persisted_lsn: null,
161
- 'sync_configs.$[config].snapshot_done': false,
162
- 'sync_configs.$[config].last_checkpoint_lsn': null,
163
- 'sync_configs.$[config].last_checkpoint': null,
164
- 'sync_configs.$[config].no_checkpoint_before': null,
165
- 'sync_configs.$[config].keepalive_op': null
185
+ 'sync_configs.$[].snapshot_done': false,
186
+ 'sync_configs.$[].last_checkpoint_lsn': null,
187
+ 'sync_configs.$[].last_checkpoint': null,
188
+ 'sync_configs.$[].no_checkpoint_before': null
166
189
  },
167
190
  $unset: {
168
- snapshot_lsn: 1
191
+ resume_lsn: 1,
192
+ last_persisted_op: 1
169
193
  }
170
194
  }, {
171
- maxTimeMS: lib_mongo.db.MONGO_CLEAR_OPERATION_TIMEOUT_MS,
172
- arrayFilters: this.syncConfigArrayFilters()
195
+ maxTimeMS: lib_mongo.db.MONGO_CLEAR_OPERATION_TIMEOUT_MS
173
196
  });
174
197
  }
198
+ /**
199
+ * The persisted mapping of the single sync config that read operations are served from.
200
+ *
201
+ * Reads always operate on a single sync config: read-path storage instances are
202
+ * constructed for the active sync config only (see MongoBucketStorage.getActiveSyncConfig),
203
+ * and checkpoints are served from the single active config (see fetchCheckpointState).
204
+ * Within a single sync config, unique names are the persistence key of its rule mapping,
205
+ * so its name-keyed {@link SingleSyncConfigBucketDefinitionMapping} resolves sources from
206
+ * any parse of that config unambiguously - no parsed-set identity is required.
207
+ *
208
+ * Throws on storage instances with multiple sync configs (replication-side instances),
209
+ * which must not serve reads.
210
+ */
211
+ singleSyncConfigMapping() {
212
+ const content = this.replicationStream.syncConfigContent;
213
+ if (content.length != 1) {
214
+ throw new ServiceAssertionError(`Read operations require a storage instance with a single sync config, got ${content.length}`);
215
+ }
216
+ return content[0].mapping;
217
+ }
175
218
  get versionContext() {
219
+ const self = this;
176
220
  return {
177
221
  db: this.db,
178
- group_id: this.group_id,
179
- mapping: this.mapping
222
+ replicationStreamId: this.replicationStreamId,
223
+ get mapping() {
224
+ return self.singleSyncConfigMapping();
225
+ }
180
226
  };
181
227
  }
182
228
  getParameterSetsImpl(checkpoint, lookups, limit) {
@@ -186,23 +232,23 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
186
232
  return getBucketDataBatchV3(this.versionContext, checkpoint, dataBuckets, options);
187
233
  }
188
234
  async clearBucketData(_signal) {
189
- for (const collection of await this.db.listBucketDataCollectionsV3(this.group_id)) {
235
+ for (const collection of await this.db.listBucketDataCollections(this.replicationStreamId)) {
190
236
  await collection.drop();
191
237
  }
192
238
  }
193
239
  async clearParameterIndexes(_signal) {
194
- for (const collection of await this.db.listParameterIndexCollectionsV3(this.group_id)) {
240
+ for (const collection of await this.db.listParameterIndexCollections(this.replicationStreamId)) {
195
241
  await collection.collection.drop();
196
242
  }
197
243
  }
198
244
  async clearSourceRecords(_signal) {
199
- for (const collection of await this.db.listSourceRecordCollectionsV3(this.group_id)) {
245
+ for (const collection of await this.db.listSourceRecordCollections(this.replicationStreamId)) {
200
246
  await collection.drop();
201
247
  }
202
248
  }
203
249
  async clearBucketState(_signal) {
204
250
  await this.db
205
- .bucketStateV3(this.group_id)
251
+ .bucketState(this.replicationStreamId)
206
252
  .drop({ maxTimeMS: lib_mongo.db.MONGO_CLEAR_OPERATION_TIMEOUT_MS })
207
253
  .catch((error) => {
208
254
  if (lib_mongo.isMongoServerError(error) && error.codeName === 'NamespaceNotFound') {
@@ -213,7 +259,7 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
213
259
  }
214
260
  async clearSourceTables(_signal) {
215
261
  await this.db
216
- .sourceTablesV3(this.group_id)
262
+ .sourceTables(this.replicationStreamId)
217
263
  .drop({ maxTimeMS: lib_mongo.db.MONGO_CLEAR_OPERATION_TIMEOUT_MS })
218
264
  .catch((error) => {
219
265
  if (lib_mongo.isMongoServerError(error) && error.codeName === 'NamespaceNotFound') {
@@ -222,6 +268,16 @@ export class MongoSyncBucketStorageV3 extends MongoSyncBucketStorage {
222
268
  throw error;
223
269
  });
224
270
  }
271
+ async cleanupStoppedSyncConfigs(options) {
272
+ return new MongoStoppedSyncConfigCleanup({
273
+ db: this.db,
274
+ replicationStreamId: this.replicationStreamId,
275
+ signal: options.signal,
276
+ logger: options.logger ?? this.logger,
277
+ defaultSchema: options.defaultSchema,
278
+ sourceConnectionTag: options.sourceConnectionTag
279
+ }).run();
280
+ }
225
281
  getDataBucketChangesImpl(options) {
226
282
  return getDataBucketChangesV3(this.versionContext, options);
227
283
  }
@@ -234,8 +290,8 @@ export async function getParameterSetsV3(ctx, checkpoint, lookups, limit) {
234
290
  setSessionSnapshotTime(session, checkpoint.snapshotTime);
235
291
  const buildLookupPipeline = (lookup, index) => {
236
292
  const indexId = lookup.indexId;
237
- const collection = ctx.db.parameterIndexV3(ctx.group_id, indexId);
238
- const lookupFilter = serializeParameterLookupV3(lookup);
293
+ const collection = ctx.db.parameterIndex(ctx.replicationStreamId, indexId);
294
+ const lookupFilter = serializeParameterLookup(lookup);
239
295
  return {
240
296
  collection,
241
297
  pipeline: [
@@ -328,49 +384,107 @@ export async function* getBucketDataBatchV3(ctx, checkpoint, dataBuckets, option
328
384
  requestsByDefinition.set(definitionId, requests);
329
385
  }
330
386
  const definitionGroups = Array.from(requestsByDefinition.entries());
331
- for (let groupIndex = 0; groupIndex < definitionGroups.length && remainingLimit > 0; groupIndex++) {
332
- const [definitionId, requests] = definitionGroups[groupIndex];
387
+ for (const [groupIndex, [definitionId, requests]] of definitionGroups.entries()) {
388
+ if (remainingLimit <= 0) {
389
+ break;
390
+ }
333
391
  const hasLaterDefinitionGroups = groupIndex < definitionGroups.length - 1;
334
392
  const bucketMap = new Map(requests.map((request) => [request.bucket, request.start]));
335
393
  const filters = Array.from(bucketMap.entries()).map(([bucket, start]) => ({
336
394
  _id: {
337
- $gt: {
338
- b: bucket,
339
- o: start
340
- },
341
- $lte: {
342
- b: bucket,
343
- o: end
344
- }
345
- }
395
+ $gt: { b: bucket, o: start },
396
+ $lte: { b: bucket, o: new bson.MaxKey() }
397
+ },
398
+ min_op: { $lte: end }
399
+ // MongoDB Filter<T> doesn't accept compound _id ranges or dotted field paths in its type.
346
400
  }));
347
- const cursor = ctx.db.bucketDataV3(ctx.group_id, definitionId).find({
348
- $or: filters
349
- }, {
401
+ const collection = ctx.db.bucketData(ctx.replicationStreamId, definitionId);
402
+ // MongoDB Filter<T> doesn't accept the $or operator in its type.
403
+ const filter = { $or: filters };
404
+ const context = { replicationStreamId: ctx.replicationStreamId, definitionId };
405
+ const limit = remainingLimit;
406
+ const cursorOptions = { limit: remainingLimit, batchSize: remainingLimit + 1 };
407
+ // raw: true returns Buffers, but the driver typing doesn't reflect that
408
+ // without an explicit cast to FindCursor<Buffer>.
409
+ const cursor = collection.find(filter, {
350
410
  session: undefined,
351
411
  sort: { _id: 1 },
352
- limit: remainingLimit,
353
- batchSize: remainingLimit + 1,
354
412
  raw: true,
355
- maxTimeMS: lib_mongo.db.MONGO_OPERATION_TIMEOUT_MS
413
+ maxTimeMS: lib_mongo.db.MONGO_OPERATION_TIMEOUT_MS,
414
+ ...cursorOptions
356
415
  });
357
- let { data, hasMore: batchHasMore } = await readSingleBatch(cursor).catch((e) => {
416
+ let { data: rawData, hasMore } = await readSingleBatch(cursor).catch((e) => {
358
417
  throw lib_mongo.mapQueryError(e, 'while reading bucket data');
359
418
  });
360
- if (data.length == remainingLimit) {
361
- batchHasMore = true;
419
+ if (cursorOptions.limit != null && rawData.length >= cursorOptions.limit) {
420
+ hasMore = true;
421
+ }
422
+ const data = [];
423
+ const documentOpCounts = [];
424
+ const documentSizes = [];
425
+ let sharedRemainingLimit = limit;
426
+ let limitReached = false;
427
+ // Buckets whose matched document contributed no rows after filtering.
428
+ const completeEmptyBuckets = new Set();
429
+ for (const raw of rawData) {
430
+ const doc = bson.deserialize(raw, storage.BSON_DESERIALIZE_INTERNAL_OPTIONS);
431
+ const { rows, remainingLimit, limitReached: docLimitReached } = extractRowsFromDocument(doc, context, bucketMap, end, sharedRemainingLimit);
432
+ if (rows.length == 0) {
433
+ // The document straddles the requested (start, end] window: it matched the
434
+ // query, but none of its ops are in range. Since its _id.o (max op) must be
435
+ // > end (any op <= end would have been > start, and thus in range), and
436
+ // document ranges per bucket are disjoint, no later document for this bucket
437
+ // can match either. The bucket is complete through the checkpoint.
438
+ completeEmptyBuckets.add(doc._id.b);
439
+ }
440
+ data.push(...rows);
441
+ documentOpCounts.push(rows.length);
442
+ documentSizes.push(raw.byteLength);
443
+ sharedRemainingLimit = remainingLimit;
444
+ if (docLimitReached) {
445
+ limitReached = true;
446
+ break;
447
+ }
448
+ }
449
+ const batchHasMore = hasMore || limitReached;
450
+ // Empty chunks are not forwarded to clients, but report progress to the caller:
451
+ // the bucket's position advances to the checkpoint, so it is not re-requested.
452
+ // If the batch produced no data at all, the last empty chunk also carries the
453
+ // has_more signal, so the caller re-requests the remaining buckets instead of
454
+ // treating an all-filtered batch as the end of the stream.
455
+ const emptyBuckets = Array.from(completeEmptyBuckets);
456
+ for (const [index, bucket] of emptyBuckets.entries()) {
457
+ const startOpId = bucketMap.get(bucket);
458
+ if (startOpId == null) {
459
+ throw new ServiceAssertionError(`data for unexpected bucket: ${bucket}`);
460
+ }
461
+ const isLastChunkOfBatch = data.length == 0 && index == emptyBuckets.length - 1;
462
+ yield {
463
+ chunkData: {
464
+ bucket,
465
+ after: internalToExternalOpId(startOpId),
466
+ has_more: isLastChunkOfBatch && batchHasMore,
467
+ data: [],
468
+ next_after: internalToExternalOpId(end)
469
+ },
470
+ targetOp: null
471
+ };
362
472
  }
363
473
  if (data.length == 0) {
474
+ if (batchHasMore) {
475
+ // The remaining documents are read in the next round, after the caller has
476
+ // advanced the positions of the empty buckets above.
477
+ return;
478
+ }
364
479
  continue;
365
480
  }
366
481
  remainingLimit -= data.length;
367
- let chunkSizeBytes = 0;
482
+ let currentChunkSizeBytes = 0;
368
483
  let currentChunk = null;
369
484
  let targetOp = null;
370
- for (let rawData of data) {
371
- const row = loadBucketDataDocumentV3({ replicationStreamId: ctx.group_id, definitionId }, bson.deserialize(rawData, storage.BSON_DESERIALIZE_INTERNAL_OPTIONS));
485
+ for (const { row, docIndex, isLastOpInDocument } of walkDocumentOps(data, documentOpCounts, documentSizes)) {
372
486
  const bucket = row.bucketKey.bucket;
373
- if (currentChunk == null || currentChunk.bucket != bucket || chunkSizeBytes >= chunkSizeLimitBytes) {
487
+ if (currentChunk == null || currentChunk.bucket != bucket || currentChunkSizeBytes >= chunkSizeLimitBytes) {
374
488
  let start = undefined;
375
489
  if (currentChunk != null) {
376
490
  if (currentChunk.bucket == bucket) {
@@ -379,8 +493,8 @@ export async function* getBucketDataBatchV3(ctx, checkpoint, dataBuckets, option
379
493
  }
380
494
  const yieldChunk = currentChunk;
381
495
  currentChunk = null;
382
- chunkSizeBytes = 0;
383
- yield { chunkData: yieldChunk, targetOp: targetOp };
496
+ currentChunkSizeBytes = 0;
497
+ yield { chunkData: yieldChunk, targetOp };
384
498
  targetOp = null;
385
499
  }
386
500
  if (start == null) {
@@ -404,12 +518,14 @@ export async function* getBucketDataBatchV3(ctx, checkpoint, dataBuckets, option
404
518
  }
405
519
  currentChunk.data.push(entry);
406
520
  currentChunk.next_after = entry.op_id;
407
- chunkSizeBytes += rawData.byteLength;
521
+ if (isLastOpInDocument) {
522
+ currentChunkSizeBytes += documentSizes[docIndex];
523
+ }
408
524
  }
409
525
  if (currentChunk != null) {
410
526
  const yieldChunk = currentChunk;
411
527
  yieldChunk.has_more = batchHasMore || (remainingLimit <= 0 && hasLaterDefinitionGroups);
412
- yield { chunkData: yieldChunk, targetOp: targetOp };
528
+ yield { chunkData: yieldChunk, targetOp };
413
529
  }
414
530
  if (batchHasMore || remainingLimit <= 0) {
415
531
  return;
@@ -419,7 +535,7 @@ export async function* getBucketDataBatchV3(ctx, checkpoint, dataBuckets, option
419
535
  export async function getDataBucketChangesV3(ctx, options) {
420
536
  const limit = 1000;
421
537
  const bucketStateUpdates = await ctx.db
422
- .bucketStateV3(ctx.group_id)
538
+ .bucketState(ctx.replicationStreamId)
423
539
  .aggregate([
424
540
  {
425
541
  $match: {
@@ -454,7 +570,7 @@ export async function getParameterBucketChangesV3(ctx, options) {
454
570
  const indexIds = ctx.mapping.allParameterIndexIds();
455
571
  const collections = indexIds.map((indexId) => ({
456
572
  indexId,
457
- collection: ctx.db.parameterIndexV3(ctx.group_id, indexId)
573
+ collection: ctx.db.parameterIndex(ctx.replicationStreamId, indexId)
458
574
  }));
459
575
  if (collections.length == 0) {
460
576
  return {
@@ -502,7 +618,7 @@ export async function getParameterBucketChangesV3(ctx, options) {
502
618
  invalidateParameterBuckets: invalidateParameterUpdates,
503
619
  updatedParameterLookups: invalidateParameterUpdates
504
620
  ? new Set()
505
- : new Set(parameterUpdates.map((p) => JSONBig.stringify(deserializeParameterLookupV3(p.lookup, p.indexId))))
621
+ : new Set(parameterUpdates.map((p) => JSONBig.stringify(deserializeParameterLookup(p.lookup, p.indexId))))
506
622
  };
507
623
  }
508
624
  //# sourceMappingURL=MongoSyncBucketStorageV3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MongoSyncBucketStorageV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoSyncBucketStorageV3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoSyncBucketStorageV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoSyncBucketStorageV3.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,12 @@ import { PersistedBatch, SaveParameterDataOptions, UpsertCurrentDataOptions } fr
6
6
  import { CurrentDataDocumentV3 } from './models.js';
7
7
  import { VersionedPowerSyncMongoV3 } from './VersionedPowerSyncMongoV3.js';
8
8
  export declare class PersistedBatchV3 extends PersistedBatch {
9
- protected readonly db: VersionedPowerSyncMongoV3;
10
9
  currentData: {
11
10
  sourceTableId: bson.ObjectId;
12
11
  operation: mongo.AnyBulkWriteOperation<CurrentDataDocumentV3>;
13
12
  }[];
14
13
  sourceTablePendingDeletes: Map<string, bigint>;
14
+ protected readonly db: VersionedPowerSyncMongoV3;
15
15
  protected checkDefinitionId(definitionId: BucketDefinitionId | null): BucketDefinitionId;
16
16
  protected getBucketDefinitionId(bucketSource: BucketDataSource): BucketDefinitionId;
17
17
  saveParameterData(data: SaveParameterDataOptions): void;