@powersync/service-module-postgres 0.0.0-dev-20250122110924 → 0.0.0-dev-20250214100224
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/CHANGELOG.md +62 -11
- package/dist/api/PostgresRouteAPIAdapter.d.ts +2 -1
- package/dist/api/PostgresRouteAPIAdapter.js +16 -9
- package/dist/api/PostgresRouteAPIAdapter.js.map +1 -1
- package/dist/auth/SupabaseKeyCollector.js +6 -5
- package/dist/auth/SupabaseKeyCollector.js.map +1 -1
- package/dist/module/PostgresModule.js +2 -2
- package/dist/module/PostgresModule.js.map +1 -1
- package/dist/replication/ConnectionManagerFactory.js +2 -0
- package/dist/replication/ConnectionManagerFactory.js.map +1 -1
- package/dist/replication/PgManager.d.ts +5 -0
- package/dist/replication/PgManager.js +17 -2
- package/dist/replication/PgManager.js.map +1 -1
- package/dist/replication/PostgresErrorRateLimiter.js +5 -7
- package/dist/replication/PostgresErrorRateLimiter.js.map +1 -1
- package/dist/replication/WalStream.d.ts +18 -3
- package/dist/replication/WalStream.js +127 -17
- package/dist/replication/WalStream.js.map +1 -1
- package/dist/replication/WalStreamReplicationJob.js +7 -5
- package/dist/replication/WalStreamReplicationJob.js.map +1 -1
- package/dist/replication/WalStreamReplicator.js +2 -1
- package/dist/replication/WalStreamReplicator.js.map +1 -1
- package/dist/utils/migration_lib.js +1 -3
- package/dist/utils/migration_lib.js.map +1 -1
- package/dist/utils/populate_test_data.js +1 -1
- package/dist/utils/populate_test_data.js.map +1 -1
- package/package.json +14 -12
- package/src/api/PostgresRouteAPIAdapter.ts +13 -8
- package/src/replication/PgManager.ts +10 -0
- package/src/replication/WalStream.ts +147 -20
- package/src/replication/WalStreamReplicationJob.ts +3 -3
- package/test/src/checkpoints.test.ts +70 -0
- package/test/src/storage_combination.test.ts +35 -0
- package/test/src/util.ts +1 -1
- package/test/src/wal_stream_utils.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as lib_postgres from '@powersync/lib-service-postgres';
|
|
2
|
-
import { container, errors, logger, ReplicationAbortedError, ReplicationAssertionError } from '@powersync/lib-services-framework';
|
|
2
|
+
import { container, DatabaseConnectionError, ErrorCode, errors, logger, ReplicationAbortedError, ReplicationAssertionError } from '@powersync/lib-services-framework';
|
|
3
3
|
import { getUuidReplicaIdentityBson, Metrics, storage } from '@powersync/service-core';
|
|
4
4
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
5
5
|
import { toSyncRulesRow } from '@powersync/service-sync-rules';
|
|
@@ -9,16 +9,42 @@ import { checkSourceConfiguration, getReplicationIdentityColumns } from './repli
|
|
|
9
9
|
export const ZERO_LSN = '00000000/00000000';
|
|
10
10
|
export const PUBLICATION_NAME = 'powersync';
|
|
11
11
|
export const POSTGRES_DEFAULT_SCHEMA = 'public';
|
|
12
|
+
export const KEEPALIVE_CONTENT = 'ping';
|
|
13
|
+
export const KEEPALIVE_BUFFER = Buffer.from(KEEPALIVE_CONTENT);
|
|
14
|
+
export const KEEPALIVE_STATEMENT = {
|
|
15
|
+
statement: /* sql */ `
|
|
16
|
+
SELECT
|
|
17
|
+
*
|
|
18
|
+
FROM
|
|
19
|
+
pg_logical_emit_message(FALSE, 'powersync', $1)
|
|
20
|
+
`,
|
|
21
|
+
params: [{ type: 'varchar', value: KEEPALIVE_CONTENT }]
|
|
22
|
+
};
|
|
23
|
+
export const isKeepAliveMessage = (msg) => {
|
|
24
|
+
return (msg.tag == 'message' &&
|
|
25
|
+
msg.prefix == 'powersync' &&
|
|
26
|
+
msg.content &&
|
|
27
|
+
Buffer.from(msg.content).equals(KEEPALIVE_BUFFER));
|
|
28
|
+
};
|
|
29
|
+
export const sendKeepAlive = async (db) => {
|
|
30
|
+
await lib_postgres.retriedQuery(db, KEEPALIVE_STATEMENT);
|
|
31
|
+
};
|
|
12
32
|
export class MissingReplicationSlotError extends Error {
|
|
13
33
|
constructor(message) {
|
|
14
34
|
super(message);
|
|
15
35
|
}
|
|
16
36
|
}
|
|
17
37
|
export class WalStream {
|
|
38
|
+
sync_rules;
|
|
39
|
+
group_id;
|
|
40
|
+
connection_id = 1;
|
|
41
|
+
storage;
|
|
42
|
+
slot_name;
|
|
43
|
+
connections;
|
|
44
|
+
abort_signal;
|
|
45
|
+
relation_cache = new Map();
|
|
46
|
+
startedStreaming = false;
|
|
18
47
|
constructor(options) {
|
|
19
|
-
this.connection_id = 1;
|
|
20
|
-
this.relation_cache = new Map();
|
|
21
|
-
this.startedStreaming = false;
|
|
22
48
|
this.storage = options.storage;
|
|
23
49
|
this.sync_rules = options.storage.getParsedSyncRules({ defaultSchema: POSTGRES_DEFAULT_SCHEMA });
|
|
24
50
|
this.group_id = options.storage.group_id;
|
|
@@ -30,7 +56,7 @@ export class WalStream {
|
|
|
30
56
|
// Ping to speed up cancellation of streaming replication
|
|
31
57
|
// We're not using pg_snapshot here, since it could be in the middle of
|
|
32
58
|
// an initial replication transaction.
|
|
33
|
-
const promise =
|
|
59
|
+
const promise = sendKeepAlive(this.connections.pool);
|
|
34
60
|
promise.catch((e) => {
|
|
35
61
|
// Failures here are okay - this only speeds up stopping the process.
|
|
36
62
|
logger.warn('Failed to ping connection', e);
|
|
@@ -117,6 +143,7 @@ export class WalStream {
|
|
|
117
143
|
}
|
|
118
144
|
async initSlot() {
|
|
119
145
|
await checkSourceConfiguration(this.connections.pool, PUBLICATION_NAME);
|
|
146
|
+
await this.ensureStorageCompatibility();
|
|
120
147
|
const slotName = this.slot_name;
|
|
121
148
|
const status = await this.storage.getStatus();
|
|
122
149
|
const snapshotDone = status.snapshot_done && status.checkpoint_lsn != null;
|
|
@@ -290,6 +317,15 @@ WHERE oid = $1::regclass`,
|
|
|
290
317
|
// We could alternatively commit at the replication slot LSN.
|
|
291
318
|
await batch.commit(ZERO_LSN);
|
|
292
319
|
});
|
|
320
|
+
/**
|
|
321
|
+
* Send a keepalive message after initial replication.
|
|
322
|
+
* In some edge cases we wait for a keepalive after the initial snapshot.
|
|
323
|
+
* If we don't explicitly check the contents of keepalive messages then a keepalive is detected
|
|
324
|
+
* rather quickly after initial replication - perhaps due to other WAL events.
|
|
325
|
+
* If we do explicitly check the contents of messages, we need an actual keepalive payload in order
|
|
326
|
+
* to advance the active sync rules LSN.
|
|
327
|
+
*/
|
|
328
|
+
await sendKeepAlive(db);
|
|
293
329
|
}
|
|
294
330
|
static *getQueryData(results) {
|
|
295
331
|
for (let row of results) {
|
|
@@ -486,12 +522,28 @@ WHERE oid = $1::regclass`,
|
|
|
486
522
|
}
|
|
487
523
|
async streamChanges(replicationConnection) {
|
|
488
524
|
// When changing any logic here, check /docs/wal-lsns.md.
|
|
525
|
+
const { createEmptyCheckpoints } = await this.ensureStorageCompatibility();
|
|
526
|
+
const replicationOptions = {
|
|
527
|
+
proto_version: '1',
|
|
528
|
+
publication_names: PUBLICATION_NAME
|
|
529
|
+
};
|
|
530
|
+
/**
|
|
531
|
+
* Viewing the contents of logical messages emitted with `pg_logical_emit_message`
|
|
532
|
+
* is only supported on Postgres >= 14.0.
|
|
533
|
+
* https://www.postgresql.org/docs/14/protocol-logical-replication.html
|
|
534
|
+
*/
|
|
535
|
+
const exposesLogicalMessages = await this.checkLogicalMessageSupport();
|
|
536
|
+
if (exposesLogicalMessages) {
|
|
537
|
+
/**
|
|
538
|
+
* Only add this option if the Postgres server supports it.
|
|
539
|
+
* Adding the option to a server that doesn't support it will throw an exception when starting logical replication.
|
|
540
|
+
* Error: `unrecognized pgoutput option: messages`
|
|
541
|
+
*/
|
|
542
|
+
replicationOptions['messages'] = 'true';
|
|
543
|
+
}
|
|
489
544
|
const replicationStream = replicationConnection.logicalReplication({
|
|
490
545
|
slot: this.slot_name,
|
|
491
|
-
options:
|
|
492
|
-
proto_version: '1',
|
|
493
|
-
publication_names: PUBLICATION_NAME
|
|
494
|
-
}
|
|
546
|
+
options: replicationOptions
|
|
495
547
|
});
|
|
496
548
|
this.startedStreaming = true;
|
|
497
549
|
// Auto-activate as soon as initial replication is done
|
|
@@ -508,6 +560,13 @@ WHERE oid = $1::regclass`,
|
|
|
508
560
|
// chunkLastLsn may come from normal messages in the chunk,
|
|
509
561
|
// or from a PrimaryKeepalive message.
|
|
510
562
|
const { messages, lastLsn: chunkLastLsn } = chunk;
|
|
563
|
+
/**
|
|
564
|
+
* We can check if an explicit keepalive was sent if `exposesLogicalMessages == true`.
|
|
565
|
+
* If we can't check the logical messages, we should assume a keepalive if we
|
|
566
|
+
* receive an empty array of messages in a replication event.
|
|
567
|
+
*/
|
|
568
|
+
const assumeKeepAlive = !exposesLogicalMessages;
|
|
569
|
+
let keepAliveDetected = false;
|
|
511
570
|
for (const msg of messages) {
|
|
512
571
|
if (msg.tag == 'relation') {
|
|
513
572
|
await this.handleRelation(batch, getPgOutputRelation(msg), true);
|
|
@@ -518,26 +577,40 @@ WHERE oid = $1::regclass`,
|
|
|
518
577
|
else if (msg.tag == 'commit') {
|
|
519
578
|
Metrics.getInstance().transactions_replicated_total.add(1);
|
|
520
579
|
inTx = false;
|
|
521
|
-
await batch.commit(msg.lsn);
|
|
580
|
+
await batch.commit(msg.lsn, { createEmptyCheckpoints });
|
|
522
581
|
await this.ack(msg.lsn, replicationStream);
|
|
523
582
|
}
|
|
524
583
|
else {
|
|
525
584
|
if (count % 100 == 0) {
|
|
526
585
|
logger.info(`${this.slot_name} replicating op ${count} ${msg.lsn}`);
|
|
527
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* If we can see the contents of logical messages, then we can check if a keepalive
|
|
589
|
+
* message is present. We only perform a keepalive (below) if we explicitly detect a keepalive message.
|
|
590
|
+
* If we can't see the contents of logical messages, then we should assume a keepalive is required
|
|
591
|
+
* due to the default value of `assumeKeepalive`.
|
|
592
|
+
*/
|
|
593
|
+
if (exposesLogicalMessages && isKeepAliveMessage(msg)) {
|
|
594
|
+
keepAliveDetected = true;
|
|
595
|
+
}
|
|
528
596
|
count += 1;
|
|
529
597
|
await this.writeChange(batch, msg);
|
|
530
598
|
}
|
|
531
599
|
}
|
|
532
600
|
if (!inTx) {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
601
|
+
if (assumeKeepAlive || keepAliveDetected) {
|
|
602
|
+
// Reset the detection flag.
|
|
603
|
+
keepAliveDetected = false;
|
|
604
|
+
// In a transaction, we ack and commit according to the transaction progress.
|
|
605
|
+
// Outside transactions, we use the PrimaryKeepalive messages to advance progress.
|
|
606
|
+
// Big caveat: This _must not_ be used to skip individual messages, since this LSN
|
|
607
|
+
// may be in the middle of the next transaction.
|
|
608
|
+
// It must only be used to associate checkpoints with LSNs.
|
|
609
|
+
await batch.keepalive(chunkLastLsn);
|
|
540
610
|
}
|
|
611
|
+
// We receive chunks with empty messages often (about each second).
|
|
612
|
+
// Acknowledging here progresses the slot past these and frees up resources.
|
|
613
|
+
await this.ack(chunkLastLsn, replicationStream);
|
|
541
614
|
}
|
|
542
615
|
Metrics.getInstance().chunks_replicated_total.add(1);
|
|
543
616
|
}
|
|
@@ -549,6 +622,43 @@ WHERE oid = $1::regclass`,
|
|
|
549
622
|
}
|
|
550
623
|
replicationStream.ack(lsn);
|
|
551
624
|
}
|
|
625
|
+
/**
|
|
626
|
+
* Ensures that the storage is compatible with the replication connection.
|
|
627
|
+
* @throws {DatabaseConnectionError} If the storage is not compatible with the replication connection.
|
|
628
|
+
*/
|
|
629
|
+
async ensureStorageCompatibility() {
|
|
630
|
+
const supportsLogicalMessages = await this.checkLogicalMessageSupport();
|
|
631
|
+
const storageIdentifier = await this.storage.factory.getSystemIdentifier();
|
|
632
|
+
if (storageIdentifier.type != lib_postgres.POSTGRES_CONNECTION_TYPE) {
|
|
633
|
+
return {
|
|
634
|
+
// Keep the same behaviour as before allowing Postgres storage.
|
|
635
|
+
createEmptyCheckpoints: true
|
|
636
|
+
};
|
|
637
|
+
}
|
|
638
|
+
const parsedStorageIdentifier = lib_postgres.utils.decodePostgresSystemIdentifier(storageIdentifier.id);
|
|
639
|
+
/**
|
|
640
|
+
* Check if the same server is being used for both the sync bucket storage and the logical replication.
|
|
641
|
+
*/
|
|
642
|
+
const replicationIdentifier = await lib_postgres.utils.queryPostgresSystemIdentifier(this.connections.pool);
|
|
643
|
+
if (!supportsLogicalMessages && replicationIdentifier.server_id == parsedStorageIdentifier.server_id) {
|
|
644
|
+
throw new DatabaseConnectionError(ErrorCode.PSYNC_S1144, `Separate Postgres servers are required for the replication source and sync bucket storage when using Postgres versions below 14.0.`, new Error('Postgres version is below 14'));
|
|
645
|
+
}
|
|
646
|
+
return {
|
|
647
|
+
/**
|
|
648
|
+
* Don't create empty checkpoints if the same Postgres database is used for the data source
|
|
649
|
+
* and sync bucket storage. Creating empty checkpoints will cause WAL feedback loops.
|
|
650
|
+
*/
|
|
651
|
+
createEmptyCheckpoints: replicationIdentifier.database_name != parsedStorageIdentifier.database_name
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
/**
|
|
655
|
+
* Check if the replication connection Postgres server supports
|
|
656
|
+
* viewing the contents of logical replication messages.
|
|
657
|
+
*/
|
|
658
|
+
async checkLogicalMessageSupport() {
|
|
659
|
+
const version = await this.connections.getServerVersion();
|
|
660
|
+
return version ? version.compareMain('14.0.0') >= 0 : false;
|
|
661
|
+
}
|
|
552
662
|
}
|
|
553
663
|
async function touch() {
|
|
554
664
|
// FIXME: The hosted Kubernetes probe does not actually check the timestamp on this.
|
|
@@ -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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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { container } from '@powersync/lib-services-framework';
|
|
2
|
-
import { MissingReplicationSlotError, WalStream } from './WalStream.js';
|
|
2
|
+
import { MissingReplicationSlotError, sendKeepAlive, WalStream } from './WalStream.js';
|
|
3
3
|
import { replication } from '@powersync/service-core';
|
|
4
4
|
export class WalStreamReplicationJob extends replication.AbstractReplicationJob {
|
|
5
|
+
connectionFactory;
|
|
6
|
+
connectionManager;
|
|
5
7
|
constructor(options) {
|
|
6
8
|
super(options);
|
|
7
9
|
this.connectionFactory = options.connectionFactory;
|
|
8
10
|
this.connectionManager = this.connectionFactory.create({
|
|
9
11
|
// Pool connections are only used intermittently.
|
|
10
|
-
idleTimeout:
|
|
12
|
+
idleTimeout: 30_000,
|
|
11
13
|
maxSize: 2
|
|
12
14
|
});
|
|
13
15
|
}
|
|
@@ -25,7 +27,7 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
25
27
|
*/
|
|
26
28
|
async keepAlive() {
|
|
27
29
|
try {
|
|
28
|
-
await this.connectionManager.pool
|
|
30
|
+
await sendKeepAlive(this.connectionManager.pool);
|
|
29
31
|
}
|
|
30
32
|
catch (e) {
|
|
31
33
|
this.logger.warn(`KeepAlive failed, unable to post to WAL`, e);
|
|
@@ -69,7 +71,7 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
69
71
|
// such as caused by cached PG schemas.
|
|
70
72
|
const connectionManager = this.connectionFactory.create({
|
|
71
73
|
// Pool connections are only used intermittently.
|
|
72
|
-
idleTimeout:
|
|
74
|
+
idleTimeout: 30_000,
|
|
73
75
|
maxSize: 2
|
|
74
76
|
});
|
|
75
77
|
try {
|
|
@@ -85,7 +87,7 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
85
87
|
await stream.replicate();
|
|
86
88
|
}
|
|
87
89
|
catch (e) {
|
|
88
|
-
this.logger.error(
|
|
90
|
+
this.logger.error(`${this.slotName} Replication error`, e);
|
|
89
91
|
if (e.cause != null) {
|
|
90
92
|
// Example:
|
|
91
93
|
// PgError.conn_ended: Unable to do postgres query on ended connection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalStreamReplicationJob.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicationJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"WalStreamReplicationJob.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicationJob.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { cleanUpReplicationSlot } from './replication-utils.js';
|
|
|
3
3
|
import { WalStreamReplicationJob } from './WalStreamReplicationJob.js';
|
|
4
4
|
import { PostgresModule } from '../module/PostgresModule.js';
|
|
5
5
|
export class WalStreamReplicator extends replication.AbstractReplicator {
|
|
6
|
+
connectionFactory;
|
|
6
7
|
constructor(options) {
|
|
7
8
|
super(options);
|
|
8
9
|
this.connectionFactory = options.connectionFactory;
|
|
@@ -18,7 +19,7 @@ export class WalStreamReplicator extends replication.AbstractReplicator {
|
|
|
18
19
|
}
|
|
19
20
|
async cleanUp(syncRulesStorage) {
|
|
20
21
|
const connectionManager = this.connectionFactory.create({
|
|
21
|
-
idleTimeout:
|
|
22
|
+
idleTimeout: 30_000,
|
|
22
23
|
maxSize: 1
|
|
23
24
|
});
|
|
24
25
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalStreamReplicator.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,OAAO,mBAAoB,SAAQ,WAAW,CAAC,kBAA2C;
|
|
1
|
+
{"version":3,"file":"WalStreamReplicator.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,OAAO,mBAAoB,SAAQ,WAAW,CAAC,kBAA2C;IAC7E,iBAAiB,CAA2B;IAE7D,YAAY,OAAmC;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACrD,CAAC;IAED,SAAS,CAAC,OAAqC;QAC7C,OAAO,IAAI,uBAAuB,CAAC;YACjC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,gBAAgD;QAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACtD,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QACH,IAAI,CAAC;YACH,iFAAiF;YACjF,MAAM,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC;gBAAS,CAAC;YACT,MAAM,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
2
2
|
// Very loosely based on https://github.com/porsager/postgres-shift/
|
|
3
3
|
export class Migrations {
|
|
4
|
-
|
|
5
|
-
this.migrations = [];
|
|
6
|
-
}
|
|
4
|
+
migrations = [];
|
|
7
5
|
add(id, name, up) {
|
|
8
6
|
if (this.migrations.length > 0 && this.migrations[this.migrations.length - 1].id >= id) {
|
|
9
7
|
throw new ServiceAssertionError('Migration ids must be strictly incrementing');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration_lib.js","sourceRoot":"","sources":["../../src/utils/migration_lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAW1E,oEAAoE;AACpE,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"migration_lib.js","sourceRoot":"","sources":["../../src/utils/migration_lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAW1E,oEAAoE;AACpE,MAAM,OAAO,UAAU;IACb,UAAU,GAAgB,EAAE,CAAC;IAErC,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,EAAqB;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YACvF,MAAM,IAAI,qBAAqB,CAAC,6CAA6C,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,EAAuB;QAC9B,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzC,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,IAAI,SAAS,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;oBAC9B,SAAS;gBACX,CAAC;gBACD,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAEvB,MAAM,EAAE,CAAC,KAAK,CAAC;oBACb,SAAS,EAAE;;;;;;;;KAQhB;oBACK,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE;wBACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;qBAC3C;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3B,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,EAAuB;QACzC,OAAO,EAAE;aACN,KAAK,CACJ;;;;KAIH,CACE;aACA,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAAuB;QACjD,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;KAKd,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Worker } from 'node:worker_threads';
|
|
2
2
|
export async function populateData(options) {
|
|
3
|
-
const WORKER_TIMEOUT =
|
|
3
|
+
const WORKER_TIMEOUT = 30_000;
|
|
4
4
|
const worker = new Worker(new URL('./populate_test_data_worker.js', import.meta.url), {
|
|
5
5
|
workerData: options
|
|
6
6
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populate_test_data.js","sourceRoot":"","sources":["../../src/utils/populate_test_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"populate_test_data.js","sourceRoot":"","sources":["../../src/utils/populate_test_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACpF,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,0BAA0B;QAC1B,MAAM,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC,EAAE,cAAc,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "0.0.0-dev-
|
|
8
|
+
"version": "0.0.0-dev-20250214100224",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"license": "FSL-1.1-Apache-2.0",
|
|
11
11
|
"type": "module",
|
|
@@ -22,24 +22,26 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"pgwire": "github:kagis/pgwire#f1cb95f9a0f42a612bb5a6b67bb2eb793fc5fc87",
|
|
26
25
|
"jose": "^4.15.1",
|
|
26
|
+
"pgwire": "github:kagis/pgwire#f1cb95f9a0f42a612bb5a6b67bb2eb793fc5fc87",
|
|
27
|
+
"semver": "^7.5.4",
|
|
27
28
|
"ts-codec": "^1.3.0",
|
|
28
|
-
"uuid": "^9.0.1",
|
|
29
29
|
"uri-js": "^4.4.1",
|
|
30
|
-
"
|
|
31
|
-
"@powersync/lib-service-postgres": "0.
|
|
32
|
-
"@powersync/
|
|
33
|
-
"@powersync/service-
|
|
30
|
+
"uuid": "^9.0.1",
|
|
31
|
+
"@powersync/lib-service-postgres": "0.3.1",
|
|
32
|
+
"@powersync/lib-services-framework": "0.5.1",
|
|
33
|
+
"@powersync/service-core": "0.0.0-dev-20250214100224",
|
|
34
|
+
"@powersync/service-jpgwire": "0.19.0",
|
|
34
35
|
"@powersync/service-jsonbig": "0.17.10",
|
|
35
|
-
"@powersync/service-sync-rules": "0.
|
|
36
|
-
"@powersync/service-types": "0.
|
|
36
|
+
"@powersync/service-sync-rules": "0.23.4",
|
|
37
|
+
"@powersync/service-types": "0.8.0"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
40
|
+
"@types/semver": "^7.5.4",
|
|
39
41
|
"@types/uuid": "^9.0.4",
|
|
40
|
-
"@powersync/service-core-tests": "0.0.0-dev-
|
|
41
|
-
"@powersync/service-module-mongodb-storage": "0.0.0-dev-
|
|
42
|
-
"@powersync/service-module-postgres-storage": "0.0.0-dev-
|
|
42
|
+
"@powersync/service-core-tests": "0.0.0-dev-20250214100224",
|
|
43
|
+
"@powersync/service-module-mongodb-storage": "0.0.0-dev-20250214100224",
|
|
44
|
+
"@powersync/service-module-postgres-storage": "0.0.0-dev-20250214100224"
|
|
43
45
|
},
|
|
44
46
|
"scripts": {
|
|
45
47
|
"build": "tsc -b",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as lib_postgres from '@powersync/lib-service-postgres';
|
|
2
2
|
import { ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
3
|
-
import { api, ParseSyncRulesOptions } from '@powersync/service-core';
|
|
3
|
+
import { api, ParseSyncRulesOptions, ReplicationHeadCallback } from '@powersync/service-core';
|
|
4
4
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
5
5
|
import * as sync_rules from '@powersync/service-sync-rules';
|
|
6
6
|
import * as service_types from '@powersync/service-types';
|
|
7
7
|
import * as replication_utils from '../replication/replication-utils.js';
|
|
8
8
|
import { getDebugTableInfo } from '../replication/replication-utils.js';
|
|
9
|
-
import { PUBLICATION_NAME } from '../replication/WalStream.js';
|
|
9
|
+
import { KEEPALIVE_STATEMENT, PUBLICATION_NAME } from '../replication/WalStream.js';
|
|
10
10
|
import * as types from '../types/types.js';
|
|
11
11
|
|
|
12
12
|
export class PostgresRouteAPIAdapter implements api.RouteAPI {
|
|
@@ -241,17 +241,22 @@ FROM pg_replication_slots WHERE slot_name = $1 LIMIT 1;`,
|
|
|
241
241
|
// However, on Aurora (Postgres compatible), it can return an entirely different LSN,
|
|
242
242
|
// causing the write checkpoints to never be replicated back to the client.
|
|
243
243
|
// For those, we need to use pg_current_wal_lsn() instead.
|
|
244
|
-
const { results } = await lib_postgres.retriedQuery(
|
|
245
|
-
this.pool,
|
|
246
|
-
{ statement: `SELECT pg_current_wal_lsn() as lsn` },
|
|
247
|
-
{ statement: `SELECT pg_logical_emit_message(false, 'powersync', 'ping')` }
|
|
248
|
-
);
|
|
244
|
+
const { results } = await lib_postgres.retriedQuery(this.pool, `SELECT pg_current_wal_lsn() as lsn`);
|
|
249
245
|
|
|
250
|
-
// Specifically use the lsn from the first statement, not the second one.
|
|
251
246
|
const lsn = results[0].rows[0][0];
|
|
252
247
|
return String(lsn);
|
|
253
248
|
}
|
|
254
249
|
|
|
250
|
+
async createReplicationHead<T>(callback: ReplicationHeadCallback<T>): Promise<T> {
|
|
251
|
+
const currentLsn = await this.getReplicationHead();
|
|
252
|
+
|
|
253
|
+
const r = await callback(currentLsn);
|
|
254
|
+
|
|
255
|
+
await lib_postgres.retriedQuery(this.pool, KEEPALIVE_STATEMENT);
|
|
256
|
+
|
|
257
|
+
return r;
|
|
258
|
+
}
|
|
259
|
+
|
|
255
260
|
async getConnectionSchema(): Promise<service_types.DatabaseSchema[]> {
|
|
256
261
|
// https://github.com/Borvik/vscode-postgres/blob/88ec5ed061a0c9bced6c5d4ec122d0759c3f3247/src/language/server.ts
|
|
257
262
|
const results = await lib_postgres.retriedQuery(
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
2
|
+
import semver from 'semver';
|
|
2
3
|
import { NormalizedPostgresConnectionConfig } from '../types/types.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -35,6 +36,15 @@ export class PgManager {
|
|
|
35
36
|
return await p;
|
|
36
37
|
}
|
|
37
38
|
|
|
39
|
+
/**
|
|
40
|
+
* @returns The Postgres server version in a parsed Semver instance
|
|
41
|
+
*/
|
|
42
|
+
async getServerVersion(): Promise<semver.SemVer | null> {
|
|
43
|
+
const result = await this.pool.query(`SHOW server_version;`);
|
|
44
|
+
// The result is usually of the form "16.2 (Debian 16.2-1.pgdg120+2)"
|
|
45
|
+
return semver.coerce(result.rows[0][0].split(' ')[0]);
|
|
46
|
+
}
|
|
47
|
+
|
|
38
48
|
/**
|
|
39
49
|
* Create a new standard connection, used for initial snapshot.
|
|
40
50
|
*
|