@powersync/service-module-postgres 0.0.0-dev-20260313100403 → 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.
- package/dist/api/PostgresRouteAPIAdapter.d.ts +1 -1
- package/dist/api/PostgresRouteAPIAdapter.js +63 -72
- package/dist/api/PostgresRouteAPIAdapter.js.map +1 -1
- package/dist/module/PostgresModule.js.map +1 -1
- package/dist/replication/MissingReplicationSlotError.d.ts +41 -0
- package/dist/replication/MissingReplicationSlotError.js +33 -0
- package/dist/replication/MissingReplicationSlotError.js.map +1 -0
- package/dist/replication/PgManager.js +3 -2
- package/dist/replication/PgManager.js.map +1 -1
- package/dist/replication/PostgresErrorRateLimiter.js +1 -1
- package/dist/replication/PostgresErrorRateLimiter.js.map +1 -1
- package/dist/replication/SnapshotQuery.js +8 -7
- package/dist/replication/SnapshotQuery.js.map +1 -1
- package/dist/replication/WalStream.d.ts +37 -14
- package/dist/replication/WalStream.js +175 -60
- package/dist/replication/WalStream.js.map +1 -1
- package/dist/replication/WalStreamReplicationJob.d.ts +1 -1
- package/dist/replication/WalStreamReplicationJob.js +9 -6
- package/dist/replication/WalStreamReplicationJob.js.map +1 -1
- package/dist/replication/WalStreamReplicator.d.ts +0 -1
- package/dist/replication/WalStreamReplicator.js +0 -22
- package/dist/replication/WalStreamReplicator.js.map +1 -1
- package/dist/replication/replication-index.d.ts +3 -1
- package/dist/replication/replication-index.js +3 -1
- package/dist/replication/replication-index.js.map +1 -1
- package/dist/replication/replication-utils.d.ts +3 -11
- package/dist/replication/replication-utils.js +103 -165
- package/dist/replication/replication-utils.js.map +1 -1
- package/dist/replication/rquery.d.ts +5 -0
- package/dist/replication/rquery.js +35 -0
- package/dist/replication/rquery.js.map +1 -0
- package/dist/replication/wal-budget-utils.d.ts +23 -0
- package/dist/replication/wal-budget-utils.js +57 -0
- package/dist/replication/wal-budget-utils.js.map +1 -0
- package/dist/types/registry.js +1 -1
- package/dist/types/registry.js.map +1 -1
- package/dist/utils/errors.d.ts +2 -0
- package/dist/utils/errors.js +30 -0
- package/dist/utils/errors.js.map +1 -0
- package/package.json +17 -13
- package/sql/check-source-configuration.plpgsql +13 -0
- package/sql/debug-tables-info-batched.plpgsql +230 -0
- package/CHANGELOG.md +0 -834
- package/src/api/PostgresRouteAPIAdapter.ts +0 -356
- package/src/index.ts +0 -1
- package/src/module/PostgresModule.ts +0 -122
- package/src/replication/ConnectionManagerFactory.ts +0 -33
- package/src/replication/PgManager.ts +0 -122
- package/src/replication/PgRelation.ts +0 -41
- package/src/replication/PostgresErrorRateLimiter.ts +0 -48
- package/src/replication/SnapshotQuery.ts +0 -213
- package/src/replication/WalStream.ts +0 -1157
- package/src/replication/WalStreamReplicationJob.ts +0 -138
- package/src/replication/WalStreamReplicator.ts +0 -79
- package/src/replication/replication-index.ts +0 -5
- package/src/replication/replication-utils.ts +0 -398
- package/src/types/registry.ts +0 -275
- package/src/types/resolver.ts +0 -227
- package/src/types/types.ts +0 -44
- package/src/utils/application-name.ts +0 -8
- package/src/utils/migration_lib.ts +0 -80
- package/src/utils/populate_test_data.ts +0 -37
- package/src/utils/populate_test_data_worker.ts +0 -53
- package/src/utils/postgres_version.ts +0 -8
- package/test/src/checkpoints.test.ts +0 -86
- package/test/src/chunked_snapshots.test.ts +0 -161
- package/test/src/env.ts +0 -11
- package/test/src/large_batch.test.ts +0 -241
- package/test/src/pg_test.test.ts +0 -729
- package/test/src/resuming_snapshots.test.ts +0 -160
- package/test/src/route_api_adapter.test.ts +0 -62
- package/test/src/schema_changes.test.ts +0 -655
- package/test/src/setup.ts +0 -12
- package/test/src/slow_tests.test.ts +0 -519
- package/test/src/storage_combination.test.ts +0 -35
- package/test/src/types/registry.test.ts +0 -149
- package/test/src/util.ts +0 -151
- package/test/src/validation.test.ts +0 -63
- package/test/src/wal_stream.test.ts +0 -607
- package/test/src/wal_stream_utils.ts +0 -284
- package/test/tsconfig.json +0 -27
- package/tsconfig.json +0 -34
- package/tsconfig.tsbuildinfo +0 -1
- package/vitest.config.ts +0 -3
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as lib_postgres from '@powersync/lib-service-postgres';
|
|
2
2
|
import { container, DatabaseConnectionError, logger as defaultLogger, ErrorCode, ReplicationAbortedError, ReplicationAssertionError } from '@powersync/lib-services-framework';
|
|
3
|
-
import { getUuidReplicaIdentityBson, RelationCache, storage } from '@powersync/service-core';
|
|
3
|
+
import { getUuidReplicaIdentityBson, RelationCache, ReplicationLagTracker, storage } from '@powersync/service-core';
|
|
4
4
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
5
5
|
import { applyValueContext, CompatibilityContext, toSyncRulesValue } from '@powersync/service-sync-rules';
|
|
6
6
|
import { ReplicationMetric } from '@powersync/service-types';
|
|
7
|
+
import { MissingReplicationSlotError } from './MissingReplicationSlotError.js';
|
|
7
8
|
import { getPgOutputRelation, getRelId, referencedColumnTypeIds } from './PgRelation.js';
|
|
8
9
|
import { checkSourceConfiguration, checkTableRls, getReplicationIdentityColumns } from './replication-utils.js';
|
|
10
|
+
import { rquery } from './rquery.js';
|
|
9
11
|
import { ChunkedSnapshotQuery, IdSnapshotQuery, SimpleSnapshotQuery } from './SnapshotQuery.js';
|
|
12
|
+
import { computeWalBudgetReport, formatBytes, formatWalBudgetLine } from './wal-budget-utils.js';
|
|
10
13
|
export const ZERO_LSN = '00000000/00000000';
|
|
11
14
|
export const PUBLICATION_NAME = 'powersync';
|
|
12
15
|
export const POSTGRES_DEFAULT_SCHEMA = 'public';
|
|
@@ -30,12 +33,6 @@ export const isKeepAliveMessage = (msg) => {
|
|
|
30
33
|
export const sendKeepAlive = async (db) => {
|
|
31
34
|
await lib_postgres.retriedQuery(db, KEEPALIVE_STATEMENT);
|
|
32
35
|
};
|
|
33
|
-
export class MissingReplicationSlotError extends Error {
|
|
34
|
-
constructor(message, cause) {
|
|
35
|
-
super(message);
|
|
36
|
-
this.cause = cause;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
36
|
export class WalStream {
|
|
40
37
|
sync_rules;
|
|
41
38
|
group_id;
|
|
@@ -54,17 +51,19 @@ export class WalStream {
|
|
|
54
51
|
});
|
|
55
52
|
startedStreaming = false;
|
|
56
53
|
snapshotChunkLength;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* This is used to determine the replication lag.
|
|
60
|
-
*/
|
|
61
|
-
oldestUncommittedChange = null;
|
|
62
|
-
/**
|
|
63
|
-
* Keep track of whether we have done a commit or keepalive yet.
|
|
64
|
-
* We can only compute replication lag if isStartingReplication == false, or oldestUncommittedChange is present.
|
|
65
|
-
*/
|
|
66
|
-
isStartingReplication = true;
|
|
54
|
+
onSnapshotChunkFlushed;
|
|
55
|
+
replicationLag = new ReplicationLagTracker();
|
|
67
56
|
initialSnapshotPromise = null;
|
|
57
|
+
slotHealthCheckIntervalMs;
|
|
58
|
+
/** Cached max_slot_wal_keep_size in bytes. null = not yet queried. */
|
|
59
|
+
maxSlotWalKeepSize = null;
|
|
60
|
+
/** Whether max_slot_wal_keep_size has been queried (distinguishes "not
|
|
61
|
+
* queried" from "queried and found unlimited"). */
|
|
62
|
+
maxSlotWalKeepSizeQueried = false;
|
|
63
|
+
/** Previous safe_wal_size sample for rate calculation. */
|
|
64
|
+
prevWalBudgetSample = null;
|
|
65
|
+
/** Timestamp of last slot health check. */
|
|
66
|
+
lastSlotHealthCheckTime = 0;
|
|
68
67
|
constructor(options) {
|
|
69
68
|
this.logger = options.logger ?? defaultLogger;
|
|
70
69
|
this.storage = options.storage;
|
|
@@ -74,6 +73,8 @@ export class WalStream {
|
|
|
74
73
|
this.slot_name = options.storage.slot_name;
|
|
75
74
|
this.connections = options.connections;
|
|
76
75
|
this.snapshotChunkLength = options.snapshotChunkLength ?? 10_000;
|
|
76
|
+
this.onSnapshotChunkFlushed = options.onSnapshotChunkFlushed;
|
|
77
|
+
this.slotHealthCheckIntervalMs = options.slotHealthCheckIntervalMs ?? 120_000;
|
|
77
78
|
this.abort_signal = options.abort_signal;
|
|
78
79
|
this.abort_signal.addEventListener('abort', () => {
|
|
79
80
|
if (this.startedStreaming) {
|
|
@@ -122,7 +123,7 @@ export class WalStream {
|
|
|
122
123
|
else {
|
|
123
124
|
query += ' AND c.relname = $2';
|
|
124
125
|
}
|
|
125
|
-
const result = await db
|
|
126
|
+
const result = await rquery(db, {
|
|
126
127
|
statement: query,
|
|
127
128
|
params: [
|
|
128
129
|
{ type: 'varchar', value: schema },
|
|
@@ -141,7 +142,7 @@ export class WalStream {
|
|
|
141
142
|
if (prefix && !name.startsWith(prefix)) {
|
|
142
143
|
continue;
|
|
143
144
|
}
|
|
144
|
-
const rs = await db
|
|
145
|
+
const rs = await rquery(db, {
|
|
145
146
|
statement: `SELECT 1 FROM pg_publication_tables WHERE pubname = $1 AND schemaname = $2 AND tablename = $3`,
|
|
146
147
|
params: [
|
|
147
148
|
{ type: 'varchar', value: PUBLICATION_NAME },
|
|
@@ -192,7 +193,7 @@ export class WalStream {
|
|
|
192
193
|
this.logger.info(`Initial replication already done`);
|
|
193
194
|
}
|
|
194
195
|
// Check if replication slot exists
|
|
195
|
-
const slot = pgwire.pgwireRows(await this.connections.pool
|
|
196
|
+
const slot = pgwire.pgwireRows(await rquery(this.connections.pool, {
|
|
196
197
|
// We specifically want wal_status and invalidation_reason, but it's not available on older versions,
|
|
197
198
|
// so we just query *.
|
|
198
199
|
statement: 'SELECT * FROM pg_replication_slots WHERE slot_name = $1',
|
|
@@ -204,12 +205,12 @@ export class WalStream {
|
|
|
204
205
|
// We now instead jump straight to replication if the wal_status is not "lost", rather detecting those
|
|
205
206
|
// errors during streaming replication, which is a little more robust.
|
|
206
207
|
// We can have:
|
|
207
|
-
// 1. needsInitialSync: true, lost slot -> MissingReplicationSlotError (starts new
|
|
208
|
+
// 1. needsInitialSync: true, lost slot -> MissingReplicationSlotError (starts new replication stream).
|
|
208
209
|
// Theoretically we could handle this the same as (2).
|
|
209
210
|
// 2. needsInitialSync: true, no slot -> create new slot
|
|
210
211
|
// 3. needsInitialSync: true, valid slot -> resume initial sync
|
|
211
|
-
// 4. needsInitialSync: false, lost slot -> MissingReplicationSlotError (starts new
|
|
212
|
-
// 5. needsInitialSync: false, no slot -> MissingReplicationSlotError (starts new
|
|
212
|
+
// 4. needsInitialSync: false, lost slot -> MissingReplicationSlotError (starts new replication stream)
|
|
213
|
+
// 5. needsInitialSync: false, no slot -> MissingReplicationSlotError (starts new replication stream)
|
|
213
214
|
// 6. needsInitialSync: false, valid slot -> resume streaming replication
|
|
214
215
|
// The main advantage of MissingReplicationSlotError are:
|
|
215
216
|
// 1. If there was a complete snapshot already (cases 4/5), users can still sync from that snapshot while
|
|
@@ -223,7 +224,16 @@ export class WalStream {
|
|
|
223
224
|
const lost = slot.wal_status == 'lost';
|
|
224
225
|
if (lost) {
|
|
225
226
|
// Case 1 / 4
|
|
226
|
-
|
|
227
|
+
const fixGuidance = slot.invalidation_reason === 'idle_timeout'
|
|
228
|
+
? `Increase idle_replication_slot_timeout on the source database.`
|
|
229
|
+
: `Increase max_slot_wal_keep_size on the source database and delete the existing slot to recover.`;
|
|
230
|
+
throw new MissingReplicationSlotError(`[PSYNC_S1146] Replication slot ${slotName} was invalidated ` +
|
|
231
|
+
`(reason: ${slot.invalidation_reason ?? 'unknown'}). ` +
|
|
232
|
+
`${fixGuidance}`, {
|
|
233
|
+
walStatus: 'lost',
|
|
234
|
+
phase: snapshotDone ? 'streaming' : 'snapshot',
|
|
235
|
+
invalidationReason: slot.invalidation_reason ?? undefined
|
|
236
|
+
});
|
|
227
237
|
}
|
|
228
238
|
// Case 3 / 6
|
|
229
239
|
return {
|
|
@@ -234,16 +244,120 @@ export class WalStream {
|
|
|
234
244
|
else {
|
|
235
245
|
if (snapshotDone) {
|
|
236
246
|
// Case 5
|
|
237
|
-
// This will create a new slot, while keeping the current
|
|
238
|
-
throw new MissingReplicationSlotError(`Replication slot ${slotName} is missing
|
|
247
|
+
// This will create a new slot, while keeping the current replication stream active
|
|
248
|
+
throw new MissingReplicationSlotError(`Replication slot ${slotName} is missing`, {
|
|
249
|
+
walStatus: 'missing',
|
|
250
|
+
phase: 'streaming'
|
|
251
|
+
});
|
|
239
252
|
}
|
|
240
253
|
// Case 2
|
|
241
254
|
// This will clear data (if any) and re-create the same slot
|
|
242
255
|
return { needsInitialSync: true, needsNewSlot: true };
|
|
243
256
|
}
|
|
244
257
|
}
|
|
258
|
+
async queryMaxSlotWalKeepSize() {
|
|
259
|
+
if (this.maxSlotWalKeepSizeQueried) {
|
|
260
|
+
return this.maxSlotWalKeepSize;
|
|
261
|
+
}
|
|
262
|
+
this.maxSlotWalKeepSizeQueried = true;
|
|
263
|
+
try {
|
|
264
|
+
const rows = pgwire.pgwireRows(await rquery(this.connections.pool, {
|
|
265
|
+
statement: `SELECT setting, unit FROM pg_settings WHERE name = 'max_slot_wal_keep_size'`
|
|
266
|
+
}));
|
|
267
|
+
if (rows.length === 0) {
|
|
268
|
+
// PG < 13 or setting doesn't exist
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
const setting = Number(rows[0].setting);
|
|
272
|
+
if (setting < 0) {
|
|
273
|
+
// -1 = unlimited
|
|
274
|
+
this.maxSlotWalKeepSize = null;
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
// setting is in MB, convert to bytes
|
|
278
|
+
const unit = rows[0].unit;
|
|
279
|
+
const multiplier = unit === 'kB' ? 1024 : unit === '8kB' ? 8192 : 1024 * 1024; // default MB
|
|
280
|
+
this.maxSlotWalKeepSize = setting * multiplier;
|
|
281
|
+
return this.maxSlotWalKeepSize;
|
|
282
|
+
}
|
|
283
|
+
catch (e) {
|
|
284
|
+
// Non-fatal — budget reporting is best-effort
|
|
285
|
+
this.logger.warn(`Could not query max_slot_wal_keep_size`, e);
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
async logWalBudget(slot, now) {
|
|
290
|
+
const maxSize = await this.queryMaxSlotWalKeepSize();
|
|
291
|
+
// No limit configured
|
|
292
|
+
if (maxSize == null) {
|
|
293
|
+
this.logger.info(`WAL budget: no limit configured (max_slot_wal_keep_size is unlimited).`);
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
const safeWalSize = slot.safe_wal_size != null ? Number(slot.safe_wal_size) : null;
|
|
297
|
+
if (safeWalSize == null) {
|
|
298
|
+
// safe_wal_size is null on PG < 13, or when no limit is set
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
const report = computeWalBudgetReport({
|
|
302
|
+
safeWalSize,
|
|
303
|
+
maxSize,
|
|
304
|
+
walStatus: slot.wal_status ?? 'unknown',
|
|
305
|
+
prevSample: this.prevWalBudgetSample,
|
|
306
|
+
now
|
|
307
|
+
});
|
|
308
|
+
// Update sample for next rate calculation
|
|
309
|
+
this.prevWalBudgetSample = { safeWalSize, timestamp: now };
|
|
310
|
+
const budgetLine = formatWalBudgetLine(report);
|
|
311
|
+
if (report.isWarning) {
|
|
312
|
+
this.logger.warn(budgetLine);
|
|
313
|
+
this.logger.warn(`Replication slot may be invalidated before snapshot completes. ` +
|
|
314
|
+
`Increase max_slot_wal_keep_size on the source database.`);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
this.logger.info(budgetLine);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Check if the replication slot is still valid. Called after each chunk
|
|
322
|
+
* flush during snapshot to detect slot invalidation early.
|
|
323
|
+
*
|
|
324
|
+
* The query hits pg_replication_slots (shared memory, not a table scan)
|
|
325
|
+
* and costs ~1-2ms per round-trip — negligible next to the per-chunk
|
|
326
|
+
* storage flush.
|
|
327
|
+
*/
|
|
328
|
+
async checkSlotHealth() {
|
|
329
|
+
// Ensure maxSlotWalKeepSize is populated for diagnostic context in error messages
|
|
330
|
+
await this.queryMaxSlotWalKeepSize();
|
|
331
|
+
const rows = pgwire.pgwireRows(await rquery(this.connections.pool, {
|
|
332
|
+
statement: 'SELECT * FROM pg_replication_slots WHERE slot_name = $1',
|
|
333
|
+
params: [{ type: 'varchar', value: this.slot_name }]
|
|
334
|
+
}));
|
|
335
|
+
if (rows.length === 0) {
|
|
336
|
+
// Slot row gone from pg_replication_slots — dropped externally.
|
|
337
|
+
// Possible causes: pg_drop_replication_slot() call (operator, management tool, cleanup cron)
|
|
338
|
+
throw new MissingReplicationSlotError(`[PSYNC_S1146] Replication slot ${this.slot_name} disappeared during snapshot.`, { walStatus: 'missing', phase: 'snapshot' });
|
|
339
|
+
}
|
|
340
|
+
const walStatus = rows[0].wal_status;
|
|
341
|
+
if (walStatus === 'lost') {
|
|
342
|
+
// Postgres marked the slot invalid. Possible invalidation_reason values (PG 14+):
|
|
343
|
+
// - wal_removed: WAL growth exceeded max_slot_wal_keep_size (the primary case)
|
|
344
|
+
// - wal_level_insufficient: wal_level changed away from 'logical'
|
|
345
|
+
// - idle_timeout (PG 18+): idle_replication_slot_timeout expired
|
|
346
|
+
// - rows_removed: catalog rows needed by the slot were vacuumed (safe to retry — fresh slot won't need them)
|
|
347
|
+
throw new MissingReplicationSlotError(`[PSYNC_S1146] Replication slot ${this.slot_name} was invalidated during snapshot` +
|
|
348
|
+
`${this.formatWalBudgetContext()}. ` +
|
|
349
|
+
`Increase max_slot_wal_keep_size on the source database.`, { walStatus: 'lost', phase: 'snapshot', invalidationReason: rows[0].invalidation_reason ?? undefined });
|
|
350
|
+
}
|
|
351
|
+
await this.logWalBudget(rows[0], performance.now());
|
|
352
|
+
}
|
|
353
|
+
formatWalBudgetContext() {
|
|
354
|
+
if (this.maxSlotWalKeepSize == null) {
|
|
355
|
+
return '';
|
|
356
|
+
}
|
|
357
|
+
return ` (limit: ${formatBytes(this.maxSlotWalKeepSize)})`;
|
|
358
|
+
}
|
|
245
359
|
async estimatedCountNumber(db, table) {
|
|
246
|
-
const results = await db
|
|
360
|
+
const results = await rquery(db, {
|
|
247
361
|
statement: `SELECT reltuples::bigint AS estimate
|
|
248
362
|
FROM pg_class
|
|
249
363
|
WHERE oid = $1::regclass`,
|
|
@@ -270,13 +384,13 @@ WHERE oid = $1::regclass`,
|
|
|
270
384
|
// If there is an existing healthy slot, we can skip this and continue
|
|
271
385
|
// initial replication where we left off.
|
|
272
386
|
await this.storage.clear({ signal: this.abort_signal });
|
|
273
|
-
await db
|
|
387
|
+
await rquery(db, {
|
|
274
388
|
statement: 'SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_name = $1',
|
|
275
389
|
params: [{ type: 'varchar', value: slotName }]
|
|
276
390
|
});
|
|
277
391
|
// We use the replication connection here, not a pool.
|
|
278
392
|
// The replication slot must be created before we start snapshotting tables.
|
|
279
|
-
await replicationConnection
|
|
393
|
+
await rquery(replicationConnection, `CREATE_REPLICATION_SLOT ${slotName} LOGICAL pgoutput`);
|
|
280
394
|
this.logger.info(`Created replication slot ${slotName}`);
|
|
281
395
|
}
|
|
282
396
|
await this.initialReplication(db);
|
|
@@ -316,7 +430,7 @@ WHERE oid = $1::regclass`,
|
|
|
316
430
|
// We could alternatively commit at the replication slot LSN.
|
|
317
431
|
// Get the current LSN for the snapshot.
|
|
318
432
|
// We could also use the LSN from the last table snapshot.
|
|
319
|
-
const rs = await db
|
|
433
|
+
const rs = await rquery(db, `select pg_current_wal_lsn() as lsn`);
|
|
320
434
|
const noCommitBefore = rs.rows[0].decodeWithoutCustomTypes(0);
|
|
321
435
|
await batch.markAllSnapshotDone(noCommitBefore);
|
|
322
436
|
await batch.commit(ZERO_LSN);
|
|
@@ -327,12 +441,12 @@ WHERE oid = $1::regclass`,
|
|
|
327
441
|
* If we don't explicitly check the contents of keepalive messages then a keepalive is detected
|
|
328
442
|
* rather quickly after initial replication - perhaps due to other WAL events.
|
|
329
443
|
* If we do explicitly check the contents of messages, we need an actual keepalive payload in order
|
|
330
|
-
* to advance the active
|
|
444
|
+
* to advance the active replication stream LSN.
|
|
331
445
|
*/
|
|
332
446
|
await sendKeepAlive(db);
|
|
333
447
|
const lastOp = flushResults?.flushed_op;
|
|
334
448
|
if (lastOp != null) {
|
|
335
|
-
// Populate the cache _after_ initial replication, but _before_ we switch to this
|
|
449
|
+
// Populate the cache _after_ initial replication, but _before_ we switch to this replication stream.
|
|
336
450
|
await this.storage.populatePersistentChecksumCache({
|
|
337
451
|
// No checkpoint yet, but we do have the opId.
|
|
338
452
|
maxOpId: lastOp,
|
|
@@ -360,7 +474,7 @@ WHERE oid = $1::regclass`,
|
|
|
360
474
|
// Note: We use the default "Read Committed" isolation level here, not snapshot isolation.
|
|
361
475
|
// The data may change during the transaction, but that is compensated for in the streaming
|
|
362
476
|
// replication afterwards.
|
|
363
|
-
await db
|
|
477
|
+
await rquery(db, 'BEGIN');
|
|
364
478
|
try {
|
|
365
479
|
await this.snapshotTable(batch, db, table, limited);
|
|
366
480
|
// Get the current LSN.
|
|
@@ -376,16 +490,22 @@ WHERE oid = $1::regclass`,
|
|
|
376
490
|
// 1. Complete the snapshot.
|
|
377
491
|
// 2. Wait until logical replication has caught up with all the change between A and B.
|
|
378
492
|
// Calling `markSnapshotDone(LSN B)` covers that.
|
|
379
|
-
const rs = await db
|
|
493
|
+
const rs = await rquery(db, `select pg_current_wal_lsn() as lsn`);
|
|
380
494
|
const tableLsnNotBefore = rs.rows[0].decodeWithoutCustomTypes(0);
|
|
381
495
|
// Side note: A ROLLBACK would probably also be fine here, since we only read in this transaction.
|
|
382
|
-
await db
|
|
496
|
+
await rquery(db, 'COMMIT');
|
|
383
497
|
const [resultTable] = await batch.markTableSnapshotDone([table], tableLsnNotBefore);
|
|
384
498
|
this.relationCache.update(resultTable);
|
|
385
499
|
return resultTable;
|
|
386
500
|
}
|
|
387
501
|
catch (e) {
|
|
388
|
-
|
|
502
|
+
try {
|
|
503
|
+
await rquery(db, 'ROLLBACK');
|
|
504
|
+
}
|
|
505
|
+
catch (e) {
|
|
506
|
+
// Ignore rollback errors after a failed transaction.
|
|
507
|
+
// If this happens, the connection is not likely recoverable anyway.
|
|
508
|
+
}
|
|
389
509
|
throw e;
|
|
390
510
|
}
|
|
391
511
|
}
|
|
@@ -454,6 +574,14 @@ WHERE oid = $1::regclass`,
|
|
|
454
574
|
}
|
|
455
575
|
// Important: flush before marking progress
|
|
456
576
|
await batch.flush();
|
|
577
|
+
if (this.onSnapshotChunkFlushed) {
|
|
578
|
+
await this.onSnapshotChunkFlushed();
|
|
579
|
+
}
|
|
580
|
+
const now = performance.now();
|
|
581
|
+
if (now - this.lastSlotHealthCheckTime >= this.slotHealthCheckIntervalMs) {
|
|
582
|
+
this.lastSlotHealthCheckTime = now;
|
|
583
|
+
await this.checkSlotHealth();
|
|
584
|
+
}
|
|
457
585
|
if (limited == null) {
|
|
458
586
|
let lastKey;
|
|
459
587
|
if (q instanceof ChunkedSnapshotQuery) {
|
|
@@ -504,7 +632,7 @@ WHERE oid = $1::regclass`,
|
|
|
504
632
|
// Snapshot if:
|
|
505
633
|
// 1. Snapshot is requested (false for initial snapshot, since that process handles it elsewhere)
|
|
506
634
|
// 2. Snapshot is not already done, AND:
|
|
507
|
-
// 3. The table is used in sync
|
|
635
|
+
// 3. The table is used in sync config.
|
|
508
636
|
const shouldSnapshot = snapshot && !result.table.snapshotComplete && result.table.syncAny;
|
|
509
637
|
if (shouldSnapshot) {
|
|
510
638
|
// Truncate this table, in case a previous snapshot was interrupted.
|
|
@@ -582,7 +710,7 @@ WHERE oid = $1::regclass`,
|
|
|
582
710
|
if (msg.tag == 'insert' || msg.tag == 'update' || msg.tag == 'delete') {
|
|
583
711
|
const table = this.getTable(getRelId(msg.relation));
|
|
584
712
|
if (!table.syncAny) {
|
|
585
|
-
this.logger.debug(`Table ${table.qualifiedName} not used in sync
|
|
713
|
+
this.logger.debug(`Table ${table.qualifiedName} not used in sync config - skipping`);
|
|
586
714
|
return null;
|
|
587
715
|
}
|
|
588
716
|
if (msg.tag == 'insert') {
|
|
@@ -678,7 +806,7 @@ WHERE oid = $1::regclass`,
|
|
|
678
806
|
}
|
|
679
807
|
catch (e) {
|
|
680
808
|
if (isReplicationSlotInvalidError(e)) {
|
|
681
|
-
throw new MissingReplicationSlotError(e.message, e);
|
|
809
|
+
throw new MissingReplicationSlotError(e.message, { walStatus: 'lost', phase: 'streaming', cause: e });
|
|
682
810
|
}
|
|
683
811
|
throw e;
|
|
684
812
|
}
|
|
@@ -773,9 +901,7 @@ WHERE oid = $1::regclass`,
|
|
|
773
901
|
else if (msg.tag == 'begin') {
|
|
774
902
|
// This may span multiple transactions in the same chunk, or even across chunks.
|
|
775
903
|
skipKeepalive = true;
|
|
776
|
-
|
|
777
|
-
this.oldestUncommittedChange = new Date(Number(msg.commitTime / 1000n));
|
|
778
|
-
}
|
|
904
|
+
this.replicationLag.trackUncommittedChange(new Date(Number(msg.commitTime / 1000n)));
|
|
779
905
|
}
|
|
780
906
|
else if (msg.tag == 'commit') {
|
|
781
907
|
this.metrics.getCounter(ReplicationMetric.TRANSACTIONS_REPLICATED).add(1);
|
|
@@ -786,7 +912,7 @@ WHERE oid = $1::regclass`,
|
|
|
786
912
|
skipKeepalive = false;
|
|
787
913
|
// flush() must be before the resnapshot check - that is
|
|
788
914
|
// typically what reports the resnapshot records.
|
|
789
|
-
await batch.flush({ oldestUncommittedChange: this.oldestUncommittedChange });
|
|
915
|
+
await batch.flush({ oldestUncommittedChange: this.replicationLag.oldestUncommittedChange });
|
|
790
916
|
// This _must_ be checked after the flush(), and before
|
|
791
917
|
// commit() or ack(). We never persist the resnapshot list,
|
|
792
918
|
// so we have to process it before marking our progress.
|
|
@@ -796,12 +922,11 @@ WHERE oid = $1::regclass`,
|
|
|
796
922
|
}
|
|
797
923
|
const { checkpointBlocked } = await batch.commit(msg.lsn, {
|
|
798
924
|
createEmptyCheckpoints,
|
|
799
|
-
oldestUncommittedChange: this.oldestUncommittedChange
|
|
925
|
+
oldestUncommittedChange: this.replicationLag.oldestUncommittedChange
|
|
800
926
|
});
|
|
801
927
|
await this.ack(msg.lsn, replicationStream);
|
|
802
928
|
if (!checkpointBlocked) {
|
|
803
|
-
this.
|
|
804
|
-
this.isStartingReplication = false;
|
|
929
|
+
this.replicationLag.markCommitted();
|
|
805
930
|
}
|
|
806
931
|
}
|
|
807
932
|
}
|
|
@@ -840,9 +965,9 @@ WHERE oid = $1::regclass`,
|
|
|
840
965
|
// It must only be used to associate checkpoints with LSNs.
|
|
841
966
|
const { checkpointBlocked } = await batch.keepalive(chunkLastLsn);
|
|
842
967
|
if (!checkpointBlocked) {
|
|
843
|
-
this.
|
|
968
|
+
this.replicationLag.clearUncommittedChange();
|
|
844
969
|
}
|
|
845
|
-
this.
|
|
970
|
+
this.replicationLag.markStarted();
|
|
846
971
|
}
|
|
847
972
|
// We receive chunks with empty messages often (about each second).
|
|
848
973
|
// Acknowledging here progresses the slot past these and frees up resources.
|
|
@@ -897,18 +1022,8 @@ WHERE oid = $1::regclass`,
|
|
|
897
1022
|
const version = await this.connections.getServerVersion();
|
|
898
1023
|
return version ? version.compareMain('14.0.0') >= 0 : false;
|
|
899
1024
|
}
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
if (this.isStartingReplication) {
|
|
903
|
-
// We don't have anything to compute replication lag with yet.
|
|
904
|
-
return undefined;
|
|
905
|
-
}
|
|
906
|
-
else {
|
|
907
|
-
// We don't have any uncommitted changes, so replication is up-to-date.
|
|
908
|
-
return 0;
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
return Date.now() - this.oldestUncommittedChange.getTime();
|
|
1025
|
+
getReplicationLagMillis() {
|
|
1026
|
+
return this.replicationLag.getLagMillis();
|
|
912
1027
|
}
|
|
913
1028
|
touch() {
|
|
914
1029
|
container.probes.touch().catch((e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalStream.js","sourceRoot":"","sources":["../../src/replication/WalStream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WalStream.js","sourceRoot":"","sources":["../../src/replication/WalStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,5 +24,5 @@ export declare class WalStreamReplicationJob extends replication.AbstractReplica
|
|
|
24
24
|
get slotName(): string;
|
|
25
25
|
replicate(): Promise<void>;
|
|
26
26
|
replicateOnce(): Promise<void>;
|
|
27
|
-
getReplicationLagMillis():
|
|
27
|
+
getReplicationLagMillis(): number | undefined;
|
|
28
28
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { container
|
|
2
|
-
import { MissingReplicationSlotError,
|
|
1
|
+
import { container } from '@powersync/lib-services-framework';
|
|
2
|
+
import { MissingReplicationSlotError, shouldRetryReplication } from './MissingReplicationSlotError.js';
|
|
3
|
+
import { sendKeepAlive, WalStream } from './WalStream.js';
|
|
3
4
|
import { replication } from '@powersync/service-core';
|
|
4
5
|
import { getApplicationName } from '../utils/application-name.js';
|
|
5
6
|
export class WalStreamReplicationJob extends replication.AbstractReplicationJob {
|
|
@@ -8,7 +9,7 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
8
9
|
lastStream = null;
|
|
9
10
|
constructor(options) {
|
|
10
11
|
super(options);
|
|
11
|
-
this.logger =
|
|
12
|
+
this.logger = options.storage.logger;
|
|
12
13
|
this.connectionFactory = options.connectionFactory;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
@@ -78,8 +79,10 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
78
79
|
this.rateLimiter.reportError(e);
|
|
79
80
|
}
|
|
80
81
|
if (e instanceof MissingReplicationSlotError) {
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
if (shouldRetryReplication(e)) {
|
|
83
|
+
// This stops replication on this slot and restarts with a new slot
|
|
84
|
+
await this.options.storage.factory.restartReplication(this.storage.group_id);
|
|
85
|
+
}
|
|
83
86
|
}
|
|
84
87
|
// No need to rethrow - the error is already logged, and retry behavior is the same on error
|
|
85
88
|
}
|
|
@@ -118,7 +121,7 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
118
121
|
await connectionManager.end();
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
|
-
|
|
124
|
+
getReplicationLagMillis() {
|
|
122
125
|
return this.lastStream?.getReplicationLagMillis();
|
|
123
126
|
}
|
|
124
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalStreamReplicationJob.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicationJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"WalStreamReplicationJob.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicationJob.ts"],"names":[],"mappings":"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"}
|