@powersync/service-module-mongodb-storage 0.0.0-dev-20260602073133 → 0.0.0-dev-20260803144812

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 (239) hide show
  1. package/CHANGELOG.md +101 -5
  2. package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.d.ts +3 -0
  3. package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js +41 -0
  4. package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js.map +1 -0
  5. package/dist/storage/MongoBucketStorage.d.ts +41 -16
  6. package/dist/storage/MongoBucketStorage.js +226 -71
  7. package/dist/storage/MongoBucketStorage.js.map +1 -1
  8. package/dist/storage/implementation/MongoBucketBatch.d.ts +56 -25
  9. package/dist/storage/implementation/MongoBucketBatch.js +110 -62
  10. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  11. package/dist/storage/implementation/MongoChecksums.d.ts +41 -13
  12. package/dist/storage/implementation/MongoChecksums.js +36 -121
  13. package/dist/storage/implementation/MongoChecksums.js.map +1 -1
  14. package/dist/storage/implementation/MongoCompactor.d.ts +17 -19
  15. package/dist/storage/implementation/MongoCompactor.js +80 -263
  16. package/dist/storage/implementation/MongoCompactor.js.map +1 -1
  17. package/dist/storage/implementation/MongoHydrationState.d.ts +11 -0
  18. package/dist/storage/implementation/MongoHydrationState.js +49 -0
  19. package/dist/storage/implementation/MongoHydrationState.js.map +1 -0
  20. package/dist/storage/implementation/MongoParameterCompactor.d.ts +7 -6
  21. package/dist/storage/implementation/MongoParameterCompactor.js +25 -2
  22. package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
  23. package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +13 -0
  24. package/dist/storage/implementation/MongoParsedSyncConfigSet.js +64 -0
  25. package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -0
  26. package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +36 -0
  27. package/dist/storage/implementation/MongoPersistedReplicationStream.js +90 -0
  28. package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -0
  29. package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +25 -0
  30. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +123 -0
  31. package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -0
  32. package/dist/storage/implementation/MongoStorageProvider.js +39 -4
  33. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  34. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +57 -29
  35. package/dist/storage/implementation/MongoSyncBucketStorage.js +87 -61
  36. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  37. package/dist/storage/implementation/MongoSyncRulesLock.d.ts +1 -1
  38. package/dist/storage/implementation/MongoSyncRulesLock.js +3 -3
  39. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  40. package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +2 -1
  41. package/dist/storage/implementation/MongoWriteCheckpointAPI.js +171 -24
  42. package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
  43. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +8 -0
  44. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js +2 -0
  45. package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js.map +1 -0
  46. package/dist/storage/implementation/common/PersistedBatch.d.ts +7 -2
  47. package/dist/storage/implementation/common/PersistedBatch.js +12 -0
  48. package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
  49. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +1 -1
  50. package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
  51. package/dist/storage/implementation/createMongoSyncBucketStorage.d.ts +2 -2
  52. package/dist/storage/implementation/createMongoSyncBucketStorage.js +4 -4
  53. package/dist/storage/implementation/createMongoSyncBucketStorage.js.map +1 -1
  54. package/dist/storage/implementation/db.js +17 -15
  55. package/dist/storage/implementation/db.js.map +1 -1
  56. package/dist/storage/implementation/models.d.ts +20 -13
  57. package/dist/storage/implementation/models.js.map +1 -1
  58. package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +9 -1
  59. package/dist/storage/implementation/v1/MongoBucketBatchV1.js +61 -29
  60. package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
  61. package/dist/storage/implementation/v1/MongoChecksumsV1.d.ts +4 -4
  62. package/dist/storage/implementation/v1/MongoChecksumsV1.js +119 -7
  63. package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -1
  64. package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +11 -2
  65. package/dist/storage/implementation/v1/MongoCompactorV1.js +251 -2
  66. package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
  67. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +18 -19
  68. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +82 -58
  69. package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
  70. package/dist/storage/implementation/v1/SingleBucketStoreV1.d.ts +9 -10
  71. package/dist/storage/implementation/v1/SingleBucketStoreV1.js +2 -8
  72. package/dist/storage/implementation/v1/SingleBucketStoreV1.js.map +1 -1
  73. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.d.ts +2 -1
  74. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js +3 -0
  75. package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js.map +1 -1
  76. package/dist/storage/implementation/v1/models.d.ts +10 -1
  77. package/dist/storage/implementation/v3/BucketDataContextV3.d.ts +13 -0
  78. package/dist/storage/implementation/v3/BucketDataContextV3.js +23 -0
  79. package/dist/storage/implementation/v3/BucketDataContextV3.js.map +1 -0
  80. package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +8 -4
  81. package/dist/storage/implementation/v3/MongoBucketBatchV3.js +309 -259
  82. package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
  83. package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +30 -9
  84. package/dist/storage/implementation/v3/MongoChecksumsV3.js +161 -20
  85. package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -1
  86. package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +40 -2
  87. package/dist/storage/implementation/v3/MongoCompactorV3.js +647 -23
  88. package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
  89. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +67 -0
  90. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +351 -0
  91. package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -0
  92. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +45 -30
  93. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +272 -140
  94. package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
  95. package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +6 -3
  96. package/dist/storage/implementation/v3/PersistedBatchV3.js +84 -21
  97. package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
  98. package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +3 -3
  99. package/dist/storage/implementation/v3/SourceRecordStoreV3.js +13 -11
  100. package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
  101. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +15 -13
  102. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +32 -27
  103. package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
  104. package/dist/storage/implementation/v3/bucket-format.d.ts +13 -0
  105. package/dist/storage/implementation/v3/bucket-format.js +77 -0
  106. package/dist/storage/implementation/v3/bucket-format.js.map +1 -0
  107. package/dist/storage/implementation/v3/chunking.d.ts +10 -0
  108. package/dist/storage/implementation/v3/chunking.js +30 -0
  109. package/dist/storage/implementation/v3/chunking.js.map +1 -0
  110. package/dist/storage/implementation/v3/models.d.ts +101 -21
  111. package/dist/storage/implementation/v3/models.js +11 -28
  112. package/dist/storage/implementation/v3/models.js.map +1 -1
  113. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +21 -0
  114. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +44 -0
  115. package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -0
  116. package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +30 -0
  117. package/dist/storage/implementation/v3/object-storage/ObjectStorage.js +12 -0
  118. package/dist/storage/implementation/v3/object-storage/ObjectStorage.js.map +1 -0
  119. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +70 -0
  120. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +146 -0
  121. package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -0
  122. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +42 -0
  123. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +285 -0
  124. package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -0
  125. package/dist/storage/implementation/v3/source-table-utils.d.ts +55 -0
  126. package/dist/storage/implementation/v3/source-table-utils.js +214 -0
  127. package/dist/storage/implementation/v3/source-table-utils.js.map +1 -0
  128. package/dist/storage/storage-index.d.ts +4 -4
  129. package/dist/storage/storage-index.js +4 -4
  130. package/dist/storage/storage-index.js.map +1 -1
  131. package/dist/types/types.d.ts +49 -3
  132. package/dist/types/types.js +48 -1
  133. package/dist/types/types.js.map +1 -1
  134. package/dist/utils/test-utils.d.ts +1 -2
  135. package/dist/utils/test-utils.js +7 -1
  136. package/dist/utils/test-utils.js.map +1 -1
  137. package/dist/utils/util.d.ts +9 -2
  138. package/dist/utils/util.js +128 -4
  139. package/dist/utils/util.js.map +1 -1
  140. package/package.json +12 -19
  141. package/src/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.ts +55 -0
  142. package/src/storage/MongoBucketStorage.ts +347 -88
  143. package/src/storage/implementation/MongoBucketBatch.ts +147 -82
  144. package/src/storage/implementation/MongoChecksums.ts +93 -153
  145. package/src/storage/implementation/MongoCompactor.ts +102 -316
  146. package/src/storage/implementation/MongoHydrationState.ts +61 -0
  147. package/src/storage/implementation/MongoParameterCompactor.ts +25 -6
  148. package/src/storage/implementation/MongoParsedSyncConfigSet.ts +88 -0
  149. package/src/storage/implementation/MongoPersistedReplicationStream.ts +118 -0
  150. package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +154 -0
  151. package/src/storage/implementation/MongoStorageProvider.ts +46 -4
  152. package/src/storage/implementation/MongoSyncBucketStorage.ts +121 -87
  153. package/src/storage/implementation/MongoSyncRulesLock.ts +7 -4
  154. package/src/storage/implementation/MongoWriteCheckpointAPI.ts +202 -28
  155. package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +9 -0
  156. package/src/storage/implementation/common/PersistedBatch.ts +19 -3
  157. package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +1 -1
  158. package/src/storage/implementation/createMongoSyncBucketStorage.ts +21 -7
  159. package/src/storage/implementation/db.ts +19 -20
  160. package/src/storage/implementation/models.ts +20 -14
  161. package/src/storage/implementation/v1/MongoBucketBatchV1.ts +75 -37
  162. package/src/storage/implementation/v1/MongoChecksumsV1.ts +154 -12
  163. package/src/storage/implementation/v1/MongoCompactorV1.ts +294 -9
  164. package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +142 -105
  165. package/src/storage/implementation/v1/SingleBucketStoreV1.ts +18 -27
  166. package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +11 -1
  167. package/src/storage/implementation/v1/models.ts +11 -1
  168. package/src/storage/implementation/v3/BucketDataContextV3.ts +32 -0
  169. package/src/storage/implementation/v3/MongoBucketBatchV3.ts +382 -321
  170. package/src/storage/implementation/v3/MongoChecksumsV3.ts +250 -32
  171. package/src/storage/implementation/v3/MongoCompactorV3.ts +847 -32
  172. package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +482 -0
  173. package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +359 -187
  174. package/src/storage/implementation/v3/PersistedBatchV3.ts +118 -37
  175. package/src/storage/implementation/v3/SourceRecordStoreV3.ts +12 -12
  176. package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +46 -36
  177. package/src/storage/implementation/v3/bucket-format.ts +97 -0
  178. package/src/storage/implementation/v3/chunking.ts +40 -0
  179. package/src/storage/implementation/v3/models.ts +132 -55
  180. package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +54 -0
  181. package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +29 -0
  182. package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +171 -0
  183. package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +343 -0
  184. package/src/storage/implementation/v3/source-table-utils.ts +392 -0
  185. package/src/storage/storage-index.ts +12 -4
  186. package/src/types/types.ts +58 -1
  187. package/src/utils/test-utils.ts +8 -3
  188. package/src/utils/util.ts +185 -6
  189. package/test/src/__snapshots__/storage.test.ts.snap +0 -75
  190. package/test/src/__snapshots__/storage_sync.test.ts.snap +35 -617
  191. package/test/src/cleanup-stopped-sync-configs.test.ts +671 -0
  192. package/test/src/helpers/MemoryObjectStorage.ts +53 -0
  193. package/test/src/helpers/s3TestFactory.ts +69 -0
  194. package/test/src/object_storage_lifecycle.test.ts +59 -0
  195. package/test/src/setup.ts +6 -1
  196. package/test/src/storage.test.ts +227 -13
  197. package/test/src/storage_compacting.test.ts +1951 -12
  198. package/test/src/storage_object_storage_inline_threshold.test.ts +116 -0
  199. package/test/src/storage_s3_checksums.test.ts +191 -0
  200. package/test/src/storage_s3_compaction_lifecycle.test.ts +417 -0
  201. package/test/src/storage_s3_reading.test.ts +526 -0
  202. package/test/src/storage_s3_writing.test.ts +135 -0
  203. package/test/src/storage_sync.test.ts +1180 -73
  204. package/test/src/storeCurrentData.test.ts +227 -0
  205. package/test/src/util.ts +2 -1
  206. package/tsconfig.json +1 -4
  207. package/tsconfig.tsbuildinfo +1 -1
  208. package/dist/storage/implementation/BucketDefinitionMapping.d.ts +0 -15
  209. package/dist/storage/implementation/BucketDefinitionMapping.js +0 -58
  210. package/dist/storage/implementation/BucketDefinitionMapping.js.map +0 -1
  211. package/dist/storage/implementation/MongoPersistedSyncRules.d.ts +0 -14
  212. package/dist/storage/implementation/MongoPersistedSyncRules.js +0 -67
  213. package/dist/storage/implementation/MongoPersistedSyncRules.js.map +0 -1
  214. package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +0 -29
  215. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +0 -76
  216. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +0 -1
  217. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.d.ts +0 -13
  218. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js +0 -2
  219. package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js.map +0 -1
  220. package/dist/storage/implementation/common/SingleBucketStore.d.ts +0 -54
  221. package/dist/storage/implementation/common/SingleBucketStore.js +0 -3
  222. package/dist/storage/implementation/common/SingleBucketStore.js.map +0 -1
  223. package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +0 -9
  224. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +0 -18
  225. package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +0 -1
  226. package/dist/storage/implementation/v3/MongoParameterLookupV3.d.ts +0 -4
  227. package/dist/storage/implementation/v3/MongoParameterLookupV3.js +0 -9
  228. package/dist/storage/implementation/v3/MongoParameterLookupV3.js.map +0 -1
  229. package/dist/storage/implementation/v3/SingleBucketStoreV3.d.ts +0 -18
  230. package/dist/storage/implementation/v3/SingleBucketStoreV3.js +0 -48
  231. package/dist/storage/implementation/v3/SingleBucketStoreV3.js.map +0 -1
  232. package/src/storage/implementation/BucketDefinitionMapping.ts +0 -75
  233. package/src/storage/implementation/MongoPersistedSyncRules.ts +0 -82
  234. package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +0 -101
  235. package/src/storage/implementation/common/MongoSyncBucketStorageContext.ts +0 -15
  236. package/src/storage/implementation/common/SingleBucketStore.ts +0 -63
  237. package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +0 -24
  238. package/src/storage/implementation/v3/MongoParameterLookupV3.ts +0 -11
  239. package/src/storage/implementation/v3/SingleBucketStoreV3.ts +0 -68
