@powersync/service-module-mongodb-storage 0.0.0-dev-20260803144812 → 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 (213) hide show
  1. package/CHANGELOG.md +129 -7
  2. package/dist/storage/MongoBucketStorage.d.ts +42 -5
  3. package/dist/storage/MongoBucketStorage.js +404 -215
  4. package/dist/storage/MongoBucketStorage.js.map +1 -1
  5. package/dist/storage/implementation/MongoBucketBatch.d.ts +39 -14
  6. package/dist/storage/implementation/MongoBucketBatch.js +169 -98
  7. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  8. package/dist/storage/implementation/MongoCompactor.d.ts +21 -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/MongoIdSequence.d.ts +10 -1
  12. package/dist/storage/implementation/MongoIdSequence.js +14 -1
  13. package/dist/storage/implementation/MongoIdSequence.js.map +1 -1
  14. package/dist/storage/implementation/MongoOpIdAllocator.d.ts +27 -0
  15. package/dist/storage/implementation/MongoOpIdAllocator.js +97 -0
  16. package/dist/storage/implementation/MongoOpIdAllocator.js.map +1 -0
  17. package/dist/storage/implementation/MongoParameterCompactor.d.ts +83 -10
  18. package/dist/storage/implementation/MongoParameterCompactor.js +309 -96
  19. package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
  20. package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +9 -1
  21. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +35 -2
  22. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -1
  23. package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +2 -1
  24. package/dist/storage/implementation/MongoPersistedReplicationStream.js +7 -4
  25. package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -1
  26. package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +3 -3
  27. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +10 -8
  28. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -1
  29. package/dist/storage/implementation/MongoStorageProvider.js +8 -4
  30. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  31. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +32 -11
  32. package/dist/storage/implementation/MongoSyncBucketStorage.js +95 -31
  33. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  34. package/dist/storage/implementation/MongoSyncRulesLock.d.ts +26 -2
  35. package/dist/storage/implementation/MongoSyncRulesLock.js +59 -10
  36. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  37. package/dist/storage/implementation/MongoWriteBatch.d.ts +49 -0
  38. package/dist/storage/implementation/MongoWriteBatch.js +149 -0
  39. package/dist/storage/implementation/MongoWriteBatch.js.map +1 -0
  40. package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +9 -7
  41. package/dist/storage/implementation/MongoWriteCheckpointAPI.js +9 -30
  42. package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
  43. package/dist/storage/implementation/SyncRuleStateUpdate.d.ts +11 -5
  44. package/dist/storage/implementation/SyncRuleStateUpdate.js +14 -6
  45. package/dist/storage/implementation/SyncRuleStateUpdate.js.map +1 -1
  46. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +22 -2
  47. package/dist/storage/implementation/common/PersistedBatch.d.ts +32 -4
  48. package/dist/storage/implementation/common/PersistedBatch.js +57 -14
  49. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  50. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.d.ts +3 -0
  51. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +3 -0
  52. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
  53. package/dist/storage/implementation/db.d.ts +9 -1
  54. package/dist/storage/implementation/db.js +28 -1
  55. package/dist/storage/implementation/db.js.map +1 -1
  56. package/dist/storage/implementation/models.d.ts +35 -0
  57. package/dist/storage/implementation/models.js.map +1 -1
  58. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +11 -0
  59. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +227 -221
  60. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  61. package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +38 -6
  62. package/dist/storage/implementation/v1/MongoCompactorV1.js +247 -20
  63. package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
  64. package/dist/storage/implementation/v1/MongoParameterCompactorV1.d.ts +16 -2
  65. package/dist/storage/implementation/v1/MongoParameterCompactorV1.js +20 -9
  66. package/dist/storage/implementation/v1/MongoParameterCompactorV1.js.map +1 -1
  67. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +18 -11
  68. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +66 -17
  69. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
  70. package/dist/storage/implementation/v1/PersistedBatchV1.d.ts +7 -5
  71. package/dist/storage/implementation/v1/PersistedBatchV1.js +22 -28
  72. package/dist/storage/implementation/v1/PersistedBatchV1.js.map +1 -1
  73. package/dist/storage/implementation/v1/models.js +1 -0
  74. package/dist/storage/implementation/v1/models.js.map +1 -1
  75. package/dist/storage/implementation/v3/CompactionLease.d.ts +50 -0
  76. package/dist/storage/implementation/v3/CompactionLease.js +131 -0
  77. package/dist/storage/implementation/v3/CompactionLease.js.map +1 -0
  78. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +14 -2
  79. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +261 -194
  80. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  81. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +83 -25
  82. package/dist/storage/implementation/v3/MongoCompactorV3.js +702 -159
  83. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  84. package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +18 -0
  85. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +23 -0
  86. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +1 -0
  87. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +2 -15
  88. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +60 -92
  89. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -1
  90. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +19 -9
  91. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +92 -32
  92. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
  93. package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.d.ts +26 -0
  94. package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js +82 -0
  95. package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js.map +1 -0
  96. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +14 -8
  97. package/dist/storage/implementation/v3/PersistedBatchV3.js +77 -45
  98. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  99. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +12 -2
  100. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +42 -3
  101. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
  102. package/dist/storage/implementation/v3/bucket-format.js +2 -0
  103. package/dist/storage/implementation/v3/bucket-format.js.map +1 -1
  104. package/dist/storage/implementation/v3/compact-utils.d.ts +108 -0
  105. package/dist/storage/implementation/v3/compact-utils.js +223 -0
  106. package/dist/storage/implementation/v3/compact-utils.js.map +1 -0
  107. package/dist/storage/implementation/v3/compaction-constants.d.ts +5 -0
  108. package/dist/storage/implementation/v3/compaction-constants.js +6 -0
  109. package/dist/storage/implementation/v3/compaction-constants.js.map +1 -0
  110. package/dist/storage/implementation/v3/models.d.ts +90 -6
  111. package/dist/storage/implementation/v3/models.js.map +1 -1
  112. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +7 -8
  113. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +16 -5
  114. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -1
  115. package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +14 -11
  116. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +6 -8
  117. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +17 -11
  118. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -1
  119. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.d.ts +38 -0
  120. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js +164 -0
  121. package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js.map +1 -0
  122. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +37 -12
  123. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +197 -25
  124. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -1
  125. package/dist/storage/implementation/v3/source-table-utils.d.ts +15 -7
  126. package/dist/storage/implementation/v3/source-table-utils.js +49 -57
  127. package/dist/storage/implementation/v3/source-table-utils.js.map +1 -1
  128. package/dist/storage/storage-index.d.ts +2 -1
  129. package/dist/storage/storage-index.js +1 -0
  130. package/dist/storage/storage-index.js.map +1 -1
  131. package/dist/types/types.d.ts +28 -1
  132. package/dist/types/types.js +28 -7
  133. package/dist/types/types.js.map +1 -1
  134. package/dist/utils/test-utils.d.ts +4 -2
  135. package/dist/utils/test-utils.js +7 -4
  136. package/dist/utils/test-utils.js.map +1 -1
  137. package/dist/utils/util.js +3 -1
  138. package/dist/utils/util.js.map +1 -1
  139. package/package.json +10 -9
  140. package/src/storage/MongoBucketStorage.ts +545 -277
  141. package/src/storage/implementation/MongoBucketBatch.ts +258 -124
  142. package/src/storage/implementation/MongoCompactor.ts +37 -346
  143. package/src/storage/implementation/MongoIdSequence.ts +21 -1
  144. package/src/storage/implementation/MongoOpIdAllocator.ts +105 -0
  145. package/src/storage/implementation/MongoParameterCompactor.ts +388 -102
  146. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +46 -1
  147. package/src/storage/implementation/MongoPersistedReplicationStream.ts +12 -4
  148. package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +48 -29
  149. package/src/storage/implementation/MongoStorageProvider.ts +16 -4
  150. package/src/storage/implementation/MongoSyncBucketStorage.ts +133 -40
  151. package/src/storage/implementation/MongoSyncRulesLock.ts +78 -12
  152. package/src/storage/implementation/MongoWriteBatch.ts +172 -0
  153. package/src/storage/implementation/MongoWriteCheckpointAPI.ts +16 -46
  154. package/src/storage/implementation/SyncRuleStateUpdate.ts +13 -6
  155. package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +24 -2
  156. package/src/storage/implementation/common/PersistedBatch.ts +76 -20
  157. package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +4 -0
  158. package/src/storage/implementation/db.ts +36 -2
  159. package/src/storage/implementation/models.ts +39 -0
  160. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +272 -254
  161. package/src/storage/implementation/v1/MongoCompactorV1.ts +327 -40
  162. package/src/storage/implementation/v1/MongoParameterCompactorV1.ts +25 -9
  163. package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +88 -28
  164. package/src/storage/implementation/v1/PersistedBatchV1.ts +25 -30
  165. package/src/storage/implementation/v1/models.ts +1 -0
  166. package/src/storage/implementation/v3/CompactionLease.ts +152 -0
  167. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +339 -247
  168. package/src/storage/implementation/v3/MongoCompactorV3.ts +955 -225
  169. package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +34 -0
  170. package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +100 -109
  171. package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +112 -42
  172. package/src/storage/implementation/v3/MongoWriteCheckpointAPIV3.ts +111 -0
  173. package/src/storage/implementation/v3/PersistedBatchV3.ts +94 -51
  174. package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +55 -4
  175. package/src/storage/implementation/v3/bucket-format.ts +2 -0
  176. package/src/storage/implementation/v3/compact-utils.ts +329 -0
  177. package/src/storage/implementation/v3/compaction-constants.ts +5 -0
  178. package/src/storage/implementation/v3/models.ts +97 -4
  179. package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +24 -9
  180. package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +20 -5
  181. package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +26 -14
  182. package/src/storage/implementation/v3/object-storage/ObjectStorageUsage.ts +229 -0
  183. package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +279 -29
  184. package/src/storage/implementation/v3/source-table-utils.ts +82 -76
  185. package/src/storage/storage-index.ts +2 -0
  186. package/src/types/types.ts +42 -7
  187. package/src/utils/test-utils.ts +9 -5
  188. package/src/utils/util.ts +3 -1
  189. package/test/src/__snapshots__/storage.test.ts.snap +25 -0
  190. package/test/src/__snapshots__/storage_sync.test.ts.snap +794 -205
  191. package/test/src/chunk_compaction_config.test.ts +38 -0
  192. package/test/src/cleanup-stopped-sync-configs.test.ts +59 -26
  193. package/test/src/compact-utils.test.ts +251 -0
  194. package/test/src/concurrent_writers.test.ts +599 -0
  195. package/test/src/connection_config.test.ts +159 -0
  196. package/test/src/helpers/MemoryObjectStorage.ts +14 -6
  197. package/test/src/helpers/concurrentWriter.mjs +29 -0
  198. package/test/src/helpers/s3TestFactory.ts +12 -12
  199. package/test/src/object_storage_usage.test.ts +268 -0
  200. package/test/src/parameter_compacting_v1.test.ts +120 -0
  201. package/test/src/parameter_compacting_v3.test.ts +192 -0
  202. package/test/src/parameter_compaction_fence.test.ts +276 -0
  203. package/test/src/storage.test.ts +280 -24
  204. package/test/src/storage_compacting.test.ts +1097 -253
  205. package/test/src/storage_object_storage_inline_threshold.test.ts +3 -3
  206. package/test/src/storage_s3_checksums.test.ts +6 -7
  207. package/test/src/storage_s3_compaction_lifecycle.test.ts +143 -17
  208. package/test/src/storage_s3_reading.test.ts +294 -6
  209. package/test/src/storage_s3_writing.test.ts +4 -3
  210. package/test/src/storage_sync.test.ts +412 -80
  211. package/test/src/storeCurrentData.test.ts +5 -5
  212. package/test/src/util.ts +1 -1
  213. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MongoBucketStorage.js","sourceRoot":"","sources":["../../src/storage/MongoBucketStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoBucketStorage.js","sourceRoot":"","sources":["../../src/storage/MongoBucketStorage.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,20 @@
