@powersync/service-module-mongodb-storage 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/storage/MongoBucketStorage.d.ts +36 -3
  3. package/dist/storage/MongoBucketStorage.js +372 -207
  4. package/dist/storage/MongoBucketStorage.js.map +1 -1
  5. package/dist/storage/implementation/MongoBucketBatch.d.ts +17 -5
  6. package/dist/storage/implementation/MongoBucketBatch.js +44 -17
  7. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  8. package/dist/storage/implementation/MongoCompactor.d.ts +19 -79
  9. package/dist/storage/implementation/MongoCompactor.js +27 -238
  10. package/dist/storage/implementation/MongoCompactor.js.map +1 -1
  11. package/dist/storage/implementation/MongoParameterCompactor.d.ts +83 -10
  12. package/dist/storage/implementation/MongoParameterCompactor.js +309 -96
  13. package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
  14. package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +9 -1
  15. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +29 -0
  16. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
  17. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +4 -2
  18. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -1
  19. package/dist/storage/implementation/MongoStorageProvider.js +7 -3
  20. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  21. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +27 -11
  22. package/dist/storage/implementation/MongoSyncBucketStorage.js +78 -31
  23. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  24. package/dist/storage/implementation/MongoSyncRulesLock.js +21 -9
  25. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  26. package/dist/storage/implementation/MongoWriteBatch.d.ts +49 -0
  27. package/dist/storage/implementation/MongoWriteBatch.js +149 -0
  28. package/dist/storage/implementation/MongoWriteBatch.js.map +1 -0
  29. package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +9 -7
  30. package/dist/storage/implementation/MongoWriteCheckpointAPI.js +9 -30
  31. package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
  32. package/dist/storage/implementation/SyncRuleStateUpdate.d.ts +11 -5
  33. package/dist/storage/implementation/SyncRuleStateUpdate.js +14 -6
  34. package/dist/storage/implementation/SyncRuleStateUpdate.js.map +1 -1
  35. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +22 -2
  36. package/dist/storage/implementation/common/PersistedBatch.d.ts +32 -4
  37. package/dist/storage/implementation/common/PersistedBatch.js +49 -6
  38. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  39. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.d.ts +3 -0
  40. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +3 -0
  41. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
  42. package/dist/storage/implementation/db.d.ts +9 -1
  43. package/dist/storage/implementation/db.js +27 -1
  44. package/dist/storage/implementation/db.js.map +1 -1
  45. package/dist/storage/implementation/models.d.ts +31 -0
  46. package/dist/storage/implementation/models.js.map +1 -1
  47. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +2 -0
  48. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +33 -4
  49. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  50. package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +38 -6
  51. package/dist/storage/implementation/v1/MongoCompactorV1.js +247 -20
  52. package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
  53. package/dist/storage/implementation/v1/MongoParameterCompactorV1.d.ts +16 -2
  54. package/dist/storage/implementation/v1/MongoParameterCompactorV1.js +20 -9
  55. package/dist/storage/implementation/v1/MongoParameterCompactorV1.js.map +1 -1
  56. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +18 -11
  57. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +65 -16
  58. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
  59. package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +7 -5
  60. package/dist/storage/implementation/v1/PersistedBatchV1.js +22 -28
  61. package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
  62. package/dist/storage/implementation/v1/models.js +1 -0
  63. package/dist/storage/implementation/v1/models.js.map +1 -1
  64. package/dist/storage/implementation/v3/CompactionLease.d.ts +50 -0
  65. package/dist/storage/implementation/v3/CompactionLease.js +131 -0
  66. package/dist/storage/implementation/v3/CompactionLease.js.map +1 -0
  67. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +10 -2
  68. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +100 -26
  69. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  70. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +82 -25
  71. package/dist/storage/implementation/v3/MongoCompactorV3.js +698 -159
  72. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  73. package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +18 -0
  74. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +23 -0
  75. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +1 -0
  76. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +2 -15
  77. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +60 -92
  78. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -1
  79. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +19 -9
  80. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +91 -31
  81. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
  82. package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.d.ts +26 -0
  83. package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js +82 -0
  84. package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js.map +1 -0
  85. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +14 -8
  86. package/dist/storage/implementation/v3/PersistedBatchV3.js +76 -42
  87. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  88. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +12 -2
  89. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +42 -3
  90. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
  91. package/dist/storage/implementation/v3/bucket-format.js +2 -0
  92. package/dist/storage/implementation/v3/bucket-format.js.map +1 -1
  93. package/dist/storage/implementation/v3/compact-utils.d.ts +107 -0
  94. package/dist/storage/implementation/v3/compact-utils.js +216 -0
  95. package/dist/storage/implementation/v3/compact-utils.js.map +1 -0
  96. package/dist/storage/implementation/v3/compaction-constants.d.ts +5 -0
  97. package/dist/storage/implementation/v3/compaction-constants.js +6 -0
  98. package/dist/storage/implementation/v3/compaction-constants.js.map +1 -0
  99. package/dist/storage/implementation/v3/models.d.ts +84 -4
  100. package/dist/storage/implementation/v3/models.js.map +1 -1
  101. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +7 -8
  102. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +16 -5
  103. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
  104. package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +14 -11
  105. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +6 -8
  106. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +17 -11
  107. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
  108. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.d.ts +38 -0
  109. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js +164 -0
  110. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js.map +1 -0
  111. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +37 -12
  112. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +197 -25
  113. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -1
  114. package/dist/storage/implementation/v3/source-table-utils.d.ts +6 -6
  115. package/dist/storage/implementation/v3/source-table-utils.js +30 -37
  116. package/dist/storage/implementation/v3/source-table-utils.js.map +1 -1
  117. package/dist/storage/storage-index.d.ts +2 -1
  118. package/dist/storage/storage-index.js +1 -0
  119. package/dist/storage/storage-index.js.map +1 -1
  120. package/dist/types/types.d.ts +28 -1
  121. package/dist/types/types.js +28 -7
  122. package/dist/types/types.js.map +1 -1
  123. package/dist/utils/test-utils.js +1 -0
  124. package/dist/utils/test-utils.js.map +1 -1
  125. package/dist/utils/util.js +3 -1
  126. package/dist/utils/util.js.map +1 -1
  127. package/package.json +10 -9
  128. package/src/storage/MongoBucketStorage.ts +507 -269
  129. package/src/storage/implementation/MongoBucketBatch.ts +67 -24
  130. package/src/storage/implementation/MongoCompactor.ts +35 -346
  131. package/src/storage/implementation/MongoParameterCompactor.ts +388 -102
  132. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +34 -0
  133. package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +4 -2
  134. package/src/storage/implementation/MongoStorageProvider.ts +15 -3
  135. package/src/storage/implementation/MongoSyncBucketStorage.ts +114 -40
  136. package/src/storage/implementation/MongoSyncRulesLock.ts +22 -9
  137. package/src/storage/implementation/MongoWriteBatch.ts +172 -0
  138. package/src/storage/implementation/MongoWriteCheckpointAPI.ts +16 -46
  139. package/src/storage/implementation/SyncRuleStateUpdate.ts +13 -6
  140. package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +24 -2
  141. package/src/storage/implementation/common/PersistedBatch.ts +66 -10
  142. package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +4 -0
  143. package/src/storage/implementation/db.ts +35 -2
  144. package/src/storage/implementation/models.ts +34 -0
  145. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +46 -6
  146. package/src/storage/implementation/v1/MongoCompactorV1.ts +327 -40
  147. package/src/storage/implementation/v1/MongoParameterCompactorV1.ts +25 -9
  148. package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +87 -27
  149. package/src/storage/implementation/v1/PersistedBatchV1.ts +25 -30
  150. package/src/storage/implementation/v1/models.ts +1 -0
  151. package/src/storage/implementation/v3/CompactionLease.ts +152 -0
  152. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +138 -34
  153. package/src/storage/implementation/v3/MongoCompactorV3.ts +958 -225
  154. package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +34 -0
  155. package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +100 -109
  156. package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +111 -41
  157. package/src/storage/implementation/v3/MongoWriteCheckpointAPIV3.ts +111 -0
  158. package/src/storage/implementation/v3/PersistedBatchV3.ts +93 -48
  159. package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +55 -4
  160. package/src/storage/implementation/v3/bucket-format.ts +2 -0
  161. package/src/storage/implementation/v3/compact-utils.ts +320 -0
  162. package/src/storage/implementation/v3/compaction-constants.ts +5 -0
  163. package/src/storage/implementation/v3/models.ts +91 -3
  164. package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +24 -9
  165. package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +20 -5
  166. package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +26 -14
  167. package/src/storage/implementation/v3/object-storage/ObjectStorageUsage.ts +229 -0
  168. package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +279 -29
  169. package/src/storage/implementation/v3/source-table-utils.ts +39 -41
  170. package/src/storage/storage-index.ts +2 -0
  171. package/src/types/types.ts +42 -7
  172. package/src/utils/test-utils.ts +1 -0
  173. package/src/utils/util.ts +3 -1
  174. package/test/src/__snapshots__/storage.test.ts.snap +25 -0
  175. package/test/src/__snapshots__/storage_sync.test.ts.snap +605 -16
  176. package/test/src/chunk_compaction_config.test.ts +38 -0
  177. package/test/src/cleanup-stopped-sync-configs.test.ts +40 -13
  178. package/test/src/compact-utils.test.ts +226 -0
  179. package/test/src/helpers/MemoryObjectStorage.ts +14 -6
  180. package/test/src/object_storage_usage.test.ts +267 -0
  181. package/test/src/parameter_compacting_v1.test.ts +120 -0
  182. package/test/src/parameter_compacting_v3.test.ts +192 -0
  183. package/test/src/parameter_compaction_fence.test.ts +276 -0
  184. package/test/src/storage.test.ts +273 -22
  185. package/test/src/storage_compacting.test.ts +968 -246
  186. package/test/src/storage_s3_checksums.test.ts +3 -4
  187. package/test/src/storage_s3_compaction_lifecycle.test.ts +138 -12
  188. package/test/src/storage_s3_reading.test.ts +290 -2
  189. package/test/src/storage_s3_writing.test.ts +1 -0
  190. package/test/src/storage_sync.test.ts +336 -41
  191. package/test/src/util.ts +1 -1
  192. package/tsconfig.tsbuildinfo +1 -1