@@ -1,4 +1,4 @@
1
- import { SourceTable, storage } from '@powersync/service-core';
1
+ import { InternalOpId, SourceTable, storage } from '@powersync/service-core';
2
2
  import { MongoBucketBatch, MongoBucketBatchOptions } from '../MongoBucketBatch.js';
3
3
  import { PersistedBatch } from '../common/PersistedBatch.js';
4
4
  import { SourceRecordStore } from '../common/SourceRecordStore.js';
@@ -8,7 +8,15 @@ export declare class MongoBucketBatchV1 extends MongoBucketBatch {
8
8
  private readonly store;
9
9
  private needsActivation;
10
10
  private lastWaitingLogThrottled;
11
+ /**
12
+ * The last persisted op that is not yet covered by a checkpoint, if any.
13
+ *
14
+ * Seeded from the persisted keepalive_op, so that ops persisted before a restart can still be
15
+ * included in the next checkpoint.
16
+ */
17
+ private persisted_op;
11
18
  constructor(options: MongoBucketBatchOptions);
19
+ protected recordPersistedOp(lastOp: InternalOpId): void;
12
20
  protected createPersistedBatch(writtenSize: number): PersistedBatch;
13
21
  protected get sourceRecordStore(): SourceRecordStore;
14
22
  protected cleanupDroppedSourceTables(_tables: SourceTable[]): Promise<void>;
@@ -10,12 +10,23 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
10
10
  store;
11
11
  needsActivation = true;
12
12
  lastWaitingLogThrottled = 0;
13
+ /**
14
+ * The last persisted op that is not yet covered by a checkpoint, if any.
15
+ *
16
+ * Seeded from the persisted keepalive_op, so that ops persisted before a restart can still be
17
+ * included in the next checkpoint.
18
+ */
19
+ persisted_op = null;
13
20
  constructor(options) {
14
21
  super(options);
15
- this.store = new SourceRecordStoreV1(this.db, this.group_id);
22
+ this.persisted_op = options.keepaliveOp ?? null;
23
+ this.store = new SourceRecordStoreV1(this.db, this.replicationStreamId);
24
+ }
25
+ recordPersistedOp(lastOp) {
26
+ this.persisted_op = lastOp;
16
27
  }
17
28
  createPersistedBatch(writtenSize) {
18
- return new PersistedBatchV1(this.db, this.group_id, this.mapping, writtenSize, {
29
+ return new PersistedBatchV1(this.db, this.replicationStreamId, this.mapping, writtenSize, {
19
30
  logger: this.logger
20
31
  });
21
32
  }
@@ -26,9 +37,9 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
26
37
  // No-op for V1: source records live in a shared collection.
27
38
  }
28
39
  async resolveTables(options) {
29
- const syncRules = options.syncRules ?? this.sync_rules;
40
+ const syncRules = options.parsedSyncConfig?.hydratedSyncConfig ?? this.sync_rules;
30
41
  const { connection_id, source } = options;
31
- const { schema, name, objectId, replicaIdColumns, connectionTag } = source;
42
+ const { schema, name, objectId, replicaIdColumns, connectionTag, sendsCompleteRows } = source;
32
43
  const normalizedReplicaIdColumns = replicaIdColumns.map((column) => ({
33
44
  name: column.name,
34
45
  type: column.type,
@@ -36,9 +47,9 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
36
47
  }));
37
48
  let result = null;
38
49
  await this.db.client.withSession(async (session) => {
39
- const col = this.db.commonSourceTables(this.group_id);
50
+ const col = this.db.sourceTablesV1(this.replicationStreamId);
40
51
  const filter = {
41
- group_id: this.group_id,
52
+ group_id: this.replicationStreamId,
42
53
  connection_id,
43
54
  schema_name: schema,
44
55
  table_name: name,
@@ -51,7 +62,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
51
62
  if (doc == null) {
52
63
  doc = {
53
64
  _id: options.idGenerator ? options.idGenerator() : new bson.ObjectId(),
54
- group_id: this.group_id,
65
+ group_id: this.replicationStreamId,
55
66
  connection_id,
56
67
  relation_id: objectId,
57
68
  schema_name: schema,
@@ -74,6 +85,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
74
85
  sourceTable.syncEvent = syncRules.tableTriggersEvent(source);
75
86
  sourceTable.syncData = sourceTable.bucketDataSources.length > 0;
76
87
  sourceTable.syncParameters = sourceTable.parameterLookupSources.length > 0;
88
+ sourceTable.storeCurrentData = sendsCompleteRows !== true;
77
89
  sourceTable.snapshotStatus =
78
90
  doc.snapshot_status == null
79
91
  ? undefined
@@ -88,7 +100,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
88
100
  }
89
101
  const truncate = await col
90
102
  .find({
91
- group_id: this.group_id,
103
+ group_id: this.replicationStreamId,
92
104
  connection_id,
93
105
  _id: { $ne: doc._id },
94
106
  $or: truncateFilter
@@ -118,10 +130,10 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
118
130
  return result;
119
131
  }
120
132
  async getSourceTableStatus(table) {
121
- const doc = (await this.db.commonSourceTables(this.group_id).findOne({
122
- group_id: this.group_id,
133
+ const doc = await this.db.sourceTablesV1(this.replicationStreamId).findOne({
134
+ group_id: this.replicationStreamId,
123
135
  _id: mongoTableId(table.id)
124
- }, { session: this.session }));
136
+ }, { session: this.session });
125
137
  if (doc == null) {
126
138
  return null;
127
139
  }
@@ -154,6 +166,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
154
166
  async commit(lsn, options) {
155
167
  const { createEmptyCheckpoints } = { ...storage.DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS, ...options };
156
168
  await this.flush(options);
169
+ using _ = this.tracer.span('storage', 'commit');
157
170
  const now = new Date();
158
171
  await this.db.write_checkpoints.updateMany({
159
172
  processed_at_lsn: null,
@@ -196,7 +209,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
196
209
  '$last_checkpoint'
197
210
  ]
198
211
  };
199
- const preUpdateDocument = (await this.db.sync_rules.findOneAndUpdate({ _id: this.group_id }, [
212
+ const preUpdateDocument = (await this.db.sync_rules.findOneAndUpdate({ _id: this.replicationStreamId }, [
200
213
  {
201
214
  $set: {
202
215
  _can_checkpoint: can_checkpoint,
@@ -244,7 +257,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
244
257
  }
245
258
  }));
246
259
  if (preUpdateDocument == null) {
247
- throw new ReplicationAssertionError('Failed to update checkpoint - no matching sync_rules document for _id: ' + this.group_id);
260
+ throw new ReplicationAssertionError('Failed to update checkpoint - no matching sync_rules document for _id: ' + this.replicationStreamId);
248
261
  }
249
262
  const checkpointState = calculateCheckpointState({
250
263
  lsn,
@@ -273,7 +286,6 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
273
286
  await this.autoActivate(lsn);
274
287
  await this.db.notifyCheckpoint();
275
288
  this.persisted_op = null;
276
- this.last_checkpoint_lsn = lsn;
277
289
  if (checkpointState.newLastCheckpoint != null) {
278
290
  await this.sourceRecordStore.postCommitCleanup(checkpointState.newLastCheckpoint, this.logger);
279
291
  }
@@ -287,17 +299,24 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
287
299
  return await this.commit(lsn, { createEmptyCheckpoints: true });
288
300
  }
289
301
  async setResumeLsn(lsn) {
302
+ using _ = this.tracer.span('storage', 'set_resume_lsn');
290
303
  await this.db.sync_rules.updateOne({
291
- _id: this.group_id
304
+ _id: this.replicationStreamId
292
305
  }, {
293
306
  $set: {
294
307
  snapshot_lsn: lsn
295
308
  }
296
- }, { session: this.session });
309
+ }, {
310
+ session: this.session,
311
+ // Losing occasional resume LSN is fine. That may mean reprocessing
312
+ // some source changes in some edge cases, which is not an issue since
313
+ // changes are processed in an idempotent way.
314
+ writeConcern: { w: 1 }
315
+ });
297
316
  }
298
317
  async markAllSnapshotDone(no_checkpoint_before_lsn) {
299
318
  await this.db.sync_rules.updateOne({
300
- _id: this.group_id
319
+ _id: this.replicationStreamId
301
320
  }, {
302
321
  $set: {
303
322
  snapshot_done: true,
@@ -311,13 +330,19 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
311
330
  async markSnapshotDone(no_checkpoint_before_lsn, options) {
312
331
  await this.withTransaction(async () => {
313
332
  // Protect against race conditions
314
- const count = await this.db.commonSourceTables(this.group_id).countDocuments({
315
- group_id: this.group_id,
333
+ const blockingTables = await this.db
334
+ .sourceTablesV1(this.replicationStreamId)
335
+ .find({
336
+ group_id: this.replicationStreamId,
316
337
  snapshot_done: false
317
- }, { session: this.session });
318
- if (count > 0) {
338
+ }, {
339
+ session: this.session,
340
+ projection: { schema_name: 1, table_name: 1 }
341
+ })
342
+ .toArray();
343
+ if (blockingTables.length > 0) {
319
344
  if (options?.throwOnConflict ?? true) {
320
- throw new ReplicationAssertionError(`Cannot mark snapshot done while ${count} source table${count == 1 ? '' : 's'} still require snapshotting`);
345
+ throw new ReplicationAssertionError(`Cannot mark snapshot done while source tables still require snapshotting. Tables: ${blockingTables.map((t) => `${t.schema_name}.${t.table_name}`).join(', ')}`);
321
346
  }
322
347
  else {
323
348
  return;
@@ -328,7 +353,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
328
353
  }
329
354
  async markTableSnapshotRequired(_table) {
330
355
  await this.db.sync_rules.updateOne({
331
- _id: this.group_id
356
+ _id: this.replicationStreamId
332
357
  }, {
333
358
  $set: {
334
359
  snapshot_done: false
@@ -339,7 +364,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
339
364
  const session = this.session;
340
365
  const ids = tables.map((table) => mongoTableId(table.id));
341
366
  await this.withTransaction(async () => {
342
- await this.db.commonSourceTables(this.group_id).updateMany({ _id: { $in: ids } }, {
367
+ await this.db.sourceTablesV1(this.replicationStreamId).updateMany({ _id: { $in: ids } }, {
343
368
  $set: {
344
369
  snapshot_done: true
345
370
  },
@@ -349,7 +374,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
349
374
  }, { session });
350
375
  if (no_checkpoint_before_lsn != null) {
351
376
  await this.db.sync_rules.updateOne({
352
- _id: this.group_id
377
+ _id: this.replicationStreamId
353
378
  }, {
354
379
  $set: {
355
380
  last_keepalive_ts: new Date()
@@ -372,18 +397,22 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
372
397
  }
373
398
  const session = this.session;
374
399
  let activated = false;
400
+ let needsFutureActivationCheck = true;
375
401
  await session.withTransaction(async () => {
376
- const doc = (await this.db.sync_rules.findOne({ _id: this.group_id }, { session }));
402
+ // Reset on transaction retries.
403
+ activated = false;
404
+ needsFutureActivationCheck = true;
405
+ const doc = (await this.db.sync_rules.findOne({ _id: this.replicationStreamId }, { session }));
377
406
  if (doc && doc.state == storage.SyncRuleState.PROCESSING && doc.snapshot_done && doc.last_checkpoint != null) {
378
407
  await this.db.sync_rules.updateOne({
379
- _id: this.group_id
408
+ _id: this.replicationStreamId
380
409
  }, {
381
410
  $set: {
382
411
  state: storage.SyncRuleState.ACTIVE
383
412
  }
384
413
  }, { session });
385
414
  await this.db.sync_rules.updateMany({
386
- _id: { $ne: this.group_id },
415
+ _id: { $ne: this.replicationStreamId },
387
416
  state: { $in: [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED] }
388
417
  }, {
389
418
  $set: {
@@ -393,7 +422,7 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
393
422
  activated = true;
394
423
  }
395
424
  else if (doc?.state != storage.SyncRuleState.PROCESSING) {
396
- this.needsActivation = false;
425
+ needsFutureActivationCheck = false;
397
426
  }
398
427
  });
399
428
  if (activated) {
@@ -401,6 +430,9 @@ export class MongoBucketBatchV1 extends MongoBucketBatch {
401
430
  await this.db.notifyCheckpoint();
402
431
  this.needsActivation = false;
403
432
  }
433
+ else if (!needsFutureActivationCheck) {
434
+ this.needsActivation = false;
435
+ }
404
436
  }
405
437
  }
406
438
  //# sourceMappingURL=MongoBucketBatchV1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MongoBucketBatchV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/MongoBucketBatchV1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoBucketBatchV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/MongoBucketBatchV1.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { BucketChecksum, FetchPartialBucketChecksum, InternalOpId, PartialChecksumMap } from '@powersync/service-core';
2
- import { FetchPartialBucketChecksumByBucket, MongoChecksums } from '../MongoChecksums.js';
2
+ import { FetchPartialBucketChecksumByBucket, MongoChecksums, MongoChecksumSessionContext } from '../MongoChecksums.js';
3
3
  import { VersionedPowerSyncMongoV1 } from './VersionedPowerSyncMongoV1.js';
4
4
  export declare class MongoChecksumsV1 extends MongoChecksums {
5
5
  protected readonly db: VersionedPowerSyncMongoV1;
6
- computePartialChecksumsDirectByBucket(batch: FetchPartialBucketChecksumByBucket[]): Promise<PartialChecksumMap>;
7
- protected fetchPreStates(batch: FetchPartialBucketChecksum[]): Promise<Map<string, {
6
+ computePartialChecksumsDirectByBucket(batch: FetchPartialBucketChecksumByBucket[], context: MongoChecksumSessionContext): Promise<PartialChecksumMap>;
7
+ protected fetchPreStates(batch: FetchPartialBucketChecksum[], context: MongoChecksumSessionContext): Promise<Map<string, {
8
8
  opId: InternalOpId;
9
9
  checksum: BucketChecksum;
10
10
  }>>;
11
- protected computePartialChecksumsInternal(batch: FetchPartialBucketChecksum[]): Promise<PartialChecksumMap>;
11
+ protected computePartialChecksumsInternal(batch: FetchPartialBucketChecksum[], context: MongoChecksumSessionContext): Promise<PartialChecksumMap>;
12
12
  }
@@ -1,8 +1,10 @@
1
- import { bson } from '@powersync/service-core';
2
- import { MongoChecksums } from '../MongoChecksums.js';
1
+ import * as lib_mongo from '@powersync/lib-service-mongodb';
2
+ import { addPartialChecksums, bson, isPartialChecksum } from '@powersync/service-core';
3
+ import { checksumFromAggregate, DEFAULT_OPERATION_BATCH_LIMIT, MongoChecksums } from '../MongoChecksums.js';
3
4
  export class MongoChecksumsV1 extends MongoChecksums {
4
- async computePartialChecksumsDirectByBucket(batch) {
5
- return this.computePartialChecksumsForCollection(batch, this.db.bucketDataV1, (request) => ({
5
+ async computePartialChecksumsDirectByBucket(batch, context) {
6
+ const collection = this.db.bucketDataV1;
7
+ const createFilter = (request) => ({
6
8
  _id: {
7
9
  $gt: {
8
10
  g: this.group_id,
@@ -15,9 +17,117 @@ export class MongoChecksumsV1 extends MongoChecksums {
15
17
  o: request.end
16
18
  }
17
19
  }
20
+ });
21
+ const batchLimit = this.options?.operationBatchLimit ?? DEFAULT_OPERATION_BATCH_LIMIT;
22
+ // Map requests by bucket. We adjust this as we get partial results.
23
+ let requests = new Map();
24
+ for (let request of batch) {
25
+ requests.set(request.bucket, request);
26
+ }
27
+ const partialChecksums = new Map();
28
+ while (requests.size > 0) {
29
+ const filters = Array.from(requests.values(), createFilter);
30
+ // Historically, checksum may be stored as 'int' or 'double'.
31
+ // More recently, this should be a 'long'.
32
+ // $toLong ensures that we always sum it as a long, avoiding inaccuracies in the calculations.
33
+ const checksumLong = this.storageConfig.longChecksums ? '$checksum' : { $toLong: '$checksum' };
34
+ // Aggregate over a max of `batchLimit` operations at a time.
35
+ // Let's say we have 3 buckets (A, B, C), each with 10 operations, and our batch limit is 12.
36
+ // Then we'll do three batches:
37
+ // 1. Query: A[1-end], B[1-end], C[1-end]
38
+ // Returns: A[1-10], B[1-2]
39
+ // 2. Query: B[3-end], C[1-end]
40
+ // Returns: B[3-10], C[1-4]
41
+ // 3. Query: C[5-end]
42
+ // Returns: C[5-10]
43
+ const aggregate = await collection
44
+ .aggregate([
45
+ {
46
+ $match: {
47
+ $or: filters
48
+ }
49
+ },
50
+ // sort and limit _before_ grouping
51
+ { $sort: { _id: 1 } },
52
+ { $limit: batchLimit },
53
+ {
54
+ $group: {
55
+ _id: '$_id.b',
56
+ checksum_total: { $sum: checksumLong },
57
+ count: { $sum: 1 },
58
+ has_clear_op: {
59
+ $max: {
60
+ $cond: [{ $eq: ['$op', 'CLEAR'] }, 1, 0]
61
+ }
62
+ },
63
+ last_op: { $max: '$_id.o' }
64
+ }
65
+ },
66
+ // Sort the aggregated results (100 max, so should be fast).
67
+ // This is important to identify which buckets we have partial data for.
68
+ { $sort: { _id: 1 } }
69
+ ], {
70
+ ...context.readOptions,
71
+ maxTimeMS: lib_mongo.MONGO_CHECKSUM_TIMEOUT_MS
72
+ })
73
+ .toArray()
74
+ .catch((e) => {
75
+ throw lib_mongo.mapQueryError(e, 'while reading checksums');
76
+ });
77
+ let batchCount = 0;
78
+ let limitReached = false;
79
+ for (let doc of aggregate) {
80
+ const bucket = doc._id;
81
+ const checksum = checksumFromAggregate(doc);
82
+ const existing = partialChecksums.get(bucket);
83
+ if (existing != null) {
84
+ partialChecksums.set(bucket, addPartialChecksums(bucket, existing, checksum));
85
+ }
86
+ else {
87
+ partialChecksums.set(bucket, checksum);
88
+ }
89
+ batchCount += doc.count;
90
+ if (batchCount == batchLimit) {
91
+ // Limit reached. Request more in the next batch.
92
+ // Note that this only affects the _last_ bucket in a batch.
93
+ limitReached = true;
94
+ const req = requests.get(bucket);
95
+ requests.set(bucket, {
96
+ ...req,
97
+ start: doc.last_op
98
+ });
99
+ }
100
+ else {
101
+ // All done for this bucket
102
+ requests.delete(bucket);
103
+ }
104
+ }
105
+ if (!limitReached) {
106
+ break;
107
+ }
108
+ }
109
+ return new Map(batch.map((request) => {
110
+ const bucket = request.bucket;
111
+ let partialChecksum = partialChecksums.get(bucket);
112
+ // Could be null if we got no data
113
+ if (partialChecksum == null) {
114
+ partialChecksum = {
115
+ bucket,
116
+ partialCount: 0,
117
+ partialChecksum: 0
118
+ };
119
+ }
120
+ if (request.start == null && isPartialChecksum(partialChecksum)) {
121
+ partialChecksum = {
122
+ bucket,
123
+ count: partialChecksum.partialCount,
124
+ checksum: partialChecksum.partialChecksum
125
+ };
126
+ }
127
+ return [bucket, partialChecksum];
18
128
  }));
19
129
  }
20
- async fetchPreStates(batch) {
130
+ async fetchPreStates(batch, context) {
21
131
  const preFilters = batch
22
132
  .filter((request) => request.start == null)
23
133
  .map((request) => ({
@@ -34,6 +144,8 @@ export class MongoChecksumsV1 extends MongoChecksums {
34
144
  const states = await this.db.bucketStateV1
35
145
  .find({
36
146
  $or: preFilters
147
+ }, {
148
+ ...context.readOptions
37
149
  })
38
150
  .toArray();
39
151
  for (const state of states) {
@@ -49,8 +161,8 @@ export class MongoChecksumsV1 extends MongoChecksums {
49
161
  }
50
162
  return preStates;
51
163
  }
52
- async computePartialChecksumsInternal(batch) {
53
- return this.computePartialChecksumsDirectByBucket(batch);
164
+ async computePartialChecksumsInternal(batch, context) {
165
+ return this.computePartialChecksumsDirectByBucket(batch, context);
54
166
  }
55
167
  }
56
168
  //# sourceMappingURL=MongoChecksumsV1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MongoChecksumsV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/MongoChecksumsV1.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAKL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAsC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG1F,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAGlD,KAAK,CAAC,qCAAqC,CACzC,KAA2C;QAE3C,OAAO,IAAI,CAAC,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1F,GAAG,EAAE;gBACH,GAAG,EAAE;oBACH,CAAC,EAAE,IAAI,CAAC,QAAQ;oBAChB,CAAC,EAAE,OAAO,CAAC,MAAM;oBACjB,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;iBACtC;gBACD,IAAI,EAAE;oBACJ,CAAC,EAAE,IAAI,CAAC,QAAQ;oBAChB,CAAC,EAAE,OAAO,CAAC,MAAM;oBACjB,CAAC,EAAE,OAAO,CAAC,GAAG;iBACf;aACF;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,KAAmC;QAEnC,MAAM,UAAU,GAAG,KAAK;aACrB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;aAC1C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjB,GAAG,EAAE;gBACH,CAAC,EAAE,IAAI,CAAC,QAAQ;gBAChB,CAAC,EAAE,OAAO,CAAC,MAAM;aAClB;YACD,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;SAC9D,CAAC,CAAC,CAAC;QAEN,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4D,CAAC;QACtF,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa;aACvC,IAAI,CAAC;YACJ,GAAG,EAAE,UAAU;SAChB,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAG,KAAK,CAAC,eAAgB,CAAC;YAC9C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,EAAE,cAAc,CAAC,KAAK;gBAC1B,QAAQ,EAAE;oBACR,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACzC,KAAK,EAAE,cAAc,CAAC,KAAK;iBAC5B;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,+BAA+B,CAAC,KAAmC;QACjF,OAAO,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"MongoChecksumsV1.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v1/MongoChecksumsV1.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { mongo } from '@powersync/lib-service-mongodb';
2
2
  import { storage } from '@powersync/service-core';
3
3
  import { BucketDefinitionId } from '@powersync/service-sync-rules';
4
- import { SingleBucketStore } from '../common/SingleBucketStore.js';
5
4
  import { BucketStateDocumentBase } from '../models.js';
6
5
  import { DirtyBucket, MongoCompactor } from '../MongoCompactor.js';
7
6
  import type { MongoSyncBucketStorageV1 } from './MongoSyncBucketStorageV1.js';
@@ -9,6 +8,7 @@ import { VersionedPowerSyncMongoV1 } from './VersionedPowerSyncMongoV1.js';
9
8
  export declare class MongoCompactorV1 extends MongoCompactor {
10
9
  protected readonly db: VersionedPowerSyncMongoV1;
11
10
  protected readonly storage: MongoSyncBucketStorageV1;
11
+ private updates;
12
12
  dirtyBucketBatches(options: {
13
13
  minBucketChanges: number;
14
14
  minChangeRatio: number;
@@ -19,5 +19,14 @@ export declare class MongoCompactorV1 extends MongoCompactor {
19
19
  protected writeBucketStateUpdates(): Promise<void>;
20
20
  protected computeChecksumsForBuckets(buckets: Pick<DirtyBucket, 'bucket' | 'definitionId'>[]): Promise<storage.PartialChecksumMap>;
21
21
  protected bucketStateFilter(bucket: string, _definitionId: BucketDefinitionId | null): mongo.Filter<BucketStateDocumentBase>;
22
- protected getBucketDataContext(bucket: string, _definitionId: BucketDefinitionId | null): Promise<SingleBucketStore | null>;
22
+ private getBucketDataContext;
23
+ protected compactSingleBucket(bucket: string): Promise<void>;
24
+ private flush;
25
+ /**
26
+ * Perform a CLEAR compact for a bucket.
27
+ *
28
+ * @param currentState tracks the last non-PUT op, which will be converted to CLEAR.
29
+ */
30
+ private clearBucket;
31
+ private formatBucketDataKey;
23
32
  }