1
1
  import { mongo } from '@powersync/lib-service-mongodb';
2
- import { HydratedSyncConfig, SqlEventDescriptor } from '@powersync/service-sync-rules';
2
+ import { EventDefinitionId, HydratedEventDescriptor, HydratedSyncConfig } from '@powersync/service-sync-rules';
3
3
  import * as bson from 'bson';
4
4
  import { BaseObserver, Logger } from '@powersync/lib-services-framework';
5
5
  import { BucketDefinitionMapping, BucketStorageMarkRecordUnavailable, InternalOpId, PerformanceTracer, storage } from '@powersync/service-core';
6
6
  import { PersistedBatch } from './common/PersistedBatch.js';
7
7
  import { SourceRecordStore } from './common/SourceRecordStore.js';
8
8
  import type { VersionedPowerSyncMongo } from './db.js';
9
+ import { SyncRuleDocumentBase } from './models.js';
10
+ import { MongoOpIdAllocator } from './MongoOpIdAllocator.js';
9
11
  import { MongoParsedSyncConfigSet } from './MongoParsedSyncConfigSet.js';
12
+ import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
13
+ import { MongoWriteBatch } from './MongoWriteBatch.js';
10
14
  import { ObjectStorage } from './v3/object-storage/ObjectStorage.js';
