@powersync/service-module-mssql 0.0.0-dev-20260225160713 → 0.0.0-dev-20260511080634

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 (76) hide show
  1. package/CHANGELOG.md +113 -6
  2. package/dist/api/MSSQLRouteAPIAdapter.d.ts +2 -2
  3. package/dist/api/MSSQLRouteAPIAdapter.js +3 -3
  4. package/dist/api/MSSQLRouteAPIAdapter.js.map +1 -1
  5. package/dist/common/CaptureInstance.d.ts +14 -0
  6. package/dist/common/CaptureInstance.js +2 -0
  7. package/dist/common/CaptureInstance.js.map +1 -0
  8. package/dist/common/MSSQLSourceTable.d.ts +16 -14
  9. package/dist/common/MSSQLSourceTable.js +35 -16
  10. package/dist/common/MSSQLSourceTable.js.map +1 -1
  11. package/dist/common/MSSQLSourceTableCache.js.map +1 -1
  12. package/dist/common/mssqls-to-sqlite.d.ts +1 -1
  13. package/dist/common/mssqls-to-sqlite.js +1 -1
  14. package/dist/common/mssqls-to-sqlite.js.map +1 -1
  15. package/dist/module/MSSQLModule.js +4 -4
  16. package/dist/module/MSSQLModule.js.map +1 -1
  17. package/dist/replication/CDCPoller.d.ts +45 -23
  18. package/dist/replication/CDCPoller.js +201 -61
  19. package/dist/replication/CDCPoller.js.map +1 -1
  20. package/dist/replication/CDCReplicationJob.d.ts +2 -2
  21. package/dist/replication/CDCReplicationJob.js +12 -4
  22. package/dist/replication/CDCReplicationJob.js.map +1 -1
  23. package/dist/replication/CDCReplicator.d.ts +2 -3
  24. package/dist/replication/CDCReplicator.js +1 -24
  25. package/dist/replication/CDCReplicator.js.map +1 -1
  26. package/dist/replication/CDCStream.d.ts +39 -16
  27. package/dist/replication/CDCStream.js +200 -103
  28. package/dist/replication/CDCStream.js.map +1 -1
  29. package/dist/replication/MSSQLConnectionManager.d.ts +1 -1
  30. package/dist/replication/MSSQLConnectionManager.js +17 -6
  31. package/dist/replication/MSSQLConnectionManager.js.map +1 -1
  32. package/dist/replication/MSSQLConnectionManagerFactory.d.ts +1 -1
  33. package/dist/replication/MSSQLConnectionManagerFactory.js.map +1 -1
  34. package/dist/replication/MSSQLSnapshotQuery.d.ts +1 -1
  35. package/dist/replication/MSSQLSnapshotQuery.js +2 -2
  36. package/dist/replication/MSSQLSnapshotQuery.js.map +1 -1
  37. package/dist/types/types.d.ts +4 -56
  38. package/dist/types/types.js +5 -24
  39. package/dist/types/types.js.map +1 -1
  40. package/dist/utils/deadlock.d.ts +9 -0
  41. package/dist/utils/deadlock.js +40 -0
  42. package/dist/utils/deadlock.js.map +1 -0
  43. package/dist/utils/mssql.d.ts +36 -18
  44. package/dist/utils/mssql.js +102 -100
  45. package/dist/utils/mssql.js.map +1 -1
  46. package/dist/utils/schema.d.ts +9 -0
  47. package/dist/utils/schema.js +34 -0
  48. package/dist/utils/schema.js.map +1 -1
  49. package/package.json +14 -14
  50. package/src/api/MSSQLRouteAPIAdapter.ts +4 -4
  51. package/src/common/CaptureInstance.ts +15 -0
  52. package/src/common/MSSQLSourceTable.ts +33 -24
  53. package/src/common/MSSQLSourceTableCache.ts +1 -1
  54. package/src/common/mssqls-to-sqlite.ts +1 -1
  55. package/src/module/MSSQLModule.ts +4 -4
  56. package/src/replication/CDCPoller.ts +275 -75
  57. package/src/replication/CDCReplicationJob.ts +13 -6
  58. package/src/replication/CDCReplicator.ts +2 -28
  59. package/src/replication/CDCStream.ts +271 -128
  60. package/src/replication/MSSQLConnectionManager.ts +17 -7
  61. package/src/replication/MSSQLConnectionManagerFactory.ts +1 -1
  62. package/src/replication/MSSQLSnapshotQuery.ts +3 -3
  63. package/src/types/types.ts +5 -28
  64. package/src/utils/deadlock.ts +44 -0
  65. package/src/utils/mssql.ts +163 -128
  66. package/src/utils/schema.ts +44 -1
  67. package/test/src/CDCStream.test.ts +10 -8
  68. package/test/src/CDCStreamTestContext.ts +32 -12
  69. package/test/src/CDCStream_resumable_snapshot.test.ts +14 -12
  70. package/test/src/LSN.test.ts +1 -1
  71. package/test/src/env.ts +1 -1
  72. package/test/src/mssql-to-sqlite.test.ts +25 -17
  73. package/test/src/schema-changes.test.ts +474 -0
  74. package/test/src/util.ts +81 -18
  75. package/test/tsconfig.json +0 -1
  76. package/tsconfig.tsbuildinfo +1 -1
