@powersync/service-module-mongodb-storage 0.0.0-dev-20250122110924 → 0.0.0-dev-20250227082606

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 (53) hide show
  1. package/CHANGELOG.md +101 -10
  2. package/dist/migrations/MongoMigrationAgent.js +3 -0
  3. package/dist/migrations/MongoMigrationAgent.js.map +1 -1
  4. package/dist/storage/MongoBucketStorage.d.ts +9 -20
  5. package/dist/storage/MongoBucketStorage.js +86 -199
  6. package/dist/storage/MongoBucketStorage.js.map +1 -1
  7. package/dist/storage/implementation/MongoBucketBatch.d.ts +3 -3
  8. package/dist/storage/implementation/MongoBucketBatch.js +37 -24
  9. package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
  10. package/dist/storage/implementation/MongoCompactor.d.ts +0 -6
  11. package/dist/storage/implementation/MongoCompactor.js +11 -4
  12. package/dist/storage/implementation/MongoCompactor.js.map +1 -1
  13. package/dist/storage/implementation/MongoIdSequence.js +1 -0
  14. package/dist/storage/implementation/MongoIdSequence.js.map +1 -1
  15. package/dist/storage/implementation/MongoPersistedSyncRules.js +4 -0
  16. package/dist/storage/implementation/MongoPersistedSyncRules.js.map +1 -1
  17. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +9 -1
  18. package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +1 -1
  19. package/dist/storage/implementation/MongoStorageProvider.js +3 -1
  20. package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
  21. package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +16 -3
  22. package/dist/storage/implementation/MongoSyncBucketStorage.js +225 -22
  23. package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
  24. package/dist/storage/implementation/MongoSyncRulesLock.js +5 -1
  25. package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
  26. package/dist/storage/implementation/MongoWriteCheckpointAPI.js +3 -2
  27. package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
  28. package/dist/storage/implementation/OperationBatch.js +10 -6
  29. package/dist/storage/implementation/OperationBatch.js.map +1 -1
  30. package/dist/storage/implementation/PersistedBatch.js +18 -18
  31. package/dist/storage/implementation/PersistedBatch.js.map +1 -1
  32. package/dist/storage/implementation/db.d.ts +1 -1
  33. package/dist/storage/implementation/db.js +15 -3
  34. package/dist/storage/implementation/db.js.map +1 -1
  35. package/dist/storage/implementation/models.d.ts +1 -0
  36. package/dist/storage/implementation/util.d.ts +0 -14
  37. package/dist/storage/implementation/util.js +3 -41
  38. package/dist/storage/implementation/util.js.map +1 -1
  39. package/package.json +8 -8
  40. package/src/storage/MongoBucketStorage.ts +88 -232
  41. package/src/storage/implementation/MongoBucketBatch.ts +12 -10
  42. package/src/storage/implementation/MongoCompactor.ts +2 -10
  43. package/src/storage/implementation/MongoStorageProvider.ts +3 -1
  44. package/src/storage/implementation/MongoSyncBucketStorage.ts +292 -37
  45. package/src/storage/implementation/MongoWriteCheckpointAPI.ts +1 -3
  46. package/src/storage/implementation/PersistedBatch.ts +4 -5
  47. package/src/storage/implementation/db.ts +3 -3
  48. package/src/storage/implementation/models.ts +5 -0
  49. package/src/storage/implementation/util.ts +0 -45
  50. package/test/src/__snapshots__/storage_sync.test.ts.snap +138 -0
  51. package/test/src/storage_compacting.test.ts +1 -7
  52. package/test/src/storage_sync.test.ts +1 -1
  53. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,21 +1,112 @@
1
1
  # @powersync/service-module-mongodb-storage
2
2
 