11
15
  export interface MongoBucketBatchOptions {
16
+ replicationLock: MongoSyncRulesLock;
17
+ opIdAllocator: MongoOpIdAllocator;
12
18
  db: VersionedPowerSyncMongo;
13
19
  /**
14
20
  * The parsed sync config set for this batch.
@@ -37,6 +43,10 @@ export interface MongoBucketBatchOptions {
37
43
  hooks: storage.StorageHooks | undefined;
38
44
  logger: Logger;
39
45
  tracer?: PerformanceTracer<'storage' | 'evaluate'>;
46
+ /**
47
+ * Aborts in-flight object storage uploads when replication stops.
48
+ */
49
+ signal?: AbortSignal;
40
50
  objectStorage?: ObjectStorage;
41
51
  inlineThresholdBytes?: number;
42
52
  }
@@ -61,8 +71,9 @@ export declare abstract class MongoBucketBatch extends BaseObserver<storage.Buck
61
71
  private readonly storeCurrentData;
62
72
  readonly skipExistingRows: boolean;
63
73
  protected readonly mapping: BucketDefinitionMapping;
74
+ protected readonly objectStorageUsageWriterId: string;
64
75
  private batch;
65
- private write_checkpoint_batch;
76
+ protected write_checkpoint_batch: storage.CustomWriteCheckpointOptions[];
66
77
  private markRecordUnavailable;