@@ -1,20 +1,21 @@
1
- import { container, DatabaseConnectionError, ErrorCode, logger as defaultLogger, ReplicationAbortedError, ReplicationAssertionError, ServiceAssertionError } from '@powersync/lib-services-framework';
2
- import { getUuidReplicaIdentityBson, storage } from '@powersync/service-core';
1
+ import { container, DatabaseConnectionError, logger as defaultLogger, ErrorCode, ReplicationAbortedError, ReplicationAssertionError } from '@powersync/lib-services-framework';
2
+ import { getUuidReplicaIdentityBson, ReplicationLagTracker, storage } from '@powersync/service-core';
3
3
  import { ReplicationMetric } from '@powersync/service-types';
4
- import { BatchedSnapshotQuery, SimpleSnapshotQuery } from './MSSQLSnapshotQuery.js';
5
- import { getReplicationIdentityColumns, getTablesFromPattern } from '../utils/schema.js';
6
- import { checkSourceConfiguration, createCheckpoint, getCaptureInstance, getLatestLSN, getLatestReplicatedLSN, isIColumnMetadata, isTableEnabledForCDC, isWithinRetentionThreshold, toQualifiedTableName } from '../utils/mssql.js';
7
4
  import sql from 'mssql';
8
- import { CDCToSqliteRow, toSqliteInputRow } from '../common/mssqls-to-sqlite.js';
9
5
  import { LSN } from '../common/LSN.js';
6
+ import { CDCToSqliteRow, toSqliteInputRow } from '../common/mssqls-to-sqlite.js';
10
7
  import { MSSQLSourceTable } from '../common/MSSQLSourceTable.js';
11
8
  import { MSSQLSourceTableCache } from '../common/MSSQLSourceTableCache.js';
12
- import { CDCPoller } from './CDCPoller.js';
9
+ import { checkRetentionThresholds, checkSourceConfiguration, createCheckpoint, getCaptureInstances, getLatestLSN, getLatestReplicatedLSN, isIColumnMetadata } from '../utils/mssql.js';
10
+ import { getReplicationIdentityColumns, getTablesFromPattern } from '../utils/schema.js';
11
+ import { CDCPoller, SchemaChangeType } from './CDCPoller.js';
12
+ import { BatchedSnapshotQuery, SimpleSnapshotQuery } from './MSSQLSnapshotQuery.js';
13
13
  export var SnapshotStatus;
14
14
  (function (SnapshotStatus) {
15
- SnapshotStatus["IN_PROGRESS"] = "in-progress";
15
+ SnapshotStatus["INITIAL"] = "initial";
16
+ SnapshotStatus["RESUME"] = "resume";
16
17
  SnapshotStatus["DONE"] = "done";
17
- SnapshotStatus["RESTART_REQUIRED"] = "restart-required";
18
+ SnapshotStatus["LIMITED_RESNAPSHOT"] = "limited-resnapshot";
18
19
  })(SnapshotStatus || (SnapshotStatus = {}));
