@powersync/service-module-postgres 0.14.3 → 0.15.0
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 +50 -0
- package/dist/api/PostgresRouteAPIAdapter.js +3 -1
- package/dist/api/PostgresRouteAPIAdapter.js.map +1 -1
- package/dist/module/PostgresModule.d.ts +1 -2
- package/dist/module/PostgresModule.js +8 -42
- package/dist/module/PostgresModule.js.map +1 -1
- package/dist/replication/PgManager.js +3 -2
- package/dist/replication/PgManager.js.map +1 -1
- package/dist/replication/PgRelation.js +1 -1
- package/dist/replication/PgRelation.js.map +1 -1
- package/dist/replication/SnapshotQuery.js +4 -4
- package/dist/replication/SnapshotQuery.js.map +1 -1
- package/dist/replication/WalStream.d.ts +1 -0
- package/dist/replication/WalStream.js +13 -13
- package/dist/replication/WalStream.js.map +1 -1
- package/dist/replication/WalStreamReplicationJob.js +5 -2
- package/dist/replication/WalStreamReplicationJob.js.map +1 -1
- package/dist/replication/WalStreamReplicator.js +3 -1
- package/dist/replication/WalStreamReplicator.js.map +1 -1
- package/dist/replication/replication-utils.js +10 -2
- package/dist/replication/replication-utils.js.map +1 -1
- package/dist/utils/application-name.d.ts +4 -0
- package/dist/utils/application-name.js +8 -0
- package/dist/utils/application-name.js.map +1 -0
- package/dist/utils/populate_test_data_worker.js +4 -1
- package/dist/utils/populate_test_data_worker.js.map +1 -1
- package/package.json +11 -11
- package/src/api/PostgresRouteAPIAdapter.ts +3 -1
- package/src/module/PostgresModule.ts +7 -45
- package/src/replication/PgManager.ts +3 -2
- package/src/replication/PgRelation.ts +2 -2
- package/src/replication/SnapshotQuery.ts +4 -4
- package/src/replication/WalStream.ts +13 -15
- package/src/replication/WalStreamReplicationJob.ts +5 -2
- package/src/replication/WalStreamReplicator.ts +3 -1
- package/src/replication/replication-utils.ts +10 -2
- package/src/utils/application-name.ts +8 -0
- package/src/utils/populate_test_data_worker.ts +4 -1
- package/test/src/checkpoints.test.ts +2 -0
- package/test/src/large_batch.test.ts +0 -1
- package/test/src/slow_tests.test.ts +0 -2
- package/test/src/util.ts +3 -5
- package/test/src/wal_stream.test.ts +12 -21
- package/test/src/wal_stream_utils.ts +10 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/auth/SupabaseKeyCollector.d.ts +0 -17
- package/dist/auth/SupabaseKeyCollector.js +0 -69
- package/dist/auth/SupabaseKeyCollector.js.map +0 -1
- package/src/auth/SupabaseKeyCollector.ts +0 -81
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalStreamReplicationJob.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicationJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE/F,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"WalStreamReplicationJob.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicationJob.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { replication } from '@powersync/service-core';
|
|
2
|
+
import { PostgresModule } from '../module/PostgresModule.js';
|
|
3
|
+
import { getApplicationName } from '../utils/application-name.js';
|
|
2
4
|
import { cleanUpReplicationSlot } from './replication-utils.js';
|
|
3
5
|
import { WalStreamReplicationJob } from './WalStreamReplicationJob.js';
|
|
4
|
-
import { PostgresModule } from '../module/PostgresModule.js';
|
|
5
6
|
export class WalStreamReplicator extends replication.AbstractReplicator {
|
|
6
7
|
connectionFactory;
|
|
7
8
|
constructor(options) {
|
|
@@ -20,6 +21,7 @@ export class WalStreamReplicator extends replication.AbstractReplicator {
|
|
|
20
21
|
}
|
|
21
22
|
async cleanUp(syncRulesStorage) {
|
|
22
23
|
const connectionManager = this.connectionFactory.create({
|
|
24
|
+
applicationName: getApplicationName(),
|
|
23
25
|
idleTimeout: 30_000,
|
|
24
26
|
maxSize: 1
|
|
25
27
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalStreamReplicator.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"WalStreamReplicator.js","sourceRoot":"","sources":["../../src/replication/WalStreamReplicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE,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,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,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,eAAe,EAAE,kBAAkB,EAAE;YACrC,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;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,uBAAuB,EAAE,CAAC;QAClD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,qEAAqE;QACrE,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;QAC/D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,+DAA+D;QAC/D,sFAAsF;QACtF,yDAAyD;QAEzD,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC/B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -248,7 +248,15 @@ export async function getDebugTableInfo(options) {
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
const id_columns = id_columns_result?.replicationColumns ?? [];
|
|
251
|
-
const sourceTable = new storage.SourceTable(
|
|
251
|
+
const sourceTable = new storage.SourceTable({
|
|
252
|
+
id: 0,
|
|
253
|
+
connectionTag: connectionTag,
|
|
254
|
+
objectId: relationId ?? 0,
|
|
255
|
+
schema: schema,
|
|
256
|
+
name: name,
|
|
257
|
+
replicaIdColumns: id_columns,
|
|
258
|
+
snapshotComplete: true
|
|
259
|
+
});
|
|
252
260
|
const syncData = syncRules.tableSyncsData(sourceTable);
|
|
253
261
|
const syncParameters = syncRules.tableSyncsParameters(sourceTable);
|
|
254
262
|
if (relationId == null) {
|
|
@@ -272,7 +280,7 @@ export async function getDebugTableInfo(options) {
|
|
|
272
280
|
}
|
|
273
281
|
let selectError = null;
|
|
274
282
|
try {
|
|
275
|
-
await lib_postgres.retriedQuery(db, `SELECT * FROM ${sourceTable.
|
|
283
|
+
await lib_postgres.retriedQuery(db, `SELECT * FROM ${sourceTable.qualifiedName} LIMIT 1`);
|
|
276
284
|
}
|
|
277
285
|
catch (e) {
|
|
278
286
|
selectError = { level: 'fatal', message: e.message };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replication-utils.js","sourceRoot":"","sources":["../../src/replication/replication-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"replication-utils.js","sourceRoot":"","sources":["../../src/replication/replication-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { POWERSYNC_VERSION } from '@powersync/service-core';
|
|
2
|
+
/**
|
|
3
|
+
* application_name for PostgreSQL connections to the source database
|
|
4
|
+
*/
|
|
5
|
+
export function getApplicationName() {
|
|
6
|
+
return `powersync/${POWERSYNC_VERSION}`;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=application-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-name.js","sourceRoot":"","sources":["../../src/utils/application-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,iBAAiB,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -25,7 +25,10 @@ else {
|
|
|
25
25
|
}
|
|
26
26
|
async function populateDataInner(options) {
|
|
27
27
|
// Dedicated connection so we can release the memory easily
|
|
28
|
-
const initialDb = await pgwire.connectPgWire(options.connection, {
|
|
28
|
+
const initialDb = await pgwire.connectPgWire(options.connection, {
|
|
29
|
+
type: 'standard',
|
|
30
|
+
applicationName: 'powersync-tests'
|
|
31
|
+
});
|
|
29
32
|
const largeDescription = crypto.randomBytes(options.size / 2).toString('hex');
|
|
30
33
|
let operation_count = 0;
|
|
31
34
|
for (let i = 0; i < options.num_transactions; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populate_test_data_worker.js","sourceRoot":"","sources":["../../src/utils/populate_test_data_worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AAGrD,8HAA8H;AAE9H,IAAI,YAAY,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;IACvC,0DAA0D;IAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC7C,CAAC;KAAM,CAAC;IACN,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAiC,CAAC;QAClD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAA4B;IAC3D,2DAA2D;IAC3D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"populate_test_data_worker.js","sourceRoot":"","sources":["../../src/utils/populate_test_data_worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AAGrD,8HAA8H;AAE9H,IAAI,YAAY,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;IACvC,0DAA0D;IAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC7C,CAAC;KAAM,CAAC;IACN,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAiC,CAAC;QAClD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAA4B;IAC3D,2DAA2D;IAC3D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE;QAC/D,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,iBAAiB;KACnC,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QAE3B,MAAM,SAAS,CAAC,KAAK,CAAC;YACpB,SAAS,EAAE,uGAAuG;YAClH,MAAM,EAAE;gBACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;gBAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;gBAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE;aACjD;SACF,CAAC,CAAC;QACH,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;IAC7C,CAAC;IACD,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "0.
|
|
8
|
+
"version": "0.15.0",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"license": "FSL-1.1-Apache-2.0",
|
|
11
11
|
"type": "module",
|
|
@@ -28,20 +28,20 @@
|
|
|
28
28
|
"ts-codec": "^1.3.0",
|
|
29
29
|
"uri-js": "^4.4.1",
|
|
30
30
|
"uuid": "^11.1.0",
|
|
31
|
-
"@powersync/lib-service-postgres": "0.4.
|
|
32
|
-
"@powersync/lib-services-framework": "0.7.
|
|
33
|
-
"@powersync/service-core": "1.
|
|
34
|
-
"@powersync/service-jpgwire": "0.20.
|
|
31
|
+
"@powersync/lib-service-postgres": "0.4.6",
|
|
32
|
+
"@powersync/lib-services-framework": "0.7.2",
|
|
33
|
+
"@powersync/service-core": "1.14.0",
|
|
34
|
+
"@powersync/service-jpgwire": "0.20.1",
|
|
35
35
|
"@powersync/service-jsonbig": "0.17.10",
|
|
36
|
-
"@powersync/service-sync-rules": "0.
|
|
37
|
-
"@powersync/service-types": "0.12.
|
|
36
|
+
"@powersync/service-sync-rules": "0.28.0",
|
|
37
|
+
"@powersync/service-types": "0.12.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/semver": "^7.5.4",
|
|
41
|
-
"@powersync/service-core-tests": "0.
|
|
42
|
-
"@powersync/service-module-mongodb-storage": "0.
|
|
43
|
-
"@powersync/lib-service-postgres": "0.4.
|
|
44
|
-
"@powersync/service-module-postgres-storage": "0.
|
|
41
|
+
"@powersync/service-core-tests": "0.11.0",
|
|
42
|
+
"@powersync/service-module-mongodb-storage": "0.11.0",
|
|
43
|
+
"@powersync/lib-service-postgres": "0.4.6",
|
|
44
|
+
"@powersync/service-module-postgres-storage": "0.9.0"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "tsc -b",
|
|
@@ -8,6 +8,7 @@ import * as replication_utils from '../replication/replication-utils.js';
|
|
|
8
8
|
import { getDebugTableInfo } from '../replication/replication-utils.js';
|
|
9
9
|
import { KEEPALIVE_STATEMENT, PUBLICATION_NAME } from '../replication/WalStream.js';
|
|
10
10
|
import * as types from '../types/types.js';
|
|
11
|
+
import { getApplicationName } from '../utils/application-name.js';
|
|
11
12
|
|
|
12
13
|
export class PostgresRouteAPIAdapter implements api.RouteAPI {
|
|
13
14
|
connectionTag: string;
|
|
@@ -16,7 +17,8 @@ export class PostgresRouteAPIAdapter implements api.RouteAPI {
|
|
|
16
17
|
|
|
17
18
|
static withConfig(config: types.ResolvedConnectionConfig) {
|
|
18
19
|
const pool = pgwire.connectPgWirePool(config, {
|
|
19
|
-
idleTimeout: 30_000
|
|
20
|
+
idleTimeout: 30_000,
|
|
21
|
+
applicationName: getApplicationName()
|
|
20
22
|
});
|
|
21
23
|
return new PostgresRouteAPIAdapter(pool, config.tag, config);
|
|
22
24
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { baseUri, NormalizedBasePostgresConnectionConfig } from '@powersync/lib-service-postgres';
|
|
1
2
|
import {
|
|
2
3
|
api,
|
|
3
|
-
auth,
|
|
4
4
|
ConfigurationFileSyncRulesProvider,
|
|
5
5
|
ConnectionTestResult,
|
|
6
6
|
modules,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
system
|
|
9
9
|
} from '@powersync/service-core';
|
|
10
10
|
import * as jpgwire from '@powersync/service-jpgwire';
|
|
11
|
+
import { ReplicationMetric } from '@powersync/service-types';
|
|
11
12
|
import { PostgresRouteAPIAdapter } from '../api/PostgresRouteAPIAdapter.js';
|
|
12
|
-
import { SupabaseKeyCollector } from '../auth/SupabaseKeyCollector.js';
|
|
13
13
|
import { ConnectionManagerFactory } from '../replication/ConnectionManagerFactory.js';
|
|
14
14
|
import { PgManager } from '../replication/PgManager.js';
|
|
15
15
|
import { PostgresErrorRateLimiter } from '../replication/PostgresErrorRateLimiter.js';
|
|
@@ -18,8 +18,7 @@ import { PUBLICATION_NAME } from '../replication/WalStream.js';
|
|
|
18
18
|
import { WalStreamReplicator } from '../replication/WalStreamReplicator.js';
|
|
19
19
|
import * as types from '../types/types.js';
|
|
20
20
|
import { PostgresConnectionConfig } from '../types/types.js';
|
|
21
|
-
import {
|
|
22
|
-
import { ReplicationMetric } from '@powersync/service-types';
|
|
21
|
+
import { getApplicationName } from '../utils/application-name.js';
|
|
23
22
|
|
|
24
23
|
export class PostgresModule extends replication.ReplicationModule<types.PostgresConnectionConfig> {
|
|
25
24
|
constructor() {
|
|
@@ -31,19 +30,6 @@ export class PostgresModule extends replication.ReplicationModule<types.Postgres
|
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
async onInitialized(context: system.ServiceContextContainer): Promise<void> {
|
|
34
|
-
const client_auth = context.configuration.base_config.client_auth;
|
|
35
|
-
|
|
36
|
-
if (client_auth?.supabase && client_auth?.supabase_jwt_secret == null) {
|
|
37
|
-
// Only use the deprecated SupabaseKeyCollector when there is no
|
|
38
|
-
// secret hardcoded. Hardcoded secrets are handled elsewhere, using
|
|
39
|
-
// StaticSupabaseKeyCollector.
|
|
40
|
-
|
|
41
|
-
// Support for SupabaseKeyCollector is deprecated and support will be
|
|
42
|
-
// completely removed by Supabase soon. We can keep support a while
|
|
43
|
-
// longer for self-hosted setups, before also removing that on our side.
|
|
44
|
-
this.registerSupabaseAuth(context);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
33
|
// Record replicated bytes using global jpgwire metrics. Only registered if this module is replicating
|
|
48
34
|
if (context.replicationEngine) {
|
|
49
35
|
jpgwire.setMetricsRecorder({
|
|
@@ -88,7 +74,8 @@ export class PostgresModule extends replication.ReplicationModule<types.Postgres
|
|
|
88
74
|
const normalisedConfig = this.resolveConfig(this.decodedConfig!);
|
|
89
75
|
const connectionManager = new PgManager(normalisedConfig, {
|
|
90
76
|
idleTimeout: 30_000,
|
|
91
|
-
maxSize: 1
|
|
77
|
+
maxSize: 1,
|
|
78
|
+
applicationName: getApplicationName()
|
|
92
79
|
});
|
|
93
80
|
|
|
94
81
|
try {
|
|
@@ -108,32 +95,6 @@ export class PostgresModule extends replication.ReplicationModule<types.Postgres
|
|
|
108
95
|
}
|
|
109
96
|
}
|
|
110
97
|
|
|
111
|
-
// TODO: This should rather be done by registering the key collector in some kind of auth engine
|
|
112
|
-
private registerSupabaseAuth(context: system.ServiceContextContainer) {
|
|
113
|
-
const { configuration } = context;
|
|
114
|
-
// Register the Supabase key collector(s)
|
|
115
|
-
configuration.connections
|
|
116
|
-
?.map((baseConfig) => {
|
|
117
|
-
if (baseConfig.type != types.POSTGRES_CONNECTION_TYPE) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
try {
|
|
121
|
-
return this.resolveConfig(types.PostgresConnectionConfig.decode(baseConfig as any));
|
|
122
|
-
} catch (ex) {
|
|
123
|
-
this.logger.warn('Failed to decode configuration.', ex);
|
|
124
|
-
}
|
|
125
|
-
})
|
|
126
|
-
.filter((c) => !!c)
|
|
127
|
-
.forEach((config) => {
|
|
128
|
-
const keyCollector = new SupabaseKeyCollector(config!);
|
|
129
|
-
context.lifeCycleEngine.withLifecycle(keyCollector, {
|
|
130
|
-
// Close the internal pool
|
|
131
|
-
stop: (collector) => collector.shutdown()
|
|
132
|
-
});
|
|
133
|
-
configuration.client_keystore.collector.add(new auth.CachedKeyCollector(keyCollector));
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
|
|
137
98
|
async testConnection(config: PostgresConnectionConfig): Promise<ConnectionTestResult> {
|
|
138
99
|
this.decodeConfig(config);
|
|
139
100
|
const normalizedConfig = this.resolveConfig(this.decodedConfig!);
|
|
@@ -144,7 +105,8 @@ export class PostgresModule extends replication.ReplicationModule<types.Postgres
|
|
|
144
105
|
// FIXME: This is not a complete implementation yet.
|
|
145
106
|
const connectionManager = new PgManager(normalizedConfig, {
|
|
146
107
|
idleTimeout: 30_000,
|
|
147
|
-
maxSize: 1
|
|
108
|
+
maxSize: 1,
|
|
109
|
+
applicationName: getApplicationName()
|
|
148
110
|
});
|
|
149
111
|
const connection = await connectionManager.snapshotConnection();
|
|
150
112
|
try {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
2
2
|
import semver from 'semver';
|
|
3
3
|
import { NormalizedPostgresConnectionConfig } from '../types/types.js';
|
|
4
|
+
import { getApplicationName } from '../utils/application-name.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Shorter timeout for snapshot connections than for replication connections.
|
|
@@ -31,7 +32,7 @@ export class PgManager {
|
|
|
31
32
|
* Create a new replication connection.
|
|
32
33
|
*/
|
|
33
34
|
async replicationConnection(): Promise<pgwire.PgConnection> {
|
|
34
|
-
const p = pgwire.connectPgWire(this.options, { type: 'replication' });
|
|
35
|
+
const p = pgwire.connectPgWire(this.options, { type: 'replication', applicationName: getApplicationName() });
|
|
35
36
|
this.connectionPromises.push(p);
|
|
36
37
|
return await p;
|
|
37
38
|
}
|
|
@@ -51,7 +52,7 @@ export class PgManager {
|
|
|
51
52
|
* This connection must not be shared between multiple async contexts.
|
|
52
53
|
*/
|
|
53
54
|
async snapshotConnection(): Promise<pgwire.PgConnection> {
|
|
54
|
-
const p = pgwire.connectPgWire(this.options, { type: 'standard' });
|
|
55
|
+
const p = pgwire.connectPgWire(this.options, { type: 'standard', applicationName: getApplicationName() });
|
|
55
56
|
this.connectionPromises.push(p);
|
|
56
57
|
const connection = await p;
|
|
57
58
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReplicationAssertionError
|
|
1
|
+
import { ReplicationAssertionError } from '@powersync/lib-services-framework';
|
|
2
2
|
import { storage } from '@powersync/service-core';
|
|
3
3
|
import { PgoutputRelation } from '@powersync/service-jpgwire';
|
|
4
4
|
|
|
@@ -27,6 +27,6 @@ export function getPgOutputRelation(source: PgoutputRelation): storage.SourceEnt
|
|
|
27
27
|
name: source.name,
|
|
28
28
|
schema: source.schema,
|
|
29
29
|
objectId: getRelId(source),
|
|
30
|
-
|
|
30
|
+
replicaIdColumns: getReplicaIdColumns(source)
|
|
31
31
|
} satisfies storage.SourceEntityDescriptor;
|
|
32
32
|
}
|
|
@@ -36,7 +36,7 @@ export class SimpleSnapshotQuery implements SnapshotQuery {
|
|
|
36
36
|
) {}
|
|
37
37
|
|
|
38
38
|
public async initialize(): Promise<void> {
|
|
39
|
-
await this.connection.query(`DECLARE snapshot_cursor CURSOR FOR SELECT * FROM ${this.table.
|
|
39
|
+
await this.connection.query(`DECLARE snapshot_cursor CURSOR FOR SELECT * FROM ${this.table.qualifiedName}`);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
public nextChunk(): AsyncIterableIterator<PgChunk> {
|
|
@@ -121,7 +121,7 @@ export class ChunkedSnapshotQuery implements SnapshotQuery {
|
|
|
121
121
|
const escapedKeyName = escapeIdentifier(this.key.name);
|
|
122
122
|
if (this.lastKey == null) {
|
|
123
123
|
stream = this.connection.stream(
|
|
124
|
-
`SELECT * FROM ${this.table.
|
|
124
|
+
`SELECT * FROM ${this.table.qualifiedName} ORDER BY ${escapedKeyName} LIMIT ${this.chunkSize}`
|
|
125
125
|
);
|
|
126
126
|
} else {
|
|
127
127
|
if (this.key.typeId == null) {
|
|
@@ -129,7 +129,7 @@ export class ChunkedSnapshotQuery implements SnapshotQuery {
|
|
|
129
129
|
}
|
|
130
130
|
let type: StatementParam['type'] = Number(this.key.typeId);
|
|
131
131
|
stream = this.connection.stream({
|
|
132
|
-
statement: `SELECT * FROM ${this.table.
|
|
132
|
+
statement: `SELECT * FROM ${this.table.qualifiedName} WHERE ${escapedKeyName} > $1 ORDER BY ${escapedKeyName} LIMIT ${this.chunkSize}`,
|
|
133
133
|
params: [{ value: this.lastKey, type }]
|
|
134
134
|
});
|
|
135
135
|
}
|
|
@@ -197,7 +197,7 @@ export class IdSnapshotQuery implements SnapshotQuery {
|
|
|
197
197
|
throw new Error(`Cannot determine primary key array type for ${JSON.stringify(keyDefinition)}`);
|
|
198
198
|
}
|
|
199
199
|
yield* this.connection.stream({
|
|
200
|
-
statement: `SELECT * FROM ${this.table.
|
|
200
|
+
statement: `SELECT * FROM ${this.table.qualifiedName} WHERE ${escapeIdentifier(keyDefinition.name)} = ANY($1)`,
|
|
201
201
|
params: [
|
|
202
202
|
{
|
|
203
203
|
type: type,
|
|
@@ -256,7 +256,7 @@ export class WalStream {
|
|
|
256
256
|
name,
|
|
257
257
|
schema,
|
|
258
258
|
objectId: relid,
|
|
259
|
-
|
|
259
|
+
replicaIdColumns: cresult.replicationColumns
|
|
260
260
|
} as SourceEntityDescriptor,
|
|
261
261
|
false
|
|
262
262
|
);
|
|
@@ -321,7 +321,7 @@ export class WalStream {
|
|
|
321
321
|
|
|
322
322
|
// Check that replication slot exists
|
|
323
323
|
for (let i = 120; i >= 0; i--) {
|
|
324
|
-
|
|
324
|
+
this.touch();
|
|
325
325
|
|
|
326
326
|
if (i == 0) {
|
|
327
327
|
container.reporter.captureException(last_error, {
|
|
@@ -479,7 +479,7 @@ WHERE oid = $1::regclass`,
|
|
|
479
479
|
|
|
480
480
|
for (let table of tablesWithStatus) {
|
|
481
481
|
await this.snapshotTableInTx(batch, db, table);
|
|
482
|
-
|
|
482
|
+
this.touch();
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
// Always commit the initial snapshot at zero.
|
|
@@ -628,7 +628,7 @@ WHERE oid = $1::regclass`,
|
|
|
628
628
|
at += rows.length;
|
|
629
629
|
this.metrics.getCounter(ReplicationMetric.ROWS_REPLICATED).add(rows.length);
|
|
630
630
|
|
|
631
|
-
|
|
631
|
+
this.touch();
|
|
632
632
|
}
|
|
633
633
|
|
|
634
634
|
// Important: flush before marking progress
|
|
@@ -737,6 +737,9 @@ WHERE oid = $1::regclass`,
|
|
|
737
737
|
rows.map((r) => r.key)
|
|
738
738
|
);
|
|
739
739
|
}
|
|
740
|
+
// Even with resnapshot, we need to wait until we get a new consistent checkpoint
|
|
741
|
+
// after the snapshot, so we need to send a keepalive message.
|
|
742
|
+
await sendKeepAlive(db);
|
|
740
743
|
} finally {
|
|
741
744
|
await db.end();
|
|
742
745
|
}
|
|
@@ -837,7 +840,6 @@ WHERE oid = $1::regclass`,
|
|
|
837
840
|
|
|
838
841
|
async streamChanges(replicationConnection: pgwire.PgConnection) {
|
|
839
842
|
// When changing any logic here, check /docs/wal-lsns.md.
|
|
840
|
-
|
|
841
843
|
const { createEmptyCheckpoints } = await this.ensureStorageCompatibility();
|
|
842
844
|
|
|
843
845
|
const replicationOptions: Record<string, string> = {
|
|
@@ -867,9 +869,6 @@ WHERE oid = $1::regclass`,
|
|
|
867
869
|
|
|
868
870
|
this.startedStreaming = true;
|
|
869
871
|
|
|
870
|
-
// Auto-activate as soon as initial replication is done
|
|
871
|
-
await this.storage.autoActivate();
|
|
872
|
-
|
|
873
872
|
let resnapshot: { table: storage.SourceTable; key: PrimaryKeyValue }[] = [];
|
|
874
873
|
|
|
875
874
|
const markRecordUnavailable = (record: SaveUpdate) => {
|
|
@@ -911,7 +910,7 @@ WHERE oid = $1::regclass`,
|
|
|
911
910
|
let count = 0;
|
|
912
911
|
|
|
913
912
|
for await (const chunk of replicationStream.pgoutputDecode()) {
|
|
914
|
-
|
|
913
|
+
this.touch();
|
|
915
914
|
|
|
916
915
|
if (this.abort_signal.aborted) {
|
|
917
916
|
break;
|
|
@@ -1091,11 +1090,10 @@ WHERE oid = $1::regclass`,
|
|
|
1091
1090
|
}
|
|
1092
1091
|
return Date.now() - this.oldestUncommittedChange.getTime();
|
|
1093
1092
|
}
|
|
1094
|
-
}
|
|
1095
1093
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1094
|
+
private touch() {
|
|
1095
|
+
container.probes.touch().catch((e) => {
|
|
1096
|
+
this.logger.error(`Error touching probe`, e);
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1101
1099
|
}
|
|
@@ -4,6 +4,7 @@ import { MissingReplicationSlotError, sendKeepAlive, WalStream } from './WalStre
|
|
|
4
4
|
|
|
5
5
|
import { replication } from '@powersync/service-core';
|
|
6
6
|
import { ConnectionManagerFactory } from './ConnectionManagerFactory.js';
|
|
7
|
+
import { getApplicationName } from '../utils/application-name.js';
|
|
7
8
|
|
|
8
9
|
export interface WalStreamReplicationJobOptions extends replication.AbstractReplicationJobOptions {
|
|
9
10
|
connectionFactory: ConnectionManagerFactory;
|
|
@@ -21,7 +22,8 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
21
22
|
this.connectionManager = this.connectionFactory.create({
|
|
22
23
|
// Pool connections are only used intermittently.
|
|
23
24
|
idleTimeout: 30_000,
|
|
24
|
-
maxSize: 2
|
|
25
|
+
maxSize: 2,
|
|
26
|
+
applicationName: getApplicationName()
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
29
|
|
|
@@ -87,7 +89,8 @@ export class WalStreamReplicationJob extends replication.AbstractReplicationJob
|
|
|
87
89
|
const connectionManager = this.connectionFactory.create({
|
|
88
90
|
// Pool connections are only used intermittently.
|
|
89
91
|
idleTimeout: 30_000,
|
|
90
|
-
maxSize: 2
|
|
92
|
+
maxSize: 2,
|
|
93
|
+
applicationName: getApplicationName()
|
|
91
94
|
});
|
|
92
95
|
try {
|
|
93
96
|
await this.rateLimiter?.waitUntilAllowed({ signal: this.abortController.signal });
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { replication, storage } from '@powersync/service-core';
|
|
2
|
+
import { PostgresModule } from '../module/PostgresModule.js';
|
|
3
|
+
import { getApplicationName } from '../utils/application-name.js';
|
|
2
4
|
import { ConnectionManagerFactory } from './ConnectionManagerFactory.js';
|
|
3
5
|
import { cleanUpReplicationSlot } from './replication-utils.js';
|
|
4
6
|
import { WalStreamReplicationJob } from './WalStreamReplicationJob.js';
|
|
5
|
-
import { PostgresModule } from '../module/PostgresModule.js';
|
|
6
7
|
|
|
7
8
|
export interface WalStreamReplicatorOptions extends replication.AbstractReplicatorOptions {
|
|
8
9
|
connectionFactory: ConnectionManagerFactory;
|
|
@@ -29,6 +30,7 @@ export class WalStreamReplicator extends replication.AbstractReplicator<WalStrea
|
|
|
29
30
|
|
|
30
31
|
async cleanUp(syncRulesStorage: storage.SyncRulesBucketStorage): Promise<void> {
|
|
31
32
|
const connectionManager = this.connectionFactory.create({
|
|
33
|
+
applicationName: getApplicationName(),
|
|
32
34
|
idleTimeout: 30_000,
|
|
33
35
|
maxSize: 1
|
|
34
36
|
});
|
|
@@ -315,7 +315,15 @@ export async function getDebugTableInfo(options: GetDebugTableInfoOptions): Prom
|
|
|
315
315
|
|
|
316
316
|
const id_columns = id_columns_result?.replicationColumns ?? [];
|
|
317
317
|
|
|
318
|
-
const sourceTable = new storage.SourceTable(
|
|
318
|
+
const sourceTable = new storage.SourceTable({
|
|
319
|
+
id: 0,
|
|
320
|
+
connectionTag: connectionTag,
|
|
321
|
+
objectId: relationId ?? 0,
|
|
322
|
+
schema: schema,
|
|
323
|
+
name: name,
|
|
324
|
+
replicaIdColumns: id_columns,
|
|
325
|
+
snapshotComplete: true
|
|
326
|
+
});
|
|
319
327
|
|
|
320
328
|
const syncData = syncRules.tableSyncsData(sourceTable);
|
|
321
329
|
const syncParameters = syncRules.tableSyncsParameters(sourceTable);
|
|
@@ -342,7 +350,7 @@ export async function getDebugTableInfo(options: GetDebugTableInfoOptions): Prom
|
|
|
342
350
|
|
|
343
351
|
let selectError = null;
|
|
344
352
|
try {
|
|
345
|
-
await lib_postgres.retriedQuery(db, `SELECT * FROM ${sourceTable.
|
|
353
|
+
await lib_postgres.retriedQuery(db, `SELECT * FROM ${sourceTable.qualifiedName} LIMIT 1`);
|
|
346
354
|
} catch (e) {
|
|
347
355
|
selectError = { level: 'fatal', message: e.message };
|
|
348
356
|
}
|
|
@@ -29,7 +29,10 @@ if (isMainThread || parentPort == null) {
|
|
|
29
29
|
|
|
30
30
|
async function populateDataInner(options: PopulateDataOptions) {
|
|
31
31
|
// Dedicated connection so we can release the memory easily
|
|
32
|
-
const initialDb = await pgwire.connectPgWire(options.connection, {
|
|
32
|
+
const initialDb = await pgwire.connectPgWire(options.connection, {
|
|
33
|
+
type: 'standard',
|
|
34
|
+
applicationName: 'powersync-tests'
|
|
35
|
+
});
|
|
33
36
|
const largeDescription = crypto.randomBytes(options.size / 2).toString('hex');
|
|
34
37
|
let operation_count = 0;
|
|
35
38
|
for (let i = 0; i < options.num_transactions; i++) {
|
|
@@ -36,6 +36,8 @@ const checkpointTests = (factory: TestStorageFactory) => {
|
|
|
36
36
|
await context.replicateSnapshot();
|
|
37
37
|
|
|
38
38
|
context.startStreaming();
|
|
39
|
+
// Wait for a consistent checkpoint before we start.
|
|
40
|
+
await context.getCheckpoint();
|
|
39
41
|
const storage = context.storage!;
|
|
40
42
|
|
|
41
43
|
const controller = new AbortController();
|
|
@@ -87,7 +87,6 @@ function defineBatchTests(factory: storage.TestStorageFactory) {
|
|
|
87
87
|
const start = Date.now();
|
|
88
88
|
|
|
89
89
|
await context.replicateSnapshot();
|
|
90
|
-
await context.storage!.autoActivate();
|
|
91
90
|
context.startStreaming();
|
|
92
91
|
|
|
93
92
|
const checkpoint = await context.getCheckpoint({ timeout: 100_000 });
|
|
@@ -97,7 +97,6 @@ bucket_definitions:
|
|
|
97
97
|
await pool.query(`ALTER TABLE test_data REPLICA IDENTITY FULL`);
|
|
98
98
|
|
|
99
99
|
await walStream.initReplication(replicationConnection);
|
|
100
|
-
await storage.autoActivate();
|
|
101
100
|
let abort = false;
|
|
102
101
|
streamPromise = walStream.streamChanges(replicationConnection).finally(() => {
|
|
103
102
|
abort = true;
|
|
@@ -348,7 +347,6 @@ bucket_definitions:
|
|
|
348
347
|
let initialReplicationDone = false;
|
|
349
348
|
streamPromise = (async () => {
|
|
350
349
|
await walStream.initReplication(replicationConnection);
|
|
351
|
-
await storage.autoActivate();
|
|
352
350
|
initialReplicationDone = true;
|
|
353
351
|
await walStream.streamChanges(replicationConnection);
|
|
354
352
|
})()
|