67
78
  private hooks;
68
79
  private clearedError;
@@ -98,26 +109,37 @@ export declare abstract class MongoBucketBatch extends BaseObserver<storage.Buck
98
109
  }): Promise<void>;
99
110
  abstract markTableSnapshotRequired(table: storage.SourceTable): Promise<void>;
100
111
  abstract markTableSnapshotDone(tables: storage.SourceTable[], no_checkpoint_before_lsn?: string): Promise<storage.SourceTable[]>;
112
+ protected abstract batchCreateCustomWriteCheckpoints(session: mongo.ClientSession, opId: InternalOpId): Promise<void>;
113
+ /** Perform any version-specific setup required before writing custom checkpoints. */
114
+ protected prepareCustomWriteCheckpoints(): Promise<void>;
101
115
  flush(options?: storage.BatchBucketFlushOptions): Promise<storage.FlushedResult | null>;
116
+ /** Publish the checkpoint in the final flush transaction, or use the empty-commit path. */
117
+ protected flushAndCommit<T>(checkpoint: (stream: SyncRuleDocumentBase, lastOp: InternalOpId) => Promise<T>, commitWithoutFlush: () => Promise<T>, options?: storage.BatchBucketFlushOptions, projection?: mongo.Document): Promise<T>;
102
118
  private flushInner;
103
119
  private replicateBatch;
104
120
  private saveOperation;
105
- protected withTransaction(cb: () => Promise<void>): Promise<void>;
121
+ protected fence(session?: mongo.ClientSession, projection?: mongo.Document): Promise<mongo.WithId<SyncRuleDocumentBase>>;
122
+ protected withTransaction<T>(cb: (stream: SyncRuleDocumentBase) => Promise<T>, session?: mongo.ClientSession): Promise<T>;
123
+ /** The first operation must modify the stream document conditional on lease ownership. */
124
+ protected withFencedTransaction<S, T>(acquireFence: () => Promise<S>, cb: (stream: S) => Promise<T>, session?: mongo.ClientSession): Promise<T>;
125
+ private withWriterLock;
126
+ /** Single-document updates enforce ownership atomically, without a separate transaction. */
127
+ protected updateStreamMetadata(set: mongo.Document, filter?: mongo.Document, writeConcern?: mongo.WriteConcernSettings): Promise<void>;
128
+ /** Caller must already be inside a fenced transaction holding the writer mutex. */
129
+ protected updateStreamMetadataInTransaction(set: mongo.Document, filter?: mongo.Document): Promise<void>;
130
+ private writeStreamMetadata;
106
131
  private withReplicationTransaction;
107
- /**
108
- * Hook called inside the replication flush transaction, after ops have been persisted.
109
- *
110
- * The base implementation does nothing; v3 storage overrides this to `$max` the stream-level
111
- * `last_persisted_op` durably within the same transaction.
112
- */
113
- protected onReplicationTransactionFlush(_session: mongo.ClientSession, _lastOp: InternalOpId): Promise<void>;
132
+ /** Highest durably persisted operation, including operations not yet checkpointed. */
133
+ protected abstract persistedOpHead(stream: SyncRuleDocumentBase): InternalOpId;
134
+ /** Advance the persisted head in the same transaction as the operations. */
135
+ protected abstract onReplicationTransactionFlush(writes: MongoWriteBatch, lastOp: InternalOpId): void;
114
136
  /**
115
137
  * Called after a replication transaction has successfully committed, with the last persisted op id.
116
138
  *
117
139
  * v1 storage tracks this in memory to fold into the next checkpoint. v3 storage does not need it:
118
140
  * the stream-level `last_persisted_op` is already advanced durably by
119
- * {@link onReplicationTransactionFlush} within the same transaction, and checkpoints read it
120
- * from the document.
141
+ * {@link onReplicationTransactionFlush} or the combined checkpoint update within the same
142
+ * transaction, and empty commits read it from the document.
121
143
  *
122
144
  * Keep calls to this adjacent to {@link withReplicationTransaction} usage - both must observe
123
145
  * every path that persists ops.
@@ -135,7 +157,10 @@ export declare abstract class MongoBucketBatch extends BaseObserver<storage.Buck
135
157
  updateTableProgress(table: storage.SourceTable, progress: Partial<storage.TableSnapshotStatus>): Promise<storage.SourceTable>;
136
158
  protected clearError(session: mongo.ClientSession): Promise<void>;
137
159
  /**
138
- * Gets relevant {@link SqlEventDescriptor}s for the given {@link SourceTable}
160
+ * Gets relevant {@link HydratedEventDescriptor}s for the given {@link SourceTable}
139
161
  */