3
- ## 0.0.0-dev-20250122110924
3
+ ## 0.0.0-dev-20250227082606
4
+
5
+ ### Minor Changes
6
+
7
+ - 7f8d223: Make some service limits configurable.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [7f8d223]
12
+ - @powersync/service-core@0.0.0-dev-20250227082606
13
+ - @powersync/lib-service-mongodb@0.0.0-dev-20250227082606
14
+ - @powersync/service-types@0.0.0-dev-20250227082606
15
+
16
+ ## 0.6.1
17
+
18
+ ### Patch Changes
19
+
20
+ - b4fe4ae: Upgrade mongodb and bson packages, removing the need for some workarounds.
21
+ - 88ab679: Keep serving current data when restarting replication due to errors.
22
+ - 2f75fd7: Improve handling of some edge cases which could trigger truncating of synced tables.
23
+ - 346382e: Unified compacting options between storage providers.
24
+ - Updated dependencies [b4fe4ae]
25
+ - Updated dependencies [88ab679]
26
+ - Updated dependencies [2f75fd7]
27
+ - Updated dependencies [346382e]
28
+ - Updated dependencies [9b1868d]
29
+ - @powersync/service-core@1.7.1
30
+ - @powersync/lib-services-framework@0.5.3
31
+ - @powersync/lib-service-mongodb@0.4.3
32
+
33
+ ## 0.6.0
34
+
35
+ ### Minor Changes
36
+
37
+ - 436eee6: Minor optimizations to new checkpoint calulations.
38
+
39
+ ### Patch Changes
40
+
41
+ - 88d4cb3: Fix signed integer overflow issue for int64 values from MongoDB.
42
+ - Updated dependencies [436eee6]
43
+ - Updated dependencies [15283d4]
44
+ - Updated dependencies [88d4cb3]
45
+ - Updated dependencies [f55e36a]
46
+ - @powersync/service-core@1.7.0
47
+ - @powersync/service-sync-rules@0.24.0
48
+ - @powersync/lib-services-framework@0.5.2
49
+ - @powersync/lib-service-mongodb@0.4.2
50
+
51
+ ## 0.5.1
52
+
53
+ ### Patch Changes
54
+
55
+ - Updated dependencies [ffc8d98]
56
+ - @powersync/service-core@0.18.1
57
+
58
+ ## 0.5.0
59
+
60
+ ### Minor Changes
61
+
62
+ - 4b43cdb: Exit replication process when sync rules are not valid; configurable with a new `sync_rules.exit_on_error` option.
63
+
64
+ ### Patch Changes
65
+
66
+ - Updated dependencies [e26e434]
67
+ - Updated dependencies [4b43cdb]
68
+ - Updated dependencies [9a9e668]
69
+ - @powersync/service-sync-rules@0.23.4
70
+ - @powersync/service-core@0.18.0
71
+ - @powersync/service-types@0.8.0
72
+ - @powersync/lib-services-framework@0.5.1
73
+ - @powersync/lib-service-mongodb@0.4.1
74
+
75
+ ## 0.4.0
76
+
77
+ ### Minor Changes
78
+
79
+ - 23fb49f: Added the ability to skip creating empty sync checkpoints if no changes were present in a batch.
80
+
81
+ ### Patch Changes
82
+
83
+ - Updated dependencies [23fb49f]
84
+ - @powersync/service-core@0.17.0
85
+
86
+ ## 0.3.2
87
+
88
+ ### Patch Changes
89
+
90
+ - Updated dependencies [5043a82]
91
+ - @powersync/service-sync-rules@0.23.3
92
+ - @powersync/service-core@0.16.1
93
+
94
+ ## 0.3.1
4
95
 
5
96
  ### Patch Changes
6
97
 
7
- - a0a4cbb: Introduce standard error codes
8
- - Updated dependencies [a0a4cbb]
98
+ - f049aa9: Introduce standard error codes
99
+ - Updated dependencies [f049aa9]
9
100
  - Updated dependencies [8675236]
10
- - Updated dependencies [50e5810]
101
+ - Updated dependencies [f049aa9]
11
102
  - Updated dependencies [8675236]
12
103
  - Updated dependencies [8675236]