@@ -1,16 +1,20 @@
1
1
  import * as lib_mongo from '@powersync/lib-service-mongodb';
2
- import { ReplicationAssertionError } from '@powersync/lib-services-framework';
2
+ import { ReplicationAssertionError, ServiceAssertionError } from '@powersync/lib-services-framework';
3
3
  import { storage } from '@powersync/service-core';
4
4
  import * as bson from 'bson';
5
5
  import { mongoTableId } from '../../../utils/util.js';
6
6
  import { canCheckpointState } from '../CheckpointState.js';
7
7
  import { MongoBucketBatch } from '../MongoBucketBatch.js';
8
- import { syncRuleStateUpdatePipeline } from '../SyncRuleStateUpdate.js';
8
+ import { stopReplicationStreamPipeline } from '../SyncRuleStateUpdate.js';
9
9
  import { PersistedBatchV3 } from './PersistedBatchV3.js';
10
10
  import { SourceRecordStoreV3 } from './SourceRecordStoreV3.js';
11
- import { createNewSourceTable, designateEventCarrier, overlappingSourceTableFilter, planSourceTableReconciliation, sourceTableDesiredResolution, sourceTableFromDocument } from './source-table-utils.js';
11
+ import { createNewSourceTable, overlappingSourceTableFilter, planSourceTableReconciliation, sourceTableDesiredResolution, sourceTableFromDocument } from './source-table-utils.js';
12
12
  export class MongoBucketBatchV3 extends MongoBucketBatch {
13
13
  store;
14
+ /** Avoid repeating idempotent createIndexes calls for every checkpoint flush. */
15
+ initializedCustomCheckpointEventIds = new Set();
16
+ // Used only to validate supplied checkpoint ids; it does not initialize collections.
17
+ knownEventIds;
14
18
  syncConfigIds;
15
19
  needsActivationV3 = true;
16
20
  lastWaitingLogThrottledV3 = 0;
@@ -21,29 +25,32 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
21
25
  throw new ReplicationAssertionError('Missing sync config id for v3 batch');
22
26
  }