140
- protected getTableEvents(table: storage.SourceTable): SqlEventDescriptor[];
162
+ protected getTableEvents(table: storage.SourceTable): {
163
+ event: HydratedEventDescriptor;
164
+ eventId?: EventDefinitionId;
165
+ }[];
141
166
  }
@@ -1,19 +1,14 @@
1
1
  import { mongo } from '@powersync/lib-service-mongodb';
2
2
  import * as bson from 'bson';
3
- import { BaseObserver, container, ErrorCode, errors, ReplicationAssertionError, ServiceError } from '@powersync/lib-services-framework';
3
+ import { BaseObserver, container, ErrorCode, errors, ReplicationAbortedError, ReplicationAssertionError, ServiceError } from '@powersync/lib-services-framework';
4
4
  import { deserializeBson, isCompleteRow, PerformanceTracer, SaveOperationTag, storage, utils } from '@powersync/service-core';
5
5
  import * as timers from 'node:timers/promises';
6
6
  import { mongoTableId } from '../../utils/util.js';
7
7
  import { MAX_ROW_SIZE } from './MongoBucketBatchShared.js';
8
- import { MongoIdSequence } from './MongoIdSequence.js';
9
- import { batchCreateCustomWriteCheckpoints } from './MongoWriteCheckpointAPI.js';
8
+ import { OpIdRangeExhausted } from './MongoIdSequence.js';
9
+ import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
10
10
  import { OperationBatch, RecordOperation } from './OperationBatch.js';