19
20
  export class CDCConfigurationError extends Error {
20
21
  constructor(message) {
@@ -41,16 +42,7 @@ export class CDCStream {
41
42
  abortSignal;
42
43
  logger;
43
44
  tableCache = new MSSQLSourceTableCache();
44
- /**
45
- * Time of the oldest uncommitted change, according to the source db.
46
- * This is used to determine the replication lag.
47
- */
48
- oldestUncommittedChange = null;
49
- /**
50
- * Keep track of whether we have done a commit or keepalive yet.
51
- * We can only compute replication lag if isStartingReplication == false, or oldestUncommittedChange is present.
52
- */
53
- isStartingReplication = true;
45
+ replicationLag = new ReplicationLagTracker();
54
46
  constructor(options) {
55
47
  this.options = options;
56
48
  this.logger = options.logger ?? defaultLogger;
@@ -65,6 +57,9 @@ export class CDCStream {
65
57
  get stopped() {
66
58
  return this.abortSignal.aborted;
67
59
  }
60
+ get isStartingReplication() {
61
+ return this.replicationLag.isStartingReplication;
62
+ }
68
63
  get defaultSchema() {
69
64
  return this.connections.schema;
70
65
  }
@@ -108,13 +103,10 @@ export class CDCStream {
108
103
  logger: this.logger,
109
104
  zeroLSN: LSN.ZERO,
110
105
  defaultSchema: this.defaultSchema,
111
- storeCurrentData: true
106
+ storeCurrentData: false
112
107
  }, async (batch) => {
113
108
  for (let tablePattern of sourceTables) {
114
- const tables = await this.getQualifiedTableNames(batch, tablePattern);
115
- for (const table of tables) {
116
- this.tableCache.set(table);
117
- }
109
+ await this.getQualifiedTableNames(batch, tablePattern);
118
110
  }
119
111
  });
120
112
  }
@@ -122,18 +114,11 @@ export class CDCStream {
122
114
  if (tablePattern.connectionTag != this.connections.connectionTag) {
123
115
  return [];
124
116
  }
117
+ const captureInstances = await getCaptureInstances({ connectionManager: this.connections });
125
118
  const matchedTables = await getTablesFromPattern(this.connections, tablePattern);
126
119
  const tables = [];
127
120
  for (const matchedTable of matchedTables) {
128
- const isEnabled = await isTableEnabledForCDC({
129
- connectionManager: this.connections,
130
- table: matchedTable.name,
131
- schema: matchedTable.schema
132
- });
133
- if (!isEnabled) {
134
- this.logger.info(`Skipping ${matchedTable.schema}.${matchedTable.name} - table is not enabled for CDC.`);
135
- continue;
136
- }
121
+ const captureInstanceDetails = captureInstances.get(matchedTable.objectId);
137
122
  // TODO: Check RLS settings for table
138
123
  const replicaIdColumns = await getReplicationIdentityColumns({
139
124
  connectionManager: this.connections,
@@ -145,12 +130,12 @@ export class CDCStream {
145
130
  schema: matchedTable.schema,
146
131
  objectId: matchedTable.objectId,
147
132
  replicaIdColumns: replicaIdColumns.columns
148
- }, false);
133
+ }, captureInstanceDetails?.instances[0] ?? null, false);
149
134
  tables.push(table);
150
135
  }
151
136
  return tables;
152
137
  }
153
- async processTable(batch, table, snapshot) {
138
+ async processTable(batch, table, captureInstance, snapshot) {
154
139
  if (!table.objectId && typeof table.objectId != 'number') {
155
140
  throw new ReplicationAssertionError(`objectId expected, got ${typeof table.objectId}`);
156
141
  }
@@ -161,35 +146,25 @@ export class CDCStream {
161
146
  entity_descriptor: table,
162
147
  sync_rules: this.syncRules
163
148
  });
164
- const captureInstance = await getCaptureInstance({
165
- connectionManager: this.connections,
166
- tableName: resolved.table.name,
167
- schema: resolved.table.schema
168
- });
149
+ const resolvedTable = new MSSQLSourceTable(resolved.table);
169
150
  if (!captureInstance) {
170
- throw new ServiceAssertionError(`Missing capture instance for table ${toQualifiedTableName(resolved.table.schema, resolved.table.name)}`);
151
+ this.logger.warn(`Missing capture instance for table ${resolvedTable.toQualifiedName()}. This table will not be replicated until CDC is enabled for it.`);
171
152
  }
172
- const resolvedTable = new MSSQLSourceTable({
173
- sourceTable: resolved.table,
174
- captureInstance: captureInstance
175
- });
153
+ else {
154
+ resolvedTable.setCaptureInstance(captureInstance);
155
+ }
156
+ this.tableCache.set(resolvedTable);
176
157
  // Drop conflicting tables. This includes for example renamed tables.
177
158
  await batch.drop(resolved.dropTables);
178
159
  // Snapshot if:
179
- // 1. Snapshot is requested (false for initial snapshot, since that process handles it elsewhere)
180
- // 2. Snapshot is not already done, AND:
181
- // 3. The table is used in sync rules.
182
- const shouldSnapshot = snapshot && !resolved.table.snapshotComplete && resolved.table.syncAny;
160
+ // 1. The table is in the sync config and snapshot is requested, or not already done.
161
+ // 2. AND the table is enabled for CDC with a valid capture instance.
162
+ const shouldSnapshot = snapshot && !resolved.table.snapshotComplete && resolved.table.syncAny && resolvedTable.enabledForCDC();
183
163
  if (shouldSnapshot) {
184
164
  // Truncate this table in case a previous snapshot was interrupted.
185
165
  await batch.truncate([resolved.table]);
186
166
  // Start the snapshot inside a transaction.
187
- try {
188
- await this.snapshotTableInTx(batch, resolvedTable);
189
- }
190
- finally {
191
- // TODO Cleanup?
192
- }
167
+ await this.snapshotTableInTx(batch, resolvedTable);
193
168
  }
194
169
  return resolvedTable;
195
170
  }
@@ -216,7 +191,8 @@ export class CDCStream {
216
191
  const postSnapshotLSN = await getLatestLSN(this.connections);
217
192
  // Side note: A ROLLBACK would probably also be fine here, since we only read in this transaction.
218
193
  await transaction.commit();
219
- const [updatedSourceTable] = await batch.markSnapshotDone([table.sourceTable], postSnapshotLSN.toString());
194
+ const [updatedSourceTable] = await batch.markTableSnapshotDone([table.sourceTable], postSnapshotLSN.toString());
195
+ this.logger.info(`Snapshot of ${table.toQualifiedName()} completed. Post-snapshot LSN: ${postSnapshotLSN.toString()}`);
220
196
  this.tableCache.updateSourceTable(updatedSourceTable);
221
197
  }
222
198
  catch (e) {
@@ -237,15 +213,15 @@ export class CDCStream {
237
213
  const orderByKey = table.sourceTable.replicaIdColumns[0];
238
214
  query = new BatchedSnapshotQuery(transaction, table, this.snapshotBatchSize, table.sourceTable.snapshotStatus?.lastKey ?? null);
239
215
  if (table.sourceTable.snapshotStatus?.lastKey != null) {
240
- this.logger.info(`Replicating ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()} - resuming from ${orderByKey.name} > ${query.lastKey}`);
216
+ this.logger.info(`Snapshotting ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()} - resuming from ${orderByKey.name} > ${query.lastKey}`);
241
217
  }
242
218
  else {
243
- this.logger.info(`Replicating ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()} - resumable`);
219
+ this.logger.info(`Snapshotting ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()} - resumable`);
244
220
  }
245
221
  }
246
222
  else {
247
223
  // Fallback case - query the entire table
248
- this.logger.info(`Replicating ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()} - not resumable`);
224
+ this.logger.info(`Snapshotting ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()} - not resumable`);
249
225
  query = new SimpleSnapshotQuery(transaction, table);
250
226
  replicatedCount = 0;
251
227
  }
@@ -305,7 +281,6 @@ export class CDCStream {
305
281
  totalEstimatedCount: totalEstimatedCount
306
282
  });
307
283
  this.tableCache.updateSourceTable(updatedSourceTable);
308
- this.logger.info(`Replicating ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()}`);
309
284
  if (this.abortSignal.aborted) {
310
285
  // We only abort after flushing
311
286
  throw new ReplicationAbortedError(`Initial replication interrupted`);
@@ -314,6 +289,9 @@ export class CDCStream {
314
289
  if (batchReplicatedCount < this.snapshotBatchSize) {
315
290
  hasRemainingData = false;
316
291
  }
292
+ else {
293
+ this.logger.info(`Snapshotting ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()}`);
294
+ }
317
295
  }
318
296
  }
319
297
  /**
@@ -337,12 +315,7 @@ export class CDCStream {
337
315
  * and starts again from scratch.
338
316
  */
339
317
  async startInitialReplication(snapshotStatus) {
340
- let { status, snapshotLSN } = snapshotStatus;
341
- if (status === SnapshotStatus.RESTART_REQUIRED) {
342
- this.logger.info(`Snapshot restart required, clearing state.`);
343
- // This happens if the last replicated checkpoint LSN is no longer available in the CDC tables.
344
- await this.storage.clear({ signal: this.abortSignal });
345
- }
318
+ let { status, snapshotLSN, specificTablesToResnapshot } = snapshotStatus;
346
319
  await this.storage.startBatch({
347
320
  logger: this.logger,
348
321
  zeroLSN: LSN.ZERO,
@@ -350,15 +323,26 @@ export class CDCStream {
350
323
  storeCurrentData: false,
351
324
  skipExistingRows: true
352
325
  }, async (batch) => {
353
- if (snapshotLSN == null) {
354
- // First replication attempt - set the snapshot LSN to the current LSN before starting
355
- snapshotLSN = (await getLatestReplicatedLSN(this.connections)).toString();
356
- await batch.setResumeLsn(snapshotLSN);
357
- const latestLSN = (await getLatestLSN(this.connections)).toString();
358
- this.logger.info(`Marking snapshot at ${snapshotLSN}, Latest DB LSN ${latestLSN}.`);
359
- }
360
- else {
361
- this.logger.info(`Resuming snapshot at ${snapshotLSN}.`);
326
+ switch (status) {
327
+ case SnapshotStatus.INITIAL:
328
+ // First replication attempt - set the snapshot LSN to the current LSN before starting
329
+ snapshotLSN = (await getLatestReplicatedLSN(this.connections)).toString();
330
+ await batch.setResumeLsn(snapshotLSN);
331
+ const latestLSN = (await getLatestLSN(this.connections)).toString();
332
+ this.logger.info(`Marking snapshot at ${snapshotLSN}, Latest DB LSN ${latestLSN}.`);
333
+ break;
334
+ case SnapshotStatus.RESUME:
335
+ this.logger.info(`Resuming snapshot at ${snapshotLSN}.`);
336
+ break;
337
+ case SnapshotStatus.LIMITED_RESNAPSHOT:
338
+ for (const table of specificTablesToResnapshot) {
339
+ await batch.drop([table.sourceTable]);
340
+ // Update table in the table cache
341
+ await this.processTable(batch, table.sourceTable, table.captureInstance, false);
342
+ }
343
+ break;
344
+ default:
345
+ throw new ReplicationAssertionError(`Unsupported snapshot status: ${status}`);
362
346
  }
363
347
  const tablesToSnapshot = [];
364
348
  for (const table of this.tableCache.getAll()) {
@@ -366,13 +350,16 @@ export class CDCStream {
366
350
  this.logger.info(`Skipping table [${table.toQualifiedName()}] - snapshot already done.`);
367
351
  continue;
368
352
  }
353
+ if (!table.enabledForCDC()) {
354
+ this.logger.info(`Skipping table [${table.toQualifiedName()}] - not enabled for CDC.`);
355
+ continue;
356
+ }
369
357
  const count = await this.estimatedCountNumber(table);
370
358
  const updatedSourceTable = await batch.updateTableProgress(table.sourceTable, {
371
359
  totalEstimatedCount: count
372
360
  });
373
361
  this.tableCache.updateSourceTable(updatedSourceTable);
374
362
  tablesToSnapshot.push(table);
375
- this.logger.info(`To replicate: ${table.toQualifiedName()} ${table.sourceTable.formatSnapshotProgress()}`);
376
363
  }
377
364
  for (const table of tablesToSnapshot) {
378
365
  await this.snapshotTableInTx(batch, table);
@@ -380,8 +367,15 @@ export class CDCStream {
380
367
  }
381
368
  // This will not create a consistent checkpoint yet, but will persist the op.
382
369
  // Actual checkpoint will be created when streaming replication caught up.
370
+ const postSnapshotLSN = await getLatestLSN(this.connections);
371
+ await batch.markAllSnapshotDone(postSnapshotLSN.toString());
383
372
  await batch.commit(snapshotLSN);
384
- this.logger.info(`Snapshot done. Need to replicate from ${snapshotLSN} to ${batch.noCheckpointBeforeLsn} to be consistent`);
373
+ if (tablesToSnapshot.length > 0) {
374
+ this.logger.info(`All snapshots done. Need to replicate from ${snapshotLSN} to ${postSnapshotLSN} to be consistent.`);
375
+ }
376
+ else {
377
+ this.logger.info(`No tables to snapshot. Need to replicate from ${snapshotLSN}.`);
378
+ }
385
379
  });
386
380
  }
387
381
  async initReplication() {
@@ -394,6 +388,9 @@ export class CDCStream {
394
388
  if (snapshotStatus.status !== SnapshotStatus.DONE) {
395
389
  await this.startInitialReplication(snapshotStatus);
396
390
  }
391
+ else {
392
+ this.logger.info(`Initial replication already done`);
393
+ }
397
394
  }
398
395
  /**
399
396
  * Checks if the initial sync has already been completed and if updates from the last checkpoint are still available
@@ -402,23 +399,44 @@ export class CDCStream {
402
399
  async checkSnapshotStatus() {
403
400
  const status = await this.storage.getStatus();
404
401
  if (status.snapshot_done && status.checkpoint_lsn) {
402
+ const additionalTablesToSnapshot = new Set();
403
+ const newTables = this.tableCache.getAll().filter((table) => !table.sourceTable.snapshotComplete);
404
+ if (newTables.length > 0) {
405
+ this.logger.info(`Detected new table(s) [${newTables.map((table) => table.toQualifiedName()).join(', ')}] that have not been snapshotted yet.`);
406
+ newTables.forEach((table) => additionalTablesToSnapshot.add(table));
407
+ }
405
408
  // Snapshot is done, but we still need to check that the last known checkpoint LSN is still
406
- // within the threshold of the CDC tables
407
- this.logger.info(`Initial replication already done`);
409
+ // within the retention threshold of the CDC tables
408
410
  const lastCheckpointLSN = LSN.fromString(status.checkpoint_lsn);
409
411
  // Check that the CDC tables still have valid data
410
- const isAvailable = await isWithinRetentionThreshold({
412
+ const tablesOutsideRetentionThreshold = await checkRetentionThresholds({
411
413
  checkpointLSN: lastCheckpointLSN,
412
414
  tables: this.tableCache.getAll(),
413
415
  connectionManager: this.connections
414
416
  });
415
- if (!isAvailable) {
416
- this.logger.warn(`Updates from the last checkpoint are no longer available in the CDC instance, starting initial replication again.`);
417
+ if (tablesOutsideRetentionThreshold.length > 0) {
418
+ this.logger.warn(`Updates from the last checkpoint are no longer available in the CDC instances of the following table(s): ${tablesOutsideRetentionThreshold.map((table) => table.toQualifiedName()).join(', ')}.`);
419
+ tablesOutsideRetentionThreshold.forEach((table) => additionalTablesToSnapshot.add(table));
420
+ }
421
+ if (additionalTablesToSnapshot.size > 0) {
422
+ return {
423
+ status: SnapshotStatus.LIMITED_RESNAPSHOT,
424
+ snapshotLSN: status.checkpoint_lsn,
425
+ specificTablesToResnapshot: Array.from(additionalTablesToSnapshot)
426
+ };
427
+ }
428
+ else {
429
+ return {
430
+ status: SnapshotStatus.DONE,
431
+ snapshotLSN: null
432
+ };
417
433
  }
418
- return { status: isAvailable ? SnapshotStatus.DONE : SnapshotStatus.RESTART_REQUIRED, snapshotLSN: null };
419
434
  }
420
435
  else {
421
- return { status: SnapshotStatus.IN_PROGRESS, snapshotLSN: status.snapshot_lsn };
436
+ return {
437
+ status: status.snapshot_lsn != null ? SnapshotStatus.RESUME : SnapshotStatus.INITIAL,
438
+ snapshotLSN: status.snapshot_lsn
439
+ };
422
440
  }
423
441
  }
424
442
  async streamChanges() {
@@ -433,15 +451,16 @@ export class CDCStream {
433
451
  throw new ReplicationAssertionError(`No LSN found to resume replication from.`);
434
452
  }
435
453
  const startLSN = LSN.fromString(batch.resumeFromLsn);
436
- const sourceTables = this.tableCache.getAll();
437
454
  const eventHandler = this.createEventHandler(batch);
438
455
  const poller = new CDCPoller({
439
456
  connectionManager: this.connections,
440
457
  eventHandler,
441
- sourceTables,
458
+ getReplicatedTables: () => this.tableCache.getAll(),
459
+ sourceTables: this.syncRules.getSourceTables(),
442
460
  startLSN,
443
461
  logger: this.logger,
444
- additionalConfig: this.options.additionalConfig
462
+ additionalConfig: this.options.additionalConfig,
463
+ schemaCheckIntervalMs: this.options.schemaCheckIntervalMs
445
464
  });
446
465
  this.abortSignal.addEventListener('abort', async () => {
447
466
  await poller.stop();
@@ -491,15 +510,95 @@ export class CDCStream {
491
510
  this.metrics.getCounter(ReplicationMetric.ROWS_REPLICATED).add(1);
492
511
  },
493
512
  onCommit: async (lsn, transactionCount) => {
494
- await batch.commit(lsn);
513
+ const { checkpointBlocked } = await batch.commit(lsn, {
514
+ oldestUncommittedChange: this.replicationLag.oldestUncommittedChange
515
+ });
495
516
  this.metrics.getCounter(ReplicationMetric.TRANSACTIONS_REPLICATED).add(transactionCount);
496
- this.isStartingReplication = false;
517
+ if (!checkpointBlocked) {
518
+ this.replicationLag.markCommitted();
519
+ }
497
520
  },
498
- onSchemaChange: async () => {
499
- // TODO: Handle schema changes
521
+ onSchemaChange: async (schemaChange) => {
522
+ await this.handleSchemaChange(batch, schemaChange);
500
523
  }
501
524
  };
502
525
  }
526
+ async handleSchemaChange(batch, change) {
527
+ let actionedSchemaChange = true;
528
+ switch (change.type) {
529
+ case SchemaChangeType.TABLE_RENAME:
530
+ const fromTable = change.table;
531
+ this.logger.info(`Table ${fromTable.toQualifiedName()} has been renamed ${change.newTable ? `to [${change.newTable.name}].` : '.'}`);
532
+ // Old table needs to be cleaned up
533
+ await batch.drop([fromTable.sourceTable]);
534
+ this.tableCache.delete(fromTable.objectId);
535
+ if (change.newTable) {
536
+ await this.handleCreateOrUpdateTable(batch, change.newTable, change.newCaptureInstance);
537
+ }
538
+ break;
539
+ case SchemaChangeType.TABLE_CREATE:
540
+ await this.handleCreateOrUpdateTable(batch, change.newTable, change.newCaptureInstance);
541
+ break;
542
+ case SchemaChangeType.TABLE_COLUMN_CHANGES:
543
+ await this.handleColumnChanges(change.table, change.newCaptureInstance);
544
+ actionedSchemaChange = false;
545
+ break;
546
+ case SchemaChangeType.NEW_CAPTURE_INSTANCE:
547
+ this.logger.info(`New CDC capture instance detected for table ${change.table.toQualifiedName()}. Re-snapshotting table...`);
548
+ await batch.drop([change.table.sourceTable]);
549
+ this.tableCache.delete(change.table.objectId);
550
+ await this.handleCreateOrUpdateTable(batch, change.table.sourceTable, change.newCaptureInstance);
551
+ break;
552
+ case SchemaChangeType.TABLE_DROP:
553
+ await batch.drop([change.table.sourceTable]);
554
+ this.tableCache.delete(change.table.objectId);
555
+ break;
556
+ case SchemaChangeType.MISSING_CAPTURE_INSTANCE:
557
+ // Stop replication for this table until CDC is re-enabled.
558
+ this.logger.warn(`Table ${change.table.toQualifiedName()} has been disabled for CDC. Re-enable CDC to continue replication.`);
559
+ change.table.clearCaptureInstance();
560
+ actionedSchemaChange = false;
561
+ break;
562
+ default:
563
+ throw new ReplicationAssertionError(`Unknown schema change type: ${change.type}`);
564
+ }
565
+ // Create a new checkpoint after the schema change
566
+ if (actionedSchemaChange) {
567
+ await createCheckpoint(this.connections);
568
+ }
569
+ }
570
+ async handleCreateOrUpdateTable(batch, table, captureInstance) {
571
+ const replicaIdColumns = await getReplicationIdentityColumns({
572
+ connectionManager: this.connections,
573
+ tableName: table.name,
574
+ schema: table.schema
575
+ });
576
+ await this.processTable(batch, {
577
+ name: table.name,
578
+ schema: table.schema,
579
+ objectId: table.objectId,
580
+ replicaIdColumns: replicaIdColumns.columns
581
+ }, captureInstance, true);
582
+ }
583
+ /**
584
+ * There is very little that can be automatically done to handle the column changes other than to warn the user about the schema drift.
585
+ *
586
+ * Due to the way CDC works, users are prevented from making column schema changes that affect the replication identities of a table.
587
+ * If changes like that are required, CDC has to be disabled and re-enabled for the table. This would then be handled by the detection of the new
588
+ * capture instance.
589
+ * @param table
590
+ * @param captureInstance
591
+ */
592
+ async handleColumnChanges(table, captureInstance) {
593
+ // Check there are any new pending schema changes
594
+ if (table.captureInstance?.objectId === captureInstance.objectId &&
595
+ table.captureInstance?.pendingSchemaChanges.length === captureInstance.pendingSchemaChanges.length) {
596
+ return;
597
+ }
598
+ // New pending schema changes were detected - warn about those as well.
599
+ this.logger.warn(`Schema drift detected for table ${table.toQualifiedName()}. To ensure consistency, disable and re-enable CDC for this table.\n Pending schema changes:\n ${captureInstance.pendingSchemaChanges.join(', \n')}`);
600
+ table.captureInstance = captureInstance;
601
+ }
503
602
  /**
504
603
  * Convert CDC row data to SqliteRow format.
505
604
  * CDC rows include table columns plus CDC metadata columns (__$operation, __$start_lsn, etc.).
@@ -509,23 +608,21 @@ export class CDCStream {
509
608
  const inputRow = CDCToSqliteRow({ row, columns });
510
609
  return this.syncRules.applyRowContext(inputRow);
511
610
  }
512
- async getReplicationLagMillis() {
513
- if (this.oldestUncommittedChange == null) {
514
- if (this.isStartingReplication) {
515
- // We don't have anything to compute replication lag with yet.
516
- return undefined;
517
- }
518
- else {
519
- // We don't have any uncommitted changes, so replication is up-to-date.
520
- return 0;
521
- }
522
- }
523
- return Date.now() - this.oldestUncommittedChange.getTime();
611
+ getReplicationLagMillis() {
612
+ return this.replicationLag.getLagMillis();
524
613
  }
525
614
  touch() {
526
615
  container.probes.touch().catch((e) => {
527
616
  this.logger.error(`Error touching probe`, e);
528
617
  });
529
618
  }
619
+ /**
620
+ * Creates an update in the source database to ensure regular checkpoints via the CDC
621
+ */
622
+ async keepAlive() {
623
+ if (!this.replicationLag.isStartingReplication && !this.stopped) {
624
+ await createCheckpoint(this.connections);
625
+ }
626
+ }
530
627
  }
531
628
  //# sourceMappingURL=CDCStream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CDCStream.js","sourceRoot":"","sources":["../../src/replication/CDCStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CDCStream.js","sourceRoot":"","sources":["../../src/replication/CDCStream.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { BaseObserver } from '@powersync/lib-services-framework';
2
2
  import sql from 'mssql';
3
- import { NormalizedMSSQLConnectionConfig } from '../types/types.js';
4
3
  import { MSSQLParameter } from '../types/mssql-data-types.js';
4
+ import { NormalizedMSSQLConnectionConfig } from '../types/types.js';
5
5
  export declare const DEFAULT_SCHEMA = "dbo";
6
6
  export interface MSSQLConnectionManagerListener {
7
7
  onEnded(): void;
@@ -1,6 +1,6 @@
1
1
  import { BaseObserver, logger } from '@powersync/lib-services-framework';
2
- import sql from 'mssql';
3
2
  import { POWERSYNC_VERSION } from '@powersync/service-core';
3
+ import sql from 'mssql';
4
4
  import { addParameters } from '../utils/mssql.js';
5
5
  export const DEFAULT_SCHEMA = 'dbo';
6
6
  export class MSSQLConnectionManager extends BaseObserver {
@@ -69,13 +69,24 @@ export class MSSQLConnectionManager extends BaseObserver {
69
69
  }
70
70
  async execute(procedure, parameters) {
71
71
  await this.ensureConnected();
72
- let request = this.pool.request();
73
- if (parameters) {
74
- if (parameters) {
75
- request = addParameters(request, parameters);
72
+ for (let tries = 2;; tries--) {
73
+ try {
74
+ logger.debug(`Executing procedure: ${procedure}`);
75
+ let request = this.pool.request();
76
+ if (parameters) {
77
+ if (parameters) {
78
+ request = addParameters(request, parameters);
79
+ }
80
+ }
81
+ return request.execute(procedure);
82
+ }
83
+ catch (e) {
84
+ if (tries == 1) {
85
+ throw e;
86
+ }
87
+ logger.warn(`Error executing stored procedure: ${procedure}, retrying..`, e);
76
88
  }
77
89
  }
78
- return request.execute(procedure);
79
90
  }
80
91
  async end() {
81
92
  if (this.pool.connected) {