23
27
  this.syncConfigIds = syncConfigIds;
28
+ this.knownEventIds = new Set(this.mapping.allEventDefinitionIds());
24
29
  this.store = new SourceRecordStoreV3(this.db, this.replicationStreamId, this.mapping);
25
30
  }
26
31
  createPersistedBatch(writtenSize) {
27
32
  return new PersistedBatchV3(this.db, this.replicationStreamId, this.mapping, writtenSize, {
28
33
  logger: this.logger,
29
34
  objectStorage: this.options.objectStorage,
30
- inlineThresholdBytes: this.options.inlineThresholdBytes
35
+ inlineThresholdBytes: this.options.inlineThresholdBytes,
36
+ signal: this.options.signal,
37
+ objectStorageUsageWriterId: this.objectStorageUsageWriterId
31
38
  });
32
39
  }
33
40
  get sourceRecordStore() {
34
41
  return this.store;
35
42
  }
36
- async onReplicationTransactionFlush(session, lastOp) {
43
+ onReplicationTransactionFlush(writes, lastOp) {
37
44
  // Durably advance the stream-level head of persisted ops within the flush transaction.
38
45
  // This ensures a checkpoint created later (even by an empty commit, or by a freshly-appended
39
46
  // config that replicates nothing) covers all ops persisted before a potential crash.
40
- await this.db.sync_rules.updateOne({
47
+ writes.updateOne(this.db.sync_rules, {
41
48
  _id: this.replicationStreamId
42
49
  }, {
43
50
  $max: {
44
51
  last_persisted_op: lastOp
45
52
  }
46
- }, { session });
53
+ });
47
54
  }
48
55
  selectedSyncConfigObjectIds(syncConfigIds) {
49
56
  const selectedIds = new Set(this.syncConfigIds.map((id) => id.toHexString()));
@@ -54,7 +61,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
54
61
  relevantSyncConfigIds(table) {
55
62
  const bucketDataSourceIds = table.bucketDataSources.map((source) => this.mapping.bucketSourceId(source));
56
63
  const parameterLookupSourceIds = table.parameterLookupSources.map((source) => this.mapping.parameterLookupId(source));
57
- return this.selectedSyncConfigObjectIds(this.mapping.syncConfigIdsForSourceTable(this.syncConfigIds.map((id) => id.toHexString()), table.ref, bucketDataSourceIds, parameterLookupSourceIds));
64
+ return this.selectedSyncConfigObjectIds(this.mapping.syncConfigIdsForSourceTable(this.syncConfigIds.map((id) => id.toHexString()), table.ref, bucketDataSourceIds, parameterLookupSourceIds, [...table.eventDefinitionIds]));
58
65
  }
59
66
  relevantSyncConfigIdsForTables(tables) {
60
67
  const ids = new Map();
@@ -87,7 +94,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
87
94
  .sourceRecords(this.replicationStreamId, mongoTableId(table.id))
88
95
  .drop()
89
96
  .catch((error) => {
90
- if (lib_mongo.isMongoServerError(error) && error.codeName === 'NamespaceNotFound') {
97
+ if (lib_mongo.isMongoNamespaceNotFoundError(error)) {
91
98
  return;
92
99
  }
93
100
  throw error;
@@ -100,6 +107,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
100
107
  const parsedOverride = options.parsedSyncConfig;
101
108
  const syncConfig = parsedOverride?.hydratedSyncConfig ?? this.sync_rules;
102
109
  const mapping = parsedOverride?.mapping ?? this.mapping;
110
+ const eventById = (parsedOverride ?? this.options.parsedSyncConfig).eventById;
103
111
  const { connection_id, source } = options;
104
112
  const reconcile = options.reconcileSourceTables ?? storage.defaultSourceTableReconciler;
105
113
  const identity = {
@@ -121,7 +129,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
121
129
  const candidateDocs = await col
122
130
  .find(overlappingSourceTableFilter(connection_id, identity), { session })
123
131
  .toArray();
124
- const candidateTables = candidateDocs.map((doc) => sourceTableFromDocument(doc, source.connectionTag, syncConfig, mapping));
132
+ const candidateTables = candidateDocs.map((doc) => sourceTableFromDocument(doc, source.connectionTag, syncConfig, mapping, eventById));
125
133
  const candidates = candidateTables.map((table) => table.clone());
126
134
  const resolution = await reconcile({ source, candidates });
127
135
  storage.validateSourceTableCandidateResolution(candidates, resolution);
@@ -136,7 +144,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
136
144
  storeCurrentData: source.sendsCompleteRows !== true,
137
145
  syncConfig,
138
146
  mapping,
139
- desired: sourceTableDesiredResolution(syncConfig, source, mapping),
147
+ desired: sourceTableDesiredResolution(syncConfig, source, mapping, eventById),
140
148
  sourceCompatibleTables: resolution.compatibleTables,
141
149
  newTableSourceMetadata: resolution.newTableValues.sourceMetadata
142
150
  };
@@ -150,7 +158,8 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
150
158
  await col.updateOne({ _id: update.id }, {
151
159
  $set: {
152
160
  bucket_data_source_ids: update.memberships.bucketDataSourceIds,
153
- parameter_lookup_source_ids: update.memberships.parameterLookupSourceIds
161
+ parameter_lookup_source_ids: update.memberships.parameterLookupSourceIds,
162
+ event_definition_ids: update.memberships.eventDefinitionIds
154
163
  }
155
164
  }, { session });
156
165
  }
@@ -163,11 +172,9 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
163
172
  await this.db.initializeSourceRecordsCollection(this.replicationStreamId, doc._id, session);
164
173
  plan.tables.push(table);
165
174
  }
166
- // If memberships are split across multiple source tables, only one may fire events.
167
- designateEventCarrier(plan.tables, context.desired.triggersEvent);
168
175
  result = {
169
176
  tables: plan.tables,
170
- dropTables: plan.dropDocs.map((doc) => sourceTableFromDocument(doc, context.connectionTag, syncConfig, mapping))
177
+ dropTables: plan.dropDocs.map((doc) => sourceTableFromDocument(doc, context.connectionTag, syncConfig, mapping, eventById))
171
178
  };
172
179
  });
173
180
  return result;
@@ -179,12 +186,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
179
186
  if (doc == null) {
180
187
  return null;
181
188
  }
182
- const refreshed = sourceTableFromDocument(doc, table.ref.connectionTag, this.sync_rules, this.mapping);
183
- // The event-carrier designation is decided per resolveTables result and not persisted -
184
- // preserve the caller's designation instead of recomputing it from the ref, so that
185
- // refreshing a non-carrier table does not make it fire events.
186
- refreshed.syncEvent = table.syncEvent;
187
- return refreshed;
189
+ return sourceTableFromDocument(doc, table.ref.connectionTag, this.sync_rules, this.mapping, this.options.parsedSyncConfig.eventById);
188
190
  }
189
191
  async commit(lsn, options) {
190
192
  const { createEmptyCheckpoints } = { ...storage.DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS, ...options };
@@ -385,7 +387,7 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
385
387
  await this.db.sync_rules.updateMany({
386
388
  _id: { $ne: this.replicationStreamId },
387
389
  state: { $in: [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED] }
388
- }, syncRuleStateUpdatePipeline(storage.SyncRuleState.STOP), { session });
390
+ }, stopReplicationStreamPipeline(), { session });
389
391
  activated = true;