13
- - Updated dependencies [a0a4cbb]
14
- - @powersync/service-core@0.0.0-dev-20250122110924
15
- - @powersync/service-sync-rules@0.0.0-dev-20250122110924
16
- - @powersync/service-types@0.0.0-dev-20250122110924
17
- - @powersync/lib-services-framework@0.0.0-dev-20250122110924
18
- - @powersync/lib-service-mongodb@0.0.0-dev-20250122110924
104
+ - Updated dependencies [f049aa9]
105
+ - @powersync/service-core@0.16.0
106
+ - @powersync/service-sync-rules@0.23.2
107
+ - @powersync/service-types@0.7.1
108
+ - @powersync/lib-services-framework@0.5.0
109
+ - @powersync/lib-service-mongodb@0.4.0
19
110
 
20
111
  ## 0.3.0
21
112
 
@@ -9,6 +9,9 @@ const __dirname = path.dirname(__filename);
9
9
  const MONGO_LOCK_PROCESS = 'migrations';
10
10
  const MIGRATIONS_DIR = path.join(__dirname, '/db/migrations');
11
11
  export class MongoMigrationAgent extends migrations.AbstractPowerSyncMigrationAgent {
12
+ store;
13
+ locks;
14
+ client;
12
15
  constructor(mongoConfig) {
13
16
  super();
14
17
  this.client = createPowerSyncMongo(mongoConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"MongoMigrationAgent.js","sourceRoot":"","sources":["../../src/migrations/MongoMigrationAgent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAE9D,MAAM,OAAO,mBAAoB,SAAQ,UAAU,CAAC,+BAA+B;IAMjF,YAAY,WAA+B;QACzC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,qBAAqB;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"MongoMigrationAgent.js","sourceRoot":"","sources":["../../src/migrations/MongoMigrationAgent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAE9D,MAAM,OAAO,mBAAoB,SAAQ,UAAU,CAAC,+BAA+B;IACjF,KAAK,CAA2B;IAChC,KAAK,CAAwB;IAEnB,MAAM,CAAiB;IAEjC,YAAY,WAA+B;QACzC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,qBAAqB;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;CACF"}
@@ -1,22 +1,21 @@
1
- import { storage } from '@powersync/service-core';
2
- import { DisposableObserver } from '@powersync/lib-services-framework';
1
+ import { GetIntanceOptions, storage } from '@powersync/service-core';
2
+ import { BaseObserver } from '@powersync/lib-services-framework';
3
3
  import { PowerSyncMongo } from './implementation/db.js';
4
4
  import { MongoPersistedSyncRulesContent } from './implementation/MongoPersistedSyncRulesContent.js';
5
5
  import { MongoSyncBucketStorage } from './implementation/MongoSyncBucketStorage.js';
6
- export declare class MongoBucketStorage extends DisposableObserver<storage.BucketStorageFactoryListener> implements storage.BucketStorageFactory {
6
+ export declare class MongoBucketStorage extends BaseObserver<storage.BucketStorageFactoryListener> implements storage.BucketStorageFactory {
7
7
  private readonly client;
8
8
  private readonly session;
9
9
  readonly slot_name_prefix: string;
10
- private readonly storageCache;
10
+ private activeStorageCache;
11
11
  readonly db: PowerSyncMongo;
12
12
  constructor(db: PowerSyncMongo, options: {
13
13
  slot_name_prefix: string;
14
14
  });
15
15
  [Symbol.asyncDispose](): Promise<void>;
16
- getInstance(options: storage.PersistedSyncRulesContent): MongoSyncBucketStorage;
17
- configureSyncRules(sync_rules: string, options?: {
18
- lock?: boolean;
19
- }): Promise<{
16
+ getInstance(syncRules: storage.PersistedSyncRulesContent, options?: GetIntanceOptions): MongoSyncBucketStorage;
17
+ getSystemIdentifier(): Promise<storage.BucketStorageSystemIdentifier>;
18
+ configureSyncRules(options: storage.UpdateSyncRulesOptions): Promise<{
20
19
  updated: boolean;
21
20
  persisted_sync_rules?: undefined;
22
21
  lock?: undefined;
@@ -25,7 +24,7 @@ export declare class MongoBucketStorage extends DisposableObserver<storage.Bucke
25
24
  persisted_sync_rules: MongoPersistedSyncRulesContent;
26
25
  lock: import("./storage-index.js").MongoSyncRulesLock | undefined;
27
26
  }>;
28
- slotRemoved(slot_name: string): Promise<void>;
27
+ restartReplication(sync_rules_group_id: number): Promise<void>;
29
28
  updateSyncRules(options: storage.UpdateSyncRulesOptions): Promise<MongoPersistedSyncRulesContent>;
30
29
  getActiveSyncRulesContent(): Promise<MongoPersistedSyncRulesContent | null>;
31
30
  getActiveSyncRules(options: storage.ParseSyncRulesOptions): Promise<storage.PersistedSyncRules | null>;
@@ -33,17 +32,7 @@ export declare class MongoBucketStorage extends DisposableObserver<storage.Bucke
33
32
  getNextSyncRules(options: storage.ParseSyncRulesOptions): Promise<storage.PersistedSyncRules | null>;
34
33
  getReplicatingSyncRules(): Promise<storage.PersistedSyncRulesContent[]>;
35
34
  getStoppedSyncRules(): Promise<storage.PersistedSyncRulesContent[]>;
36
- getActiveCheckpoint(): Promise<storage.ActiveCheckpoint>;
35
+ getActiveStorage(): Promise<MongoSyncBucketStorage | null>;
37
36
  getStorageMetrics(): Promise<storage.StorageMetrics>;
38
37
  getPowerSyncInstanceId(): Promise<string>;
39
- private makeActiveCheckpoint;
40
- /**
41
- * Instance-wide watch on the latest available checkpoint (op_id + lsn).
42
- */
43
- private watchActiveCheckpoint;
44
- private readonly sharedIter;
45
- /**
46
- * User-specific watch on the latest checkpoint and/or write checkpoint.
47
- */
48
- watchWriteCheckpoint(user_id: string, signal: AbortSignal): AsyncIterable<storage.WriteCheckpoint>;
49
38
  }
@@ -1,92 +1,83 @@
1
1
  import { SqlSyncRules } from '@powersync/service-sync-rules';
2
- import { wrapWithAbort } from 'ix/asynciterable/operators/withabort.js';
3
- import { LRUCache } from 'lru-cache/min';
4
- import * as timers from 'timers/promises';
5
- import { storage, sync, utils } from '@powersync/service-core';
6
- import { DisposableObserver, ErrorCode, logger, ServiceError } from '@powersync/lib-services-framework';
2
+ import { storage } from '@powersync/service-core';
3
+ import { BaseObserver, ErrorCode, logger, ServiceError } from '@powersync/lib-services-framework';
7
4
  import { v4 as uuid } from 'uuid';
8
5
  import * as lib_mongo from '@powersync/lib-service-mongodb';
9
6
  import { MongoPersistedSyncRulesContent } from './implementation/MongoPersistedSyncRulesContent.js';
10
7
  import { MongoSyncBucketStorage } from './implementation/MongoSyncBucketStorage.js';
11
8
  import { generateSlotName } from './implementation/util.js';
12
- export class MongoBucketStorage extends DisposableObserver {
9
+ export class MongoBucketStorage extends BaseObserver {
10
+ client;
11
+ session;
12
+ // TODO: This is still Postgres specific and needs to be reworked
13
+ slot_name_prefix;
14
+ activeStorageCache;
15
+ db;
13
16
  constructor(db, options) {
14
17
  super();
15
- this.storageCache = new LRUCache({
16
- max: 3,
17
- fetchMethod: async (id) => {
18
- const doc2 = await this.db.sync_rules.findOne({
19
- _id: id
20
- }, { limit: 1 });
21
- if (doc2 == null) {
22
- // Deleted in the meantime?
23
- return undefined;
24
- }
25
- const rules = new MongoPersistedSyncRulesContent(this.db, doc2);
26
- return this.getInstance(rules);
27
- },
28
- dispose: (storage) => {
29
- storage[Symbol.dispose]();
30
- }
31
- });
32
- // Nothing is done here until a subscriber starts to iterate
33
- this.sharedIter = new sync.BroadcastIterable((signal) => {
34
- return this.watchActiveCheckpoint(signal);
35
- });
36
18
  this.client = db.client;
37
19
  this.db = db;
38
20
  this.session = this.client.startSession();
39
21
  this.slot_name_prefix = options.slot_name_prefix;
40
22
  }
41
23
  async [Symbol.asyncDispose]() {
42
- super[Symbol.dispose]();
24
+ // No-op
43
25
  }
44
- getInstance(options) {
45
- let { id, slot_name } = options;
26
+ getInstance(syncRules, options) {
27
+ let { id, slot_name } = syncRules;
46
28
  if (typeof id == 'bigint') {
47
29
  id = Number(id);
48
30
  }
49
- const storage = new MongoSyncBucketStorage(this, id, options, slot_name);
50
- this.iterateListeners((cb) => cb.syncStorageCreated?.(storage));
31
+ const storage = new MongoSyncBucketStorage(this, id, syncRules, slot_name);
32
+ if (!options?.skipLifecycleHooks) {
33
+ this.iterateListeners((cb) => cb.syncStorageCreated?.(storage));
34
+ }
51
35
  storage.registerListener({
52
36
  batchStarted: (batch) => {
53
- // This nested listener will be automatically disposed when the storage is disposed
54
- batch.registerManagedListener(storage, {
37
+ batch.registerListener({
55
38
  replicationEvent: (payload) => this.iterateListeners((cb) => cb.replicationEvent?.(payload))
56
39
  });
57
40
  }
58
41
  });
59
42
  return storage;
60
43
  }
61
- async configureSyncRules(sync_rules, options) {
44
+ async getSystemIdentifier() {
45
+ const { setName: id } = await this.db.db.command({
46
+ hello: 1
47
+ });
48
+ if (id == null) {
49
+ throw new ServiceError(ErrorCode.PSYNC_S1342, 'Standalone MongoDB instances are not supported - use a replicaset.');
50
+ }
51
+ return {
52
+ id,
53
+ type: lib_mongo.MONGO_CONNECTION_TYPE
54
+ };
55
+ }
56
+ async configureSyncRules(options) {
62
57
  const next = await this.getNextSyncRulesContent();
63
58
  const active = await this.getActiveSyncRulesContent();
64
- if (next?.sync_rules_content == sync_rules) {
59
+ if (next?.sync_rules_content == options.content) {
65
60
  logger.info('Sync rules from configuration unchanged');
66
61
  return { updated: false };
67
62
  }
68
- else if (next == null && active?.sync_rules_content == sync_rules) {
63
+ else if (next == null && active?.sync_rules_content == options.content) {
69
64
  logger.info('Sync rules from configuration unchanged');
70
65
  return { updated: false };
71
66
  }
72
67
  else {
73
68
  logger.info('Sync rules updated from configuration');
74
- const persisted_sync_rules = await this.updateSyncRules({
75
- content: sync_rules,
76
- lock: options?.lock
77
- });
69
+ const persisted_sync_rules = await this.updateSyncRules(options);
78
70
  return { updated: true, persisted_sync_rules, lock: persisted_sync_rules.current_lock ?? undefined };
79
71
  }
80
72
  }
81
- async slotRemoved(slot_name) {
73
+ async restartReplication(sync_rules_group_id) {
82
74
  const next = await this.getNextSyncRulesContent();
83
75
  const active = await this.getActiveSyncRulesContent();
84
- // In both the below cases, we create a new sync rules instance.
85
- // The current one will continue erroring until the next one has finished processing.
86
- if (next != null && next.slot_name == slot_name) {
76
+ if (next != null && next.id == sync_rules_group_id) {
87
77
  // We need to redo the "next" sync rules
88
78
  await this.updateSyncRules({
89
- content: next.sync_rules_content
79
+ content: next.sync_rules_content,
80
+ validate: false
90
81
  });
91
82
  // Pro-actively stop replicating
92
83
  await this.db.sync_rules.updateOne({
@@ -98,30 +89,50 @@ export class MongoBucketStorage extends DisposableObserver {
98
89
  }
99
90
  });
100
91
  }
101
- else if (next == null && active?.slot_name == slot_name) {
92
+ else if (next == null && active?.id == sync_rules_group_id) {
102
93
  // Slot removed for "active" sync rules, while there is no "next" one.
103
94
  await this.updateSyncRules({
104
- content: active.sync_rules_content
95
+ content: active.sync_rules_content,
96
+ validate: false
105
97
  });
106
- // Pro-actively stop replicating
98
+ // In this case we keep the old one as active for clients, so that that existing clients
99
+ // can still get the latest data while we replicate the new ones.
100
+ // It will however not replicate anymore.
107
101
  await this.db.sync_rules.updateOne({
108
102
  _id: active.id,
109
103
  state: storage.SyncRuleState.ACTIVE
110
104
  }, {
111
105
  $set: {
112
- state: storage.SyncRuleState.STOP
106
+ state: storage.SyncRuleState.ERRORED
107
+ }
108
+ });
109
+ }
110
+ else if (next != null && active?.id == sync_rules_group_id) {
111
+ // Already have next sync rules, but need to stop replicating the active one.
112
+ await this.db.sync_rules.updateOne({
113
+ _id: active.id,
114
+ state: storage.SyncRuleState.ACTIVE
115
+ }, {
116
+ $set: {
117
+ state: storage.SyncRuleState.ERRORED
113
118
  }
114
119
  });
115
120
  }
116
121
  }
117
122
  async updateSyncRules(options) {
118
- // Parse and validate before applying any changes
119
- const parsed = SqlSyncRules.fromYaml(options.content, {
120
- // No schema-based validation at this point
121
- schema: undefined,
122
- defaultSchema: 'not_applicable', // Not needed for validation
123
- throwOnError: true
124
- });
123
+ if (options.validate) {
124
+ // Parse and validate before applying any changes
125
+ SqlSyncRules.fromYaml(options.content, {
126
+ // No schema-based validation at this point
127
+ schema: undefined,
128
+ defaultSchema: 'not_applicable', // Not needed for validation
129
+ throwOnError: true
130
+ });
131
+ }
132
+ else {
133
+ // We do not validate sync rules at this point.
134
+ // That is done when using the sync rules, so that the diagnostics API can report the errors.
135
+ }
125
136
  let rules = undefined;
126
137
  await this.session.withTransaction(async () => {
127
138
  // Only have a single set of sync rules with PROCESSING.
@@ -164,7 +175,7 @@ export class MongoBucketStorage extends DisposableObserver {
164
175
  }
165
176
  async getActiveSyncRulesContent() {
166
177
  const doc = await this.db.sync_rules.findOne({
167
- state: storage.SyncRuleState.ACTIVE
178
+ state: { $in: [storage.SyncRuleState.ACTIVE, storage.SyncRuleState.ERRORED] }
168
179
  }, { sort: { _id: -1 }, limit: 1 });
169
180
  if (doc == null) {
170
181
  return null;
@@ -191,7 +202,7 @@ export class MongoBucketStorage extends DisposableObserver {
191
202
  async getReplicatingSyncRules() {
192
203
  const docs = await this.db.sync_rules
193
204
  .find({
194
- $or: [{ state: storage.SyncRuleState.ACTIVE }, { state: storage.SyncRuleState.PROCESSING }]
205
+ state: { $in: [storage.SyncRuleState.PROCESSING, storage.SyncRuleState.ACTIVE] }
195
206
  })
196
207
  .toArray();
197
208
  return docs.map((doc) => {
@@ -208,15 +219,22 @@ export class MongoBucketStorage extends DisposableObserver {
208
219
  return new MongoPersistedSyncRulesContent(this.db, doc);
209
220
  });
210
221
  }
211
- async getActiveCheckpoint() {
212
- const doc = await this.db.sync_rules.findOne({
213
- state: storage.SyncRuleState.ACTIVE
214
- }, {
215
- sort: { _id: -1 },
216
- limit: 1,
217
- projection: { _id: 1, last_checkpoint: 1, last_checkpoint_lsn: 1 }
218
- });
219
- return this.makeActiveCheckpoint(doc);
222
+ async getActiveStorage() {
223
+ const content = await this.getActiveSyncRulesContent();
224
+ if (content == null) {
225
+ return null;
226
+ }
227
+ // It is important that this instance is cached.
228
+ // Not for the instance construction itself, but to ensure that internal caches on the instance
229
+ // are re-used properly.
230
+ if (this.activeStorageCache?.group_id == content.id) {
231
+ return this.activeStorageCache;
232
+ }
233
+ else {
234
+ const instance = this.getInstance(content);
235
+ this.activeStorageCache = instance;
236
+ return instance;
237
+ }
220
238
  }
221
239
  async getStorageMetrics() {
222
240
  const ignoreNotExiting = (e) => {
@@ -292,136 +310,5 @@ export class MongoBucketStorage extends DisposableObserver {
292
310
  }
293
311
  return instance._id;
294
312
  }
295
- makeActiveCheckpoint(doc) {
296
- return {
297
- checkpoint: utils.timestampToOpId(doc?.last_checkpoint ?? 0n),
298
- lsn: doc?.last_checkpoint_lsn ?? null,
299
- hasSyncRules() {
300
- return doc != null;
301
- },
302
- getBucketStorage: async () => {
303
- if (doc == null) {
304
- return null;
305
- }
306
- return (await this.storageCache.fetch(doc._id)) ?? null;
307
- }
308
- };
309
- }
310
- /**
311
- * Instance-wide watch on the latest available checkpoint (op_id + lsn).
312
- */
313
- async *watchActiveCheckpoint(signal) {
314
- const pipeline = [
315
- {
316
- $match: {
317
- 'fullDocument.state': 'ACTIVE',
318
- operationType: { $in: ['insert', 'update'] }
319
- }
320
- },
321
- {
322
- $project: {
323
- operationType: 1,
324
- 'fullDocument._id': 1,
325
- 'fullDocument.last_checkpoint': 1,
326
- 'fullDocument.last_checkpoint_lsn': 1
327
- }
328
- }
329
- ];
330
- // Use this form instead of (doc: SyncRuleDocument | null = null),
331
- // otherwise we get weird "doc: never" issues.
332
- let doc = null;
333
- let clusterTime = null;
334
- await this.client.withSession(async (session) => {
335
- doc = await this.db.sync_rules.findOne({
336
- state: storage.SyncRuleState.ACTIVE
337
- }, {
338
- session,
339
- sort: { _id: -1 },
340
- limit: 1,
341
- projection: {
342
- _id: 1,
343
- last_checkpoint: 1,
344
- last_checkpoint_lsn: 1
345
- }
346
- });
347
- const time = session.clusterTime?.clusterTime ?? null;
348
- clusterTime = time;
349
- });
350
- if (clusterTime == null) {
351
- throw new ServiceError(ErrorCode.PSYNC_S2401, 'Could not get clusterTime');
352
- }
353
- if (signal.aborted) {
354
- return;
355
- }
356
- if (doc) {
357
- yield this.makeActiveCheckpoint(doc);
358
- }
359
- const stream = this.db.sync_rules.watch(pipeline, {
360
- fullDocument: 'updateLookup',
361
- // Start at the cluster time where we got the initial doc, to make sure
362
- // we don't skip any updates.
363
- // This may result in the first operation being a duplicate, but we filter
364
- // it out anyway.
365
- startAtOperationTime: clusterTime
366
- });
367
- signal.addEventListener('abort', () => {
368
- stream.close();
369
- }, { once: true });
370
- let lastOp = null;
371
- for await (const update of stream.stream()) {
372
- if (signal.aborted) {
373
- break;
374
- }
375
- if (update.operationType != 'insert' && update.operationType != 'update') {
376
- continue;
377
- }
378
- const doc = update.fullDocument;
379
- if (doc == null) {
380
- continue;
381
- }
382
- const op = this.makeActiveCheckpoint(doc);
383
- // Check for LSN / checkpoint changes - ignore other metadata changes
384
- if (lastOp == null || op.lsn != lastOp.lsn || op.checkpoint != lastOp.checkpoint) {
385
- lastOp = op;
386
- yield op;
387
- }
388
- }
389
- }
390
- /**
391
- * User-specific watch on the latest checkpoint and/or write checkpoint.
392
- */
393
- async *watchWriteCheckpoint(user_id, signal) {
394
- let lastCheckpoint = null;
395
- let lastWriteCheckpoint = null;
396
- const iter = wrapWithAbort(this.sharedIter, signal);
397
- for await (const cp of iter) {
398
- const { checkpoint, lsn } = cp;
399
- // lsn changes are not important by itself.
400
- // What is important is:
401
- // 1. checkpoint (op_id) changes.
402
- // 2. write checkpoint changes for the specific user
403
- const bucketStorage = await cp.getBucketStorage();
404
- if (!bucketStorage) {
405
- continue;
406
- }
407
- const lsnFilters = lsn ? { 1: lsn } : {};
408
- const currentWriteCheckpoint = await bucketStorage.lastWriteCheckpoint({
409
- user_id,
410
- heads: {
411
- ...lsnFilters
412
- }
413
- });
414
- if (currentWriteCheckpoint == lastWriteCheckpoint && checkpoint == lastCheckpoint) {
415
- // No change - wait for next one
416
- // In some cases, many LSNs may be produced in a short time.
417
- // Add a delay to throttle the write checkpoint lookup a bit.
418
- await timers.setTimeout(20 + 10 * Math.random());
419
- continue;
420
- }
421
- lastWriteCheckpoint = currentWriteCheckpoint;
422
- lastCheckpoint = checkpoint;
423
- yield { base: cp, writeCheckpoint: currentWriteCheckpoint };
424
- }
425
- }
426
313
  }
427
314
  //# sourceMappingURL=MongoBucketStorage.js.map
@@ -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,6 +1,6 @@
1
1
  import { mongo } from '@powersync/lib-service-mongodb';
2
2
  import { SqlEventDescriptor, SqlSyncRules } from '@powersync/service-sync-rules';
3
- import { DisposableObserver } from '@powersync/lib-services-framework';
3
+ import { BaseObserver } from '@powersync/lib-services-framework';
4
4
  import { storage } from '@powersync/service-core';
5
5
  import { PowerSyncMongo } from './db.js';
6
6
  import { CurrentBucket } from './models.js';
@@ -18,7 +18,7 @@ export interface MongoBucketBatchOptions {
18
18
  */
19
19
  skipExistingRows: boolean;
20
20
  }
21
- export declare class MongoBucketBatch extends DisposableObserver<storage.BucketBatchStorageListener> implements storage.BucketStorageBatch {
21
+ export declare class MongoBucketBatch extends BaseObserver<storage.BucketBatchStorageListener> implements storage.BucketStorageBatch {
22
22
  private readonly client;
23
23
  readonly db: PowerSyncMongo;
24
24
  readonly session: mongo.ClientSession;
@@ -54,7 +54,7 @@ export declare class MongoBucketBatch extends DisposableObserver<storage.BucketB
54
54
  private withReplicationTransaction;
55
55
  [Symbol.asyncDispose](): Promise<void>;
56
56
  private lastWaitingLogThottled;
57
- commit(lsn: string): Promise<boolean>;
57
+ commit(lsn: string, options?: storage.BucketBatchCommitOptions): Promise<boolean>;
58
58
  keepalive(lsn: string): Promise<boolean>;
59
59
  save(record: storage.SaveOptions): Promise<storage.FlushedResult | null>;
60
60
  /**