prostgles-server 4.2.111 → 4.2.113
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/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +10 -6
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
- package/dist/PubSubManager/getCreatePubSubManagerError.js +14 -0
- package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +50 -55
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/lib/DboBuilder/DboBuilder.ts +12 -7
- package/lib/PubSubManager/getCreatePubSubManagerError.ts +14 -0
- package/lib/PubSubManager/initPubSubManager.ts +53 -59
- package/package.json +1 -1
- package/tests/server/package-lock.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,UAAU,
|
|
1
|
+
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,13 +66,17 @@ class DboBuilder {
|
|
|
66
66
|
const canExecute = await (0, dboBuilderUtils_1.getCanExecute)(this.db);
|
|
67
67
|
if (!canExecute)
|
|
68
68
|
throw "PubSubManager based subscriptions not possible: Cannot run EXECUTE statements on this connection";
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
const { pubSubManager, error, hasError } = await (0, prostgles_types_1.tryCatch)(async () => {
|
|
70
|
+
const pubSubManager = await PubSubManager_1.PubSubManager.create({
|
|
71
|
+
dboBuilder: this,
|
|
72
|
+
});
|
|
73
|
+
return { pubSubManager };
|
|
71
74
|
});
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
this._pubSubManager = pubSubManager;
|
|
76
|
+
if (hasError || !this._pubSubManager) {
|
|
77
|
+
console.error("Error in getPubSubManager", error);
|
|
78
|
+
throw "Could not create this._pubSubManager check logs";
|
|
79
|
+
}
|
|
76
80
|
}
|
|
77
81
|
return this._pubSubManager;
|
|
78
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.js","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":";AACA;;;gGAGgG;;;;;;;;;;;;;;;;;AAEhG,
|
|
1
|
+
{"version":3,"file":"DboBuilder.js","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCreatePubSubManagerError.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getCreatePubSubManagerError.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,eAAO,MAAM,2BAA2B,eAAsB,UAAU,KAAG,QAAQ,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"getCreatePubSubManagerError.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getCreatePubSubManagerError.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,eAAO,MAAM,2BAA2B,eAAsB,UAAU,KAAG,QAAQ,MAAM,GAAG,SAAS,CA4DpG,CAAA"}
|
|
@@ -18,6 +18,8 @@ const getCreatePubSubManagerError = async (dboBuilder) => {
|
|
|
18
18
|
const checkIfCanCreateProstglesSchema = () => (0, prostgles_types_1.tryCatch)(async () => {
|
|
19
19
|
const allGood = await db.tx(async (t) => {
|
|
20
20
|
await t.none(`
|
|
21
|
+
DROP SCHEMA IF EXISTS prostgles;
|
|
22
|
+
ROLLBACK;
|
|
21
23
|
CREATE SCHEMA IF NOT EXISTS prostgles;
|
|
22
24
|
ROLLBACK;
|
|
23
25
|
`);
|
|
@@ -34,6 +36,18 @@ const getCreatePubSubManagerError = async (dboBuilder) => {
|
|
|
34
36
|
}
|
|
35
37
|
return undefined;
|
|
36
38
|
}
|
|
39
|
+
else {
|
|
40
|
+
const canCheckVersion = await (0, prostgles_types_1.tryCatch)(async () => {
|
|
41
|
+
await db.any(`
|
|
42
|
+
SELECT * FROM prostgles.versions
|
|
43
|
+
`);
|
|
44
|
+
return { ok: true };
|
|
45
|
+
});
|
|
46
|
+
if (!canCheckVersion.ok) {
|
|
47
|
+
console.error("prostgles schema exists but cannot check version. Check logs", canCheckVersion.error);
|
|
48
|
+
return "prostgles schema exists but cannot check version. Check logs";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
37
51
|
const initQuery = await (0, prostgles_types_1.tryCatch)(async () => ({ query: await getPubSubManagerInitQuery_1.getPubSubManagerInitQuery.bind(dboBuilder)() }));
|
|
38
52
|
if (initQuery.hasError) {
|
|
39
53
|
console.error(initQuery.error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCreatePubSubManagerError.js","sourceRoot":"","sources":["../../lib/PubSubManager/getCreatePubSubManagerError.ts"],"names":[],"mappings":";;;AAAA,qDAA2C;AAC3C,2EAAwE;AACxE,mEAA8D;AAGvD,MAAM,2BAA2B,GAAG,KAAK,EAAE,UAAsB,EAA+B,EAAE;IACvG,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,IAAA,+BAAa,EAAC,EAAE,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU;QAAE,OAAO,kDAAkD,CAAC;IAE3E,uCAAuC;IACvC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC;;;;GAI/B,CAAC,CAAC;IAEH,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAAC,IAAA,0BAAQ,EAAC,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;YACpC,MAAM,CAAC,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"getCreatePubSubManagerError.js","sourceRoot":"","sources":["../../lib/PubSubManager/getCreatePubSubManagerError.ts"],"names":[],"mappings":";;;AAAA,qDAA2C;AAC3C,2EAAwE;AACxE,mEAA8D;AAGvD,MAAM,2BAA2B,GAAG,KAAK,EAAE,UAAsB,EAA+B,EAAE;IACvG,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,IAAA,+BAAa,EAAC,EAAE,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU;QAAE,OAAO,kDAAkD,CAAC;IAE3E,uCAAuC;IACvC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC;;;;GAI/B,CAAC,CAAC;IAEH,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAAC,IAAA,0BAAQ,EAAC,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;YACpC,MAAM,CAAC,CAAC,IAAI,CAAC;;;;;OAKZ,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,+BAA+B,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjD,OAAO,oEAAoE,MAAM,OAAO,IAAI,EAAE,CAAC;QACjG,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAQ,EAAC,KAAK,IAAI,EAAE;YAChD,MAAM,EAAE,CAAC,GAAG,CAAC;;OAEZ,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAG,CAAC,eAAe,CAAC,EAAE,EAAC,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,8DAA8D,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;YACrG,OAAO,8DAA8D,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAQ,EAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,qDAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9G,IAAG,SAAS,CAAC,QAAQ,EAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAED,IAAG,CAAC,SAAS,CAAC,KAAK,EAAC,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAA;AA5DY,QAAA,2BAA2B,+BA4DvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,aAAa,EAAW,MAAM,iBAAiB,CAAC;AAExE,eAAO,MAAM,4BAA4B,oEAA8E,CAAC;AAExH,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAA4C,CAAC;AAE5E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,aAAa,EAAW,MAAM,iBAAiB,CAAC;AAExE,eAAO,MAAM,4BAA4B,oEAA8E,CAAC;AAExH,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAA4C,CAAC;AAE5E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAoE/F"}
|
|
@@ -12,66 +12,61 @@ exports.tout = tout;
|
|
|
12
12
|
async function initPubSubManager() {
|
|
13
13
|
if (!this.getIsDestroyed())
|
|
14
14
|
return undefined;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
tries = 0;
|
|
31
|
-
}
|
|
32
|
-
catch (e) {
|
|
33
|
-
if (!didDeadlock && (0, prostgles_types_1.isObject)(e) && e.code === "40P01") {
|
|
34
|
-
didDeadlock = true;
|
|
35
|
-
tries = 5;
|
|
36
|
-
console.error("Deadlock detected. Retrying...");
|
|
37
|
-
}
|
|
38
|
-
error = e;
|
|
39
|
-
tries--;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (error) {
|
|
43
|
-
throw error;
|
|
15
|
+
const initQuery = await getPubSubManagerInitQuery_1.getPubSubManagerInitQuery.bind(this.dboBuilder)();
|
|
16
|
+
/**
|
|
17
|
+
* High database activity might cause deadlocks.
|
|
18
|
+
* Must retry
|
|
19
|
+
*/
|
|
20
|
+
let didDeadlock = false;
|
|
21
|
+
let tries = 3;
|
|
22
|
+
let error;
|
|
23
|
+
while ((0, prostgles_types_1.isDefined)(initQuery) && tries > 0) {
|
|
24
|
+
try {
|
|
25
|
+
/** Try to reduce race condition deadlocks due to multiple clients connecting at the same time */
|
|
26
|
+
await (0, exports.tout)(Math.random());
|
|
27
|
+
await this.db.tx(t => t.any(initQuery));
|
|
28
|
+
error = undefined;
|
|
29
|
+
tries = 0;
|
|
44
30
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const check_frequency_ms = this.appCheckFrequencyMS;
|
|
51
|
-
const watching_schema_tag_names = this.dboBuilder.prostgles.schemaWatch?.type.watchType !== "NONE" ? (0, getWatchSchemaTagList_1.getWatchSchemaTagList)(this.dboBuilder.prostgles.opts.watchSchema) : null;
|
|
52
|
-
await this.db.one("INSERT INTO prostgles.apps (id, check_frequency_ms, watching_schema_tag_names, application_name) \
|
|
53
|
-
VALUES($1, $2, $3, current_setting('application_name')) \
|
|
54
|
-
RETURNING *; ", [
|
|
55
|
-
this.appId,
|
|
56
|
-
check_frequency_ms,
|
|
57
|
-
watching_schema_tag_names
|
|
58
|
-
]);
|
|
59
|
-
const appRecord = await this.db.one("SELECT * FROM prostgles.apps WHERE id = $1", [this.appId]);
|
|
60
|
-
if (!appRecord || !appRecord.application_name?.includes(this.appId)) {
|
|
61
|
-
throw `initPubSubManager error: App record with application_name containing appId (${this.appId}) not found`;
|
|
31
|
+
catch (e) {
|
|
32
|
+
if (!didDeadlock && (0, prostgles_types_1.isObject)(e) && e.code === "40P01") {
|
|
33
|
+
didDeadlock = true;
|
|
34
|
+
tries = 5;
|
|
35
|
+
console.error("Deadlock detected. Retrying...");
|
|
62
36
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
WHERE app_id = ${(0, PubSubManager_1.asValue)(this.appId)}
|
|
66
|
-
`);
|
|
37
|
+
error = e;
|
|
38
|
+
tries--;
|
|
67
39
|
}
|
|
68
|
-
this.postgresNotifListenManager = new PostgresNotifListenManager_1.PostgresNotifListenManager(this.db, this.notifListener, PubSubManager_1.NOTIF_CHANNEL.getFull(this.appId));
|
|
69
|
-
await this.initialiseEventTriggers();
|
|
70
|
-
return this;
|
|
71
40
|
}
|
|
72
|
-
|
|
73
|
-
|
|
41
|
+
if (error) {
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
if (!this.getIsDestroyed())
|
|
45
|
+
return;
|
|
46
|
+
/* Prepare App id */
|
|
47
|
+
if (!this.appInfoWasInserted) {
|
|
48
|
+
this.appInfoWasInserted = true;
|
|
49
|
+
const check_frequency_ms = this.appCheckFrequencyMS;
|
|
50
|
+
const watching_schema_tag_names = this.dboBuilder.prostgles.schemaWatch?.type.watchType !== "NONE" ? (0, getWatchSchemaTagList_1.getWatchSchemaTagList)(this.dboBuilder.prostgles.opts.watchSchema) : null;
|
|
51
|
+
await this.db.one("INSERT INTO prostgles.apps (id, check_frequency_ms, watching_schema_tag_names, application_name) \
|
|
52
|
+
VALUES($1, $2, $3, current_setting('application_name')) \
|
|
53
|
+
RETURNING *; ", [
|
|
54
|
+
this.appId,
|
|
55
|
+
check_frequency_ms,
|
|
56
|
+
watching_schema_tag_names
|
|
57
|
+
]);
|
|
58
|
+
const appRecord = await this.db.one("SELECT * FROM prostgles.apps WHERE id = $1", [this.appId]);
|
|
59
|
+
if (!appRecord || !appRecord.application_name?.includes(this.appId)) {
|
|
60
|
+
throw `initPubSubManager error: App record with application_name containing appId (${this.appId}) not found`;
|
|
61
|
+
}
|
|
62
|
+
await this.db.any(`
|
|
63
|
+
DELETE FROM prostgles.app_triggers
|
|
64
|
+
WHERE app_id = ${(0, PubSubManager_1.asValue)(this.appId)}
|
|
65
|
+
`);
|
|
74
66
|
}
|
|
67
|
+
this.postgresNotifListenManager = new PostgresNotifListenManager_1.PostgresNotifListenManager(this.db, this.notifListener, PubSubManager_1.NOTIF_CHANNEL.getFull(this.appId));
|
|
68
|
+
await this.initialiseEventTriggers();
|
|
69
|
+
return this;
|
|
75
70
|
}
|
|
76
71
|
exports.initPubSubManager = initPubSubManager;
|
|
77
72
|
//# sourceMappingURL=initPubSubManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initPubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":";;;AAAA,qDAAsD;AACtD,8EAA2E;AAC3E,gFAA6E;AAC7E,mDAAwE;AACxE,2EAAwE;AAC3D,QAAA,4BAA4B,GAAG,kEAA2E,CAAC;AAEjH,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAA/D,QAAA,IAAI,QAA2D;AAErE,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,SAAS,CAAC;IAE7C,
|
|
1
|
+
{"version":3,"file":"initPubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
import {
|
|
8
8
|
PG_COLUMN_UDT_DATA_TYPE,
|
|
9
9
|
SQLOptions,
|
|
10
|
-
getJoinHandlers
|
|
10
|
+
getJoinHandlers,
|
|
11
|
+
tryCatch
|
|
11
12
|
} from "prostgles-types";
|
|
12
13
|
import { getDBSchema } from "../DBSchemaBuilder";
|
|
13
14
|
import {
|
|
@@ -95,13 +96,17 @@ export class DboBuilder {
|
|
|
95
96
|
const canExecute = await getCanExecute(this.db)
|
|
96
97
|
if (!canExecute) throw "PubSubManager based subscriptions not possible: Cannot run EXECUTE statements on this connection";
|
|
97
98
|
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
const { pubSubManager, error, hasError } = await tryCatch(async () => {
|
|
100
|
+
const pubSubManager = await PubSubManager.create({
|
|
101
|
+
dboBuilder: this,
|
|
102
|
+
});
|
|
103
|
+
return { pubSubManager };
|
|
100
104
|
});
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
this._pubSubManager = pubSubManager;
|
|
106
|
+
if (hasError || !this._pubSubManager ) {
|
|
107
|
+
console.error("Error in getPubSubManager", error);
|
|
108
|
+
throw "Could not create this._pubSubManager check logs";
|
|
109
|
+
}
|
|
105
110
|
}
|
|
106
111
|
|
|
107
112
|
return this._pubSubManager;
|
|
@@ -18,6 +18,8 @@ export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promi
|
|
|
18
18
|
const checkIfCanCreateProstglesSchema = () => tryCatch(async () => {
|
|
19
19
|
const allGood = await db.tx(async t => {
|
|
20
20
|
await t.none(`
|
|
21
|
+
DROP SCHEMA IF EXISTS prostgles;
|
|
22
|
+
ROLLBACK;
|
|
21
23
|
CREATE SCHEMA IF NOT EXISTS prostgles;
|
|
22
24
|
ROLLBACK;
|
|
23
25
|
`);
|
|
@@ -36,6 +38,18 @@ export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promi
|
|
|
36
38
|
return `Not allowed to create prostgles schema. GRANT CREATE ON DATABASE ${dbName} TO ${user}`;
|
|
37
39
|
}
|
|
38
40
|
return undefined;
|
|
41
|
+
} else {
|
|
42
|
+
const canCheckVersion = await tryCatch(async () => {
|
|
43
|
+
await db.any(`
|
|
44
|
+
SELECT * FROM prostgles.versions
|
|
45
|
+
`);
|
|
46
|
+
return { ok: true };
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if(!canCheckVersion.ok){
|
|
50
|
+
console.error("prostgles schema exists but cannot check version. Check logs", canCheckVersion.error);
|
|
51
|
+
return "prostgles schema exists but cannot check version. Check logs";
|
|
52
|
+
}
|
|
39
53
|
}
|
|
40
54
|
|
|
41
55
|
const initQuery = await tryCatch(async () => ({ query: await getPubSubManagerInitQuery.bind(dboBuilder)() }));
|
|
@@ -10,75 +10,69 @@ export const tout = (ms: number) => new Promise(res => setTimeout(res, ms));
|
|
|
10
10
|
export async function initPubSubManager(this: PubSubManager): Promise<PubSubManager | undefined> {
|
|
11
11
|
if (!this.getIsDestroyed()) return undefined;
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
const initQuery = await getPubSubManagerInitQuery.bind(this.dboBuilder)();
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* High database activity might cause deadlocks.
|
|
17
|
+
* Must retry
|
|
18
|
+
*/
|
|
19
|
+
let didDeadlock = false;
|
|
20
|
+
let tries = 3;
|
|
21
|
+
let error: any;
|
|
22
|
+
while (isDefined(initQuery) && tries > 0) {
|
|
23
|
+
try {
|
|
24
|
+
/** Try to reduce race condition deadlocks due to multiple clients connecting at the same time */
|
|
25
|
+
await tout(Math.random());
|
|
16
26
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
/** Try to reduce race condition deadlocks due to multiple clients connecting at the same time */
|
|
27
|
-
await tout(Math.random());
|
|
28
|
-
|
|
29
|
-
await this.db.tx(t => t.any(initQuery));
|
|
30
|
-
error = undefined;
|
|
31
|
-
tries = 0;
|
|
32
|
-
} catch (e: any) {
|
|
33
|
-
if(!didDeadlock && isObject(e) && e.code === "40P01"){
|
|
34
|
-
didDeadlock = true;
|
|
35
|
-
tries = 5;
|
|
36
|
-
console.error("Deadlock detected. Retrying...");
|
|
37
|
-
}
|
|
38
|
-
error = e;
|
|
39
|
-
tries --;
|
|
27
|
+
await this.db.tx(t => t.any(initQuery));
|
|
28
|
+
error = undefined;
|
|
29
|
+
tries = 0;
|
|
30
|
+
} catch (e: any) {
|
|
31
|
+
if(!didDeadlock && isObject(e) && e.code === "40P01"){
|
|
32
|
+
didDeadlock = true;
|
|
33
|
+
tries = 5;
|
|
34
|
+
console.error("Deadlock detected. Retrying...");
|
|
40
35
|
}
|
|
36
|
+
error = e;
|
|
37
|
+
tries --;
|
|
41
38
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!this.getIsDestroyed()) return;
|
|
39
|
+
}
|
|
40
|
+
if(error){
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
47
43
|
|
|
48
|
-
|
|
49
|
-
if (!this.appInfoWasInserted) {
|
|
50
|
-
this.appInfoWasInserted = true;
|
|
51
|
-
const check_frequency_ms = this.appCheckFrequencyMS;
|
|
52
|
-
const watching_schema_tag_names = this.dboBuilder.prostgles.schemaWatch?.type.watchType !== "NONE" ? getWatchSchemaTagList(this.dboBuilder.prostgles.opts.watchSchema) : null;
|
|
53
|
-
await this.db.one(
|
|
54
|
-
"INSERT INTO prostgles.apps (id, check_frequency_ms, watching_schema_tag_names, application_name) \
|
|
55
|
-
VALUES($1, $2, $3, current_setting('application_name')) \
|
|
56
|
-
RETURNING *; "
|
|
57
|
-
, [
|
|
58
|
-
this.appId,
|
|
59
|
-
check_frequency_ms,
|
|
60
|
-
watching_schema_tag_names
|
|
61
|
-
]
|
|
62
|
-
);
|
|
44
|
+
if (!this.getIsDestroyed()) return;
|
|
63
45
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
46
|
+
/* Prepare App id */
|
|
47
|
+
if (!this.appInfoWasInserted) {
|
|
48
|
+
this.appInfoWasInserted = true;
|
|
49
|
+
const check_frequency_ms = this.appCheckFrequencyMS;
|
|
50
|
+
const watching_schema_tag_names = this.dboBuilder.prostgles.schemaWatch?.type.watchType !== "NONE" ? getWatchSchemaTagList(this.dboBuilder.prostgles.opts.watchSchema) : null;
|
|
51
|
+
await this.db.one(
|
|
52
|
+
"INSERT INTO prostgles.apps (id, check_frequency_ms, watching_schema_tag_names, application_name) \
|
|
53
|
+
VALUES($1, $2, $3, current_setting('application_name')) \
|
|
54
|
+
RETURNING *; "
|
|
55
|
+
, [
|
|
56
|
+
this.appId,
|
|
57
|
+
check_frequency_ms,
|
|
58
|
+
watching_schema_tag_names
|
|
59
|
+
]
|
|
60
|
+
);
|
|
68
61
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
`);
|
|
62
|
+
const appRecord = await this.db.one("SELECT * FROM prostgles.apps WHERE id = $1", [this.appId]);
|
|
63
|
+
if (!appRecord || !appRecord.application_name?.includes(this.appId)) {
|
|
64
|
+
throw `initPubSubManager error: App record with application_name containing appId (${this.appId}) not found`;
|
|
73
65
|
}
|
|
74
66
|
|
|
75
|
-
|
|
67
|
+
await this.db.any(`
|
|
68
|
+
DELETE FROM prostgles.app_triggers
|
|
69
|
+
WHERE app_id = ${asValue(this.appId)}
|
|
70
|
+
`);
|
|
71
|
+
}
|
|
76
72
|
|
|
77
|
-
|
|
73
|
+
this.postgresNotifListenManager = new PostgresNotifListenManager(this.db, this.notifListener, NOTIF_CHANNEL.getFull(this.appId));
|
|
78
74
|
|
|
79
|
-
|
|
75
|
+
await this.initialiseEventTriggers();
|
|
80
76
|
|
|
81
|
-
|
|
82
|
-
console.error("PubSubManager init failed: ", e);
|
|
83
|
-
}
|
|
77
|
+
return this;
|
|
84
78
|
}
|
package/package.json
CHANGED