390
392
  }
391
393
  else if (doc.state == storage.SyncRuleState.ACTIVE &&
@@ -484,16 +486,17 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
484
486
  const ids = tables.map((table) => mongoTableId(table.id));
485
487
  const syncConfigIds = this.relevantSyncConfigIdsForTables(tables);
486
488
  await this.withTransaction(async () => {
487
- await this.db.sourceTables(this.replicationStreamId).updateMany({ _id: { $in: ids } }, {
489
+ const writes = this.db.createWriteBatch(session, { ordered: false });
490
+ writes.updateMany(this.db.sourceTables(this.replicationStreamId), { _id: { $in: ids } }, {
488
491
  $set: {
489
492
  snapshot_done: true
490
493
  },
491
494
  $unset: {
492
495
  snapshot_status: 1
493
496
  }
494
- }, { session });
497
+ });
495
498
  if (no_checkpoint_before_lsn != null && syncConfigIds.length > 0) {
496
- await this.db.sync_rules.updateOne({
499
+ writes.updateOne(this.db.sync_rules, {
497
500
  _id: this.replicationStreamId,
498
501
  'sync_configs._id': { $in: syncConfigIds }
499
502
  }, {
@@ -504,11 +507,11 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
504
507
  'sync_configs.$[config].no_checkpoint_before': no_checkpoint_before_lsn
505
508
  }
506
509
  }, {
507
- session: this.session,
508
510
  // Only set for sync configs that use this table
509
511
  arrayFilters: [{ 'config._id': { $in: syncConfigIds } }]
510
512
  });
511
513
  }
514
+ await writes.execute();
512
515
  });
513
516
  return tables.map((table) => {
514
517
  const copy = table.clone();
@@ -516,5 +519,76 @@ export class MongoBucketBatchV3 extends MongoBucketBatch {
516
519
  return copy;
517
520
  });
518
521
  }
522
+ async batchCreateCustomWriteCheckpoints(session, opId) {
523
+ if (this.write_checkpoint_batch.length == 0) {
524
+ return;
525
+ }
526
+ const checkpointsByEvent = Map.groupBy(this.write_checkpoint_batch, (checkpoint) => this.validateCustomCheckpointEventId(checkpoint.event_id));
527
+ const writes = this.db.createWriteBatch(session, { ordered: false });
528
+ for (const [eventId, checkpoints] of checkpointsByEvent) {
529
+ this.batchCreateEventCustomWriteCheckpoints(writes, opId, eventId, checkpoints);
530
+ }
531
+ await writes.execute();
532
+ }
533
+ async prepareCustomWriteCheckpoints() {
534
+ // Most events never produce custom checkpoints, so create collections lazily
535
+ // only for the event ids present in this batch. This hook runs before the
536
+ // replication transaction because MongoDB cannot create indexes within it.
537
+ const eventIds = new Set(this.write_checkpoint_batch.map((checkpoint) => this.validateCustomCheckpointEventId(checkpoint.event_id)));
538
+ for (const eventId of eventIds) {
539
+ if (this.initializedCustomCheckpointEventIds.has(eventId)) {
540
+ continue;
541
+ }
542
+ await this.db.initializeCustomCheckpointRequestsCollection({
543
+ replicationStreamId: this.replicationStreamId,
544
+ eventId
545
+ });
546
+ this.initializedCustomCheckpointEventIds.add(eventId);
547
+ }
548
+ }
549
+ validateCustomCheckpointEventId(eventId) {
550
+ if (eventId == null) {
551
+ throw new ServiceAssertionError('V3 custom checkpoints require an event definition id');
552
+ }
553
+ if (!this.knownEventIds.has(eventId)) {
554
+ throw new ServiceAssertionError(`Unknown custom checkpoint event definition ${eventId}`);
555
+ }
556
+ return eventId;
557
+ }
558
+ batchCreateEventCustomWriteCheckpoints(writes, opId, eventId, checkpoints) {
559
+ // A repeated user within an event replaces the complete checkpoint state.
560
+ const uniqueCheckpoints = new Map(checkpoints.map((checkpoint) => [checkpoint.user_id, checkpoint]));
561
+ writes.bulkWriteUnordered(this.db.customCheckpointRequests({
562
+ eventId,
563
+ replicationStreamId: this.replicationStreamId
564
+ }), [...uniqueCheckpoints.values()].map((checkpointOptions) => {
565
+ const set = {
566
+ user_id: checkpointOptions.user_id,
567
+ checkpoint: checkpointOptions.checkpoint,
568
+ op_id: opId
569
+ };
570
+ if (checkpointOptions.checkpoint_requested_at != null) {
571
+ set.checkpoint_requested_at = checkpointOptions.checkpoint_requested_at;
572
+ }
573
+ return {
574
+ updateOne: {
575
+ filter: {
576
+ user_id: checkpointOptions.user_id
577
+ },
578
+ update: {
579
+ $set: set,
580
+ ...(checkpointOptions.checkpoint_requested_at == null
581
+ ? {
582
+ $unset: {
583
+ checkpoint_requested_at: 1
584
+ }
585
+ }
586
+ : {})
587
+ },
588
+ upsert: true
589
+ }
590
+ };
591
+ }));
592
+ }
519
593
  }
520
594
  //# sourceMappingURL=MongoBucketBatchV3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MongoBucketBatchV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoBucketBatchV3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoBucketBatchV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoBucketBatchV3.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,87 @@
1
- import { mongo } from '@powersync/lib-service-mongodb';
2
- import { storage } from '@powersync/service-core';
3
- import { BucketDefinitionId } from '@powersync/service-sync-rules';
4
- import { BucketStateDocumentBase } from '../models.js';
5
- import { DirtyBucket, MongoCompactor } from '../MongoCompactor.js';
1
+ import { InternalOpId, storage } from '@powersync/service-core';
2
+ import { MongoCompactor } from '../MongoCompactor.js';
3
+ import { CompactIntervalConfig, CompactTargetConfig } from './compact-utils.js';
6
4
  import type { MongoSyncBucketStorageV3 } from './MongoSyncBucketStorageV3.js';
7
5
  import { VersionedPowerSyncMongoV3 } from './VersionedPowerSyncMongoV3.js';
8
- export declare class MongoCompactorV3 extends MongoCompactor {
6
+ export declare class MongoCompactorV3 extends MongoCompactor implements CompactIntervalConfig, CompactTargetConfig {
9
7
  protected readonly db: VersionedPowerSyncMongoV3;
10
8
  protected readonly storage: MongoSyncBucketStorageV3;
11
- compact(): Promise<void>;
9
+ readonly minCompactChunkIntervalMs: number;
10
+ readonly minCompactFullIntervalMs: number;
11
+ readonly maxCompactFullIntervalMs: number;
12
+ readonly compactLeaseDurationMs: number;
13
+ readonly maxOpIdCap: InternalOpId | undefined;
14
+ private readonly objectStorageUsage;
15
+ constructor(bucketStorage: MongoSyncBucketStorageV3, db: VersionedPowerSyncMongoV3, options: storage.CompactOptions);
16
+ compact(): Promise<number>;
17
+ protected deleteOldCustomCheckpointRequests(): Promise<void>;
18
+ /** An explicit compact request always runs a full compact for its buckets. */
19
+ private compactExplicitBuckets;
20
+ /**
21
+ * Process scheduled work in bounded batches.
22
+ *
23
+ * Batching specifically help to cover cases of many buckets where no compaction is required:
24
+ * Instead of sequentially claiming and then rescheduling a bucket, this handles it in bulk.
25
+ *
26
+ * Chunk merges overlap a bounded number of buckets. Full compaction stays
27
+ * sequential because its working set includes operation deduplication state.
28
+ *
29
+ * Any concurrent workers may read the same batch. Rescheduling filters out buckets handled
30
+ * by a concurrent worker or replication write, while buckets that do need compaction are
31
+ * filtered out when claiming a compaction lease.
32
+ *
33
+ * We filter scheduled jobs by the job start date, so that the same bucket is not compacted
34
+ * multiple times in one run. Reschedules fall beyond the fixed boundary. For the run after
35
+ * initial replication, dueAheadMs extends that boundary to include the first deferred interval.
36
+ */
37
+ private compactScheduledBuckets;
38
+ /** Use MongoDB's clock, matching scheduling and lease timestamps. */
39
+ private readCompactionTime;
40
+ /** Process one scheduled batch with a fixed pool of workers. */
41
+ private runChunkCompactionWorkers;
42
+ /** Read a bounded, priority-ordered snapshot of currently claimable scheduled work. */
43
+ private findScheduledBucketBatch;
44
+ /**
45
+ * Reschedule snapshots that were already known to be no-ops without first
46
+ * taking a lease. Every decision input is compared so a concurrent writer
47
+ * or compactor simply makes the update a no-op instead of losing work. A
48
+ * successful reschedule moves beyond this run's fixed selection boundary.
49
+ */
50
+ private rescheduleUnclaimedBuckets;
51
+ /**
52
+ * Isolate a malformed bucket so it cannot prevent other scheduled buckets
53
+ * from compacting. The snapshot filter preserves any concurrent write or
54
+ * compactor result instead of overwriting its next check.
55
+ */
56
+ private rescheduleFailedBucket;
57
+ /**
58
+ * Given a bucket filter, claim a lease on the bucket. The filter should include a filter on _id.
59
+ *
60
+ * Resolves to null if the bucket is already claimed, not found, or filtered out.
61
+ */
62
+ private claimBucket;
63
+ private compactClaimedBucket;
64
+ private rescheduleClaimedBucket;
65
+ private rescheduleAtOrAfter;
66
+ private compactionTarget;
67
+ private isCompactionTargetCovered;
12
68
  private get objectStorageLifecycle();
13
- dirtyBucketBatches(options: {
14
- minBucketChanges: number;
15
- minChangeRatio: number;
16
- }): AsyncGenerator<DirtyBucket[]>;
17
- dirtyBucketBatchForChecksums(options: {
18
- minBucketChanges: number;
19
- }): Promise<DirtyBucket[]>;
20
- protected writeBucketStateUpdates(): Promise<void>;
21
- /**
22
- * The compactor operates on persisted definition ids only - never on parsed sources.
23
- * This narrowed view makes the source-resolving checksum methods unreachable here.
24
- */
25
- private get definitionChecksums();
26
- protected computeChecksumsForBuckets(buckets: Pick<DirtyBucket, 'bucket' | 'definitionId'>[]): Promise<storage.PartialChecksumMap>;
27
- protected bucketStateFilter(bucket: string, definitionId: BucketDefinitionId | null): mongo.Filter<BucketStateDocumentBase>;
28
- private getBucketDataContext;
29
- protected compactSingleBucket(bucket: string, definitionId?: BucketDefinitionId | null): Promise<void>;
69
+ private compactSingleBucket;
70
+ /**
71
+ * Merge adjacent bucket-data chunks without inspecting their operations
72
+ * unless a merge is possible. The metadata contains enough information to
73
+ * update the persisted checksum state and to decide whether a group can fit
74
+ * in one chunk.
75
+ */
76
+ private compactSingleBucketChunks;
77
+ private flushChunkMerge;
78
+ private finalizeCompactedBucket;
79
+ private finalizeSkippedBucket;
80
+ /**
81
+ * Read bucket stats directly from bucket_data documents.
82
+ */
83
+ private readBucketStats;
84
+ private compactSingleBucketFully;
30
85
  /**
31
86
  * Persist replacement objects before starting the transaction, then atomically
32
87
  * publish their lifecycle markers alongside the MongoDB document replacement.
@@ -40,7 +95,8 @@ export declare class MongoCompactorV3 extends MongoCompactor {
40
95
  * before the known boundary document, then splits that boundary document
41
96
  * if it contains ops on both sides of lastNotPut.
42
97
  *
43
- * Returns the op count diff after replacing cleared ops with CLEAR ops.
98
+ * Returns the op count and stored-stat changes after replacing cleared ops
99
+ * with CLEAR ops.
44
100
  */
45
101
  private clearBucketLeading;
46
102
  private clearLeadingFullDocuments;
@@ -57,5 +113,6 @@ export declare class MongoCompactorV3 extends MongoCompactor {
57
113
  private prepareCompactionUploads;
58
114
  /** Publish replacement uploads and retire superseded objects in the same transaction. */
59
115
  private finishObjectStorageReplacement;
116
+ private recordObjectStorageReplacement;
60
117
  private persistBucketData;
61
118
  }