11
- // Currently, we can only have a single flush() at a time, since it locks the op_id sequence.
12
- // While the MongoDB transaction retry mechanism handles this okay, using an in-process Mutex
13
- // makes it more fair and has less overhead.
14
- //
15
- // In the future, we can investigate allowing multiple replication streams operating independently.
16
- const replicationMutex = new utils.Mutex();
11
+ import { createObjectStorageUsageWriterId } from './v3/object-storage/ObjectStorageUsage.js';
17
12
  export class MongoBucketBatch extends BaseObserver {
18
13
  options;
19
14
  logger;
@@ -35,6 +30,7 @@ export class MongoBucketBatch extends BaseObserver {
35
30
  storeCurrentData;
36
31
  skipExistingRows;
37
32
  mapping;
33
+ objectStorageUsageWriterId = createObjectStorageUsageWriterId();
38
34
  batch = null;
39
35
  write_checkpoint_batch = [];
40
36
  markRecordUnavailable;
@@ -59,7 +55,12 @@ export class MongoBucketBatch extends BaseObserver {
59
55
  constructor(options) {
60
56
  super();
61
57
  this.logger = options.logger;
62
- this.options = options;
58
+ this.options = {
59
+ ...options,
60
+ signal: options.signal == null
61
+ ? options.replicationLock.signal
62
+ : AbortSignal.any([options.signal, options.replicationLock.signal])
63
+ };
63
64
  this.client = options.db.client;
64
65
  this.db = options.db;
65
66
  this.replicationStreamId = options.replicationStreamId;
@@ -81,6 +82,8 @@ export class MongoBucketBatch extends BaseObserver {
81
82
  sync_rules_id: this.replicationStreamId
82
83
  });
83
84
  }
85
+ /** Perform any version-specific setup required before writing custom checkpoints. */
86
+ async prepareCustomWriteCheckpoints() { }
84
87
  async flush(options) {
85
88
  let result = null;
86
89
  // One flush may be split over multiple transactions.
@@ -93,13 +96,30 @@ export class MongoBucketBatch extends BaseObserver {
93
96
  }
94
97
  return result;
95
98
  }
96
- async flushInner(options) {
99
+ /** Publish the checkpoint in the final flush transaction, or use the empty-commit path. */
100
+ async flushAndCommit(checkpoint, commitWithoutFlush, options, projection) {
101
+ if (this.batch == null && this.write_checkpoint_batch.length === 0) {
102
+ return commitWithoutFlush();
103
+ }
104
+ let result;
105
+ while (this.batch != null || this.write_checkpoint_batch.length > 0) {
106
+ await this.flushInner(options, async (stream, lastOp) => {
107
+ result = await checkpoint(stream, lastOp);
108
+ }, projection);
109
+ }
110
+ return result;
111
+ }
112
+ async flushInner(options, checkpoint, projection) {
97
113
  const batch = this.batch;
98
114
  let last_op = null;
99
115
  let resumeBatch = null;
100
116
  let clearedError = false;
101
117
  using _ = this.tracer.span('storage', 'flush');
102
118
  await this.hooks?.beforeBatchFlush?.(this);
119
+ if (this.write_checkpoint_batch.length > 0) {
120
+ // Collection/index creation cannot run inside the replication transaction.
121
+ await this.prepareCustomWriteCheckpoints();
122
+ }
103
123
  await this.withReplicationTransaction(`Flushing ${batch?.length ?? 0} ops`, async (session, opSeq) => {
104
124
  clearedError = false;
105
125
  if (batch != null) {
@@ -109,11 +129,19 @@ export class MongoBucketBatch extends BaseObserver {
109
129
  }
110
130
  if (this.write_checkpoint_batch.length > 0) {
111
131
  this.logger.info(`Writing ${this.write_checkpoint_batch.length} custom write checkpoints`);
112
- await batchCreateCustomWriteCheckpoints(this.db, session, this.write_checkpoint_batch, opSeq.next());
113
- this.write_checkpoint_batch = [];
132
+ await this.batchCreateCustomWriteCheckpoints(session, opSeq.next());
114
133
  }
115
134
  last_op = opSeq.last();
116
- });
135
+ }, async (stream, lastOp) => {
136
+ if (checkpoint != null && resumeBatch == null) {
137
+ // The checkpoint must also persist the head, including when visibility is blocked.
138
+ await checkpoint(stream, lastOp);
139
+ return true;
140
+ }
141
+ return false;
142
+ }, projection);
143
+ // Keep checkpoints available if the transaction retries after writing them.
144
+ this.write_checkpoint_batch = [];
117
145
  if (clearedError) {
118
146
  this.clearedError = true;
119
147
  }
@@ -446,95 +474,117 @@ export class MongoBucketBatch extends BaseObserver {
446
474
  }
447
475
  return result;
448
476
  }
449
- async withTransaction(cb) {
450
- using lockSpan = this.tracer.span('storage', 'internal_lock');
451
- await replicationMutex.exclusiveLock(async () => {
452
- lockSpan.end();
453
- await this.session.withTransaction(async () => {
454
- try {
455
- await cb();
456
- }
457
- catch (e) {
458
- if (e instanceof mongo.MongoError && e.hasErrorLabel('TransientTransactionError')) {
459
- // Likely write conflict caused by concurrent write stream replicating
460
- }
461
- else {
462
- this.logger.warn('Transaction error', e);
463
- }
464
- const delay = Math.random() * 50;
465
- using _ = this.tracer.span('storage', 'retry_delay');
466
- await timers.setTimeout(delay);
467
- throw e;
468
- }
469
- }, { maxCommitTimeMS: 10000 });
470
- });
477
+ async fence(session = this.session, projection) {
478
+ // Graceful cancellation belongs to the source connector's page/batch boundary.
479
+ // It must still be able to persist progress for rows already flushed. Lease
480
+ // loss is different: the fence rejects every subsequent writer transaction.
481
+ return MongoSyncRulesLock.fence(this.db, this.replicationStreamId, this.options.replicationLock, session, projection);
471
482
  }
472
- async withReplicationTransaction(description, callback) {
473
- let flushTry = 0;
474
- const start = Date.now();
475
- const lastTry = start + 90000;
476
- const session = this.session;
477
- await this.withTransaction(async () => {
478
- flushTry += 1;
479
- if (flushTry % 10 == 0) {
480
- this.logger.info(`${description} - try ${flushTry}`);
481
- }
482
- if (flushTry > 20 && Date.now() > lastTry) {
483
- throw new ServiceError(ErrorCode.PSYNC_S1402, 'Max transaction tries exceeded');
483
+ async withTransaction(cb, session = this.session) {
484
+ return this.withFencedTransaction(() => this.fence(session), cb, session);
485
+ }
486
+ /** The first operation must modify the stream document conditional on lease ownership. */
487
+ async withFencedTransaction(acquireFence, cb, session = this.session) {
488
+ return this.withWriterLock(() => session.withTransaction(async () => {
489
+ const stream = await acquireFence();
490
+ try {
491
+ const result = await cb(stream);
492
+ this.options.replicationLock.throwIfAborted();
493
+ return result;
484
494
  }
485
- const next_op_id_doc = await this.db.op_id_sequence.findOneAndUpdate({
486
- _id: 'main'
487
- }, {
488
- $setOnInsert: { op_id: 0n },
489
- $set: {
490
- // Force update to ensure we get a mongo lock
491
- ts: Date.now()
495
+ catch (e) {
496
+ if (e instanceof OpIdRangeExhausted) {
497
+ throw e;
492
498
  }
493
- }, {
494
- upsert: true,
495
- returnDocument: 'after',
496
- session
497
- });
498
- const opSeq = new MongoIdSequence(next_op_id_doc?.op_id ?? 0n);
499
- await callback(session, opSeq);
500
- await this.db.op_id_sequence.updateOne({
501
- _id: 'main'
502
- }, {
503
- $set: {
504
- op_id: opSeq.last()
499
+ if (e instanceof mongo.MongoError && e.hasErrorLabel('TransientTransactionError')) {
500
+ // Likely write conflict caused by concurrent writes to this replication stream.
505
501
  }
506
- }, {
507
- session
508
- });
509
- await this.db.sync_rules.updateOne({
510
- _id: this.replicationStreamId
511
- }, {
512
- $set: {
513
- last_keepalive_ts: new Date()
502
+ else {
503
+ this.logger.warn('Transaction error', e);
514
504
  }
515
- }, { session });
516
- // Allow subclasses to persist additional flush-time state in the same transaction
517
- // (e.g. v3 advances the stream-level last_persisted_op).
518
- await this.onReplicationTransactionFlush(session, opSeq.last());
519
- // We don't notify checkpoint here - we don't make any checkpoint updates directly
505
+ const delay = Math.random() * 50;
506
+ using _ = this.tracer.span('storage', 'retry_delay');
507
+ await timers.setTimeout(delay);
508
+ throw e;
509
+ }
510
+ }, { maxCommitTimeMS: 10000, writeConcern: { w: 'majority' } }));
511
+ }
512
+ async withWriterLock(callback) {
513
+ using lockSpan = this.tracer.span('storage', 'internal_lock');
514
+ return this.options.replicationLock.writerMutex.exclusiveLock(async () => {
515
+ lockSpan.end();
516
+ this.options.replicationLock.throwIfAborted();
517
+ return callback();
520
518
  });
521
519
  }
522
- /**
523
- * Hook called inside the replication flush transaction, after ops have been persisted.
524
- *
525
- * The base implementation does nothing; v3 storage overrides this to `$max` the stream-level
526
- * `last_persisted_op` durably within the same transaction.
527
- */
528
- async onReplicationTransactionFlush(_session, _lastOp) {
529
- // No-op by default (v1 behaviour unchanged).
520
+ /** Single-document updates enforce ownership atomically, without a separate transaction. */
521
+ async updateStreamMetadata(set, filter = {}, writeConcern = { w: 'majority' }) {
522
+ await this.withWriterLock(() => this.writeStreamMetadata(set, filter, writeConcern));
523
+ }
524
+ /** Caller must already be inside a fenced transaction holding the writer mutex. */
525
+ async updateStreamMetadataInTransaction(set, filter = {}) {
526
+ await this.writeStreamMetadata(set, filter);
527
+ }
528
+ async writeStreamMetadata(set, filter, writeConcern) {
529
+ const result = await this.db.sync_rules.updateOne({ ...filter, ...MongoSyncRulesLock.ownerFilter(this.replicationStreamId, this.options.replicationLock) }, [{ $set: { ...set, ...MongoSyncRulesLock.heartbeatUpdate() } }], { session: this.session, ...(writeConcern == null ? {} : { writeConcern }) });
530
+ if (result.matchedCount === 0) {
531
+ throw new ReplicationAbortedError('Replication writer no longer owns the stream');
532
+ }
533
+ }
534
+ async withReplicationTransaction(description, callback, finish, projection) {
535
+ let flushTry = 0;
536
+ const lastTry = Date.now() + 90000;
537
+ const allocator = this.options.opIdAllocator;
538
+ let lastOp = 0n;
539
+ // Refill outside the publication transaction, before evaluating any rows.
540
+ // Exhaustion remains a fallback for large batches or a newer stream head.
541
+ this.options.replicationLock.throwIfAborted();
542
+ await allocator.ensureCapacity();
543
+ for (;;) {
544
+ try {
545
+ await this.withFencedTransaction(() => this.fence(this.session, projection), async (stream) => {
546
+ flushTry += 1;
547
+ if (flushTry % 10 == 0) {
548
+ this.logger.info(`${description} - try ${flushTry}`);
549
+ }
550
+ if (flushTry > 20 && Date.now() > lastTry) {
551
+ throw new ServiceError(ErrorCode.PSYNC_S1402, 'Max transaction tries exceeded');
552
+ }
553
+ // The fence already holds this stream document for the transaction.
554
+ // A different writer may have used higher IDs since our last flush.
555
+ const opSeq = allocator.sequence(this.persistedOpHead(stream));
556
+ await callback(this.session, opSeq);
557
+ lastOp = opSeq.last();
558
+ if (!(await finish?.(stream, lastOp))) {
559
+ const writes = this.db.createWriteBatch(this.session, { ordered: false });
560
+ // Allow subclasses to persist additional flush-time state in the same transaction.
561
+ this.onReplicationTransactionFlush(writes, lastOp);
562
+ await writes.execute();
563
+ }
564
+ // Notifications and cleanup must wait until the transaction commits.
565
+ });
566
+ allocator.committed(lastOp);
567
+ return;
568
+ }
569
+ catch (error) {
570
+ if (!(error instanceof OpIdRangeExhausted)) {
571
+ throw error;
572
+ }
573
+ // withTransaction has aborted every write. Reserve outside that transaction,
574
+ // then replay evaluation from the same committed stream head. Existing
575
+ // ranges can be reused on retry because no operation from this attempt committed.
576
+ this.options.replicationLock.throwIfAborted();
577
+ await allocator.reserve();
578
+ }
579
+ }
530
580
  }
531
581
  /**
532
582
  * Called after a replication transaction has successfully committed, with the last persisted op id.
533
583
  *
534
584
  * v1 storage tracks this in memory to fold into the next checkpoint. v3 storage does not need it:
535
585
  * the stream-level `last_persisted_op` is already advanced durably by
536
- * {@link onReplicationTransactionFlush} within the same transaction, and checkpoints read it
537
- * from the document.
586
+ * {@link onReplicationTransactionFlush} or the combined checkpoint update within the same
587
+ * transaction, and empty commits read it from the document.
538
588
  *
539
589
  * Keep calls to this adjacent to {@link withReplicationTransaction} usage - both must observe
540
590
  * every path that persists ops.
@@ -558,11 +608,12 @@ export class MongoBucketBatch extends BaseObserver {
558
608
  async save(record) {
559
609
  const { after, before, sourceTable, tag } = record;
560
610
  const storeCurrentData = this.storeCurrentData && sourceTable.storeCurrentData;
561
- // syncEvent is the per-table designation from resolveTables. With v3 storage, multiple
562
- // SourceTables can exist for the same ref, with a row change saved once per table -
563
- // only the designated event carrier may fire events, so each event fires once per row.
611
+ // V3 source tables own disjoint event-definition ids for each physical table. Multiple
612
+ // SourceTables may evaluate different events, but each definition is evaluated through
613
+ // at most one record for this row change.
614
+ // Legacy storage leaves eventDefinitionIds undefined and selects by table ref.
564
615
  if (sourceTable.syncEvent) {
565
- for (const event of this.getTableEvents(sourceTable)) {
616
+ for (const { event, eventId } of this.getTableEvents(sourceTable)) {
566
617
  this.iterateListeners((cb) => cb.replicationEvent?.({
567
618
  batch: this,
568
619
  table: sourceTable,
@@ -571,7 +622,8 @@ export class MongoBucketBatch extends BaseObserver {
571
622
  after: after && utils.isCompleteRow(storeCurrentData, after) ? after : undefined,
572
623
  before: before && utils.isCompleteRow(storeCurrentData, before) ? before : undefined
573
624
  },
574
- event
625
+ event,
626
+ event_id: eventId
575
627
  }));
576
628
  }
577
629
  }
@@ -600,7 +652,9 @@ export class MongoBucketBatch extends BaseObserver {
600
652
  const result = await this.flush();
601
653
  await this.withTransaction(async () => {
602
654
  for (let table of sourceTables) {
603
- await this.db.commonSourceTables(this.replicationStreamId).deleteOne({ _id: mongoTableId(table.id) });
655
+ await this.db
656
+ .commonSourceTables(this.replicationStreamId)
657
+ .deleteOne({ _id: mongoTableId(table.id) }, { session: this.session });
604
658
  }
605
659
  });
606
660
  await this.cleanupDroppedSourceTables(sourceTables);
@@ -695,10 +749,27 @@ export class MongoBucketBatch extends BaseObserver {
695
749
  });
696
750
  }
697
751
  /**
698
- * Gets relevant {@link SqlEventDescriptor}s for the given {@link SourceTable}
752
+ * Gets relevant {@link HydratedEventDescriptor}s for the given {@link SourceTable}
699
753
  */
700
754
  getTableEvents(table) {
701
- return this.sync_rules.eventDescriptors.filter((evt) => [...evt.getSourceTables()].some((sourceTable) => sourceTable.matches(table.ref)));
755
+ // V3 storage assigns event-definition ids to each source table, so membership is authoritative.
756
+ // Iterate the table's distinct ids and resolve each through the stream's deduped event map, so a
757
+ // definition reused across configs has one evaluator for that id. The evaluator may still return
758
+ // multiple payloads from matching queries. Legacy storage leaves this undefined and selects by table ref.
759
+ if (table.eventDefinitionIds != null) {
760
+ const eventById = this.options.parsedSyncConfig.eventById;
761
+ const events = [];
762
+ for (const id of table.eventDefinitionIds) {
763
+ const event = eventById.get(id);
764
+ if (event != null && event.tableTriggersEvent(table.ref)) {
765
+ events.push({ event, eventId: id });
766
+ }
767
+ }
768
+ return events;
769
+ }
770
+ return this.sync_rules.eventDescriptors
771
+ .filter((event) => event.tableTriggersEvent(table.ref))
772
+ .map((event) => ({ event }));
702
773
  }
703
774
  }
704
775
  //# sourceMappingURL=MongoBucketBatch.js.map