prostgles-server 4.2.647 → 4.2.648
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/.github/workflows/main.yml +1 -1
- package/debug/inspect-ui-sync.cjs +24 -0
- package/debug/subscription-cleanup-repro.log +662 -0
- package/debug/subscription-cleanup-trace.log +7230 -0
- package/debug/sync-bigint-DBGeneratedSchema.backup +489 -0
- package/debug/sync-bigint-build.log +4 -0
- package/debug/sync-bigint-client-build.log +0 -0
- package/debug/sync-bigint-lint.log +4 -0
- package/debug/sync-bigint-server-build.log +0 -0
- package/debug/sync-comment-DBGeneratedSchema.backup +489 -0
- package/debug/sync-delay-gate-DBGeneratedSchema.backup +489 -0
- package/debug/sync-delay-gate-build.log +0 -0
- package/debug/sync-diff-review-test.log +132 -0
- package/debug/sync-followup-build.log +4 -0
- package/debug/sync-notification-before.log +121 -0
- package/debug/sync-trigger-cleanup-before.log +134 -0
- package/debug/sync-trigger-fix-e2e.log +1758 -0
- package/debug/sync-trigger-fix-npm-test.log +1815 -0
- package/debug/sync-trigger-lint.log +4 -0
- package/debug/trace-subscription-cleanup.cjs +19 -0
- package/debug/ui-sync-database-snapshot.log +8 -0
- package/debug/ui-sync-investigation.md +30 -0
- package/debug/ui-sync-server-tests.log +553 -0
- package/dist/PubSubManager/PubSubManager.d.ts +8 -25
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +27 -23
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/dist/PubSubManager/deleteOrphanedTriggers.d.ts.map +1 -1
- package/dist/PubSubManager/deleteOrphanedTriggers.js +5 -3
- package/dist/PubSubManager/deleteOrphanedTriggers.js.map +1 -1
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.d.ts.map +1 -1
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.js +1 -2
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.js.map +1 -1
- package/dist/PubSubManager/init/getPubSubManagerInitQuery.d.ts.map +1 -1
- package/dist/PubSubManager/init/getPubSubManagerInitQuery.js +3 -2
- package/dist/PubSubManager/init/getPubSubManagerInitQuery.js.map +1 -1
- package/dist/PubSubManager/notifListener.js +2 -2
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/dist/PubSubManager/refreshTriggers.d.ts.map +1 -1
- package/dist/PubSubManager/refreshTriggers.js +5 -3
- package/dist/PubSubManager/refreshTriggers.js.map +1 -1
- package/lib/PubSubManager/PubSubManager.ts +31 -28
- package/lib/PubSubManager/deleteOrphanedTriggers.ts +5 -3
- package/lib/PubSubManager/init/getDataWatchFunctionQuery.ts +1 -2
- package/lib/PubSubManager/init/getPubSubManagerInitQuery.ts +3 -2
- package/lib/PubSubManager/notifListener.ts +2 -2
- package/lib/PubSubManager/refreshTriggers.ts +7 -5
- package/package.json +1 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { DBHandlerServer, DboBuilder, LocalParams, ClientSocketWithCachedData } from "../DboBuilder/DboBuilder";
|
|
2
2
|
import type { PostgresNotifListenManager } from "../PostgresNotifListenManager";
|
|
3
3
|
import type { DB } from "../Prostgles";
|
|
4
|
+
import { addSync } from "./addSync";
|
|
4
5
|
import { type AddTriggerParams } from "./addTrigger";
|
|
5
6
|
import type { AnyObject, EqualityFilter, FieldFilter, ReplicationProtocol, SelectParams, TableSchema } from "prostgles-types";
|
|
6
7
|
import { type SubscribeOptions } from "prostgles-types";
|
|
7
8
|
import type { OnData } from "../DboBuilder/ViewHandler/subscribe";
|
|
8
9
|
import type { EventTypes } from "../Logging";
|
|
9
10
|
import type { ParsedTableRule } from "../PublishParser/PublishParser";
|
|
11
|
+
import { addSub } from "./addSub";
|
|
10
12
|
import type { SyncTableInfo, WAL } from "prostgles-types/dist/WAL";
|
|
11
13
|
export type BasicCallback = (err?: any, res?: any) => void;
|
|
12
14
|
export type SyncParams = {
|
|
@@ -155,29 +157,6 @@ export declare class PubSubManager {
|
|
|
155
157
|
tracked_columns: Record<string, number>;
|
|
156
158
|
} | null;
|
|
157
159
|
}[] | undefined;
|
|
158
|
-
getActiveTriggers: (tableName: string) => {
|
|
159
|
-
subs: Subscription[];
|
|
160
|
-
syncs: SyncParams[];
|
|
161
|
-
table_condition_id: number;
|
|
162
|
-
condition: string;
|
|
163
|
-
hash: string;
|
|
164
|
-
columnInfo: {
|
|
165
|
-
join_condition: string;
|
|
166
|
-
tracked_columns: Record<string, number>;
|
|
167
|
-
} | null;
|
|
168
|
-
}[];
|
|
169
|
-
getAllActiveTriggers: () => {
|
|
170
|
-
tableName: string;
|
|
171
|
-
subs: Subscription[];
|
|
172
|
-
syncs: SyncParams[];
|
|
173
|
-
table_condition_id: number;
|
|
174
|
-
condition: string;
|
|
175
|
-
hash: string;
|
|
176
|
-
columnInfo: {
|
|
177
|
-
join_condition: string;
|
|
178
|
-
tracked_columns: Record<string, number>;
|
|
179
|
-
} | null;
|
|
180
|
-
}[];
|
|
181
160
|
getSubData: (sub: Subscription) => Promise<{
|
|
182
161
|
data: AnyObject[];
|
|
183
162
|
err?: undefined;
|
|
@@ -191,10 +170,10 @@ export declare class PubSubManager {
|
|
|
191
170
|
_log: (params: EventTypes.Sync | EventTypes.SyncOrSub) => void | Promise<void> | undefined;
|
|
192
171
|
syncTimeout?: ReturnType<typeof setTimeout>;
|
|
193
172
|
syncData: (sync: SyncParams, clientData: import("./SyncReplication/syncData").ClientExpressData | undefined, source: "trigger" | "client") => Promise<void>;
|
|
194
|
-
addSync: (
|
|
173
|
+
addSync: (...args: Parameters<typeof addSync>) => Promise<{
|
|
195
174
|
channelName: string;
|
|
196
175
|
}>;
|
|
197
|
-
addSub: (
|
|
176
|
+
addSub: (...args: Parameters<typeof addSub>) => Promise<import("prostgles-types").SubscriptionChannels & {
|
|
198
177
|
sendFirstData: import("../SchemaWatch/SchemaWatch").VoidFunction | undefined;
|
|
199
178
|
}>;
|
|
200
179
|
getActiveListeners: () => {
|
|
@@ -204,13 +183,17 @@ export declare class PubSubManager {
|
|
|
204
183
|
/**
|
|
205
184
|
* Sync triggers with database
|
|
206
185
|
* */
|
|
186
|
+
private triggerRefresh;
|
|
207
187
|
refreshTriggers: () => Promise<void>;
|
|
208
188
|
/** Throttle trigger deletes */
|
|
189
|
+
private triggerCleanup;
|
|
190
|
+
private pendingTriggerRegistrations;
|
|
209
191
|
deletingOrphanedTriggers: {
|
|
210
192
|
tableNames: Set<string>;
|
|
211
193
|
timeout: NodeJS.Timeout;
|
|
212
194
|
} | undefined;
|
|
213
195
|
deleteOrphanedTriggers: (latestTableNames: Set<string>) => void;
|
|
196
|
+
private registerTriggers;
|
|
214
197
|
addingTrigger: any;
|
|
215
198
|
addTriggerPool?: Record<string, string[]>;
|
|
216
199
|
addTrigger: (params: AddTriggerParams, viewOptions: ViewSubscriptionOptions | undefined, socket: ClientSocketWithCachedData | undefined) => Promise<import("prostgles-types").TryCatchResult<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,14 +104,9 @@ class PubSubManager {
|
|
|
104
104
|
: subInfo.socket.id === s.socket?.id));
|
|
105
105
|
const matchingSub = this.subs[matchingSubIdx];
|
|
106
106
|
if (matchingSub) {
|
|
107
|
-
/** Ensure we check and refresh related table/view triggers as well */
|
|
108
|
-
const oldActiveTriggers = this.getAllActiveTriggers();
|
|
109
107
|
this.subs.splice(matchingSubIdx, 1);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (newActiveTriggers.length < oldActiveTriggers.length) {
|
|
113
|
-
this.deleteOrphanedTriggers(tableNames);
|
|
114
|
-
}
|
|
108
|
+
// These are tables to recheck, not a snapshot of which triggers can be deleted.
|
|
109
|
+
this.deleteOrphanedTriggers(new Set(matchingSub.triggers.map((trigger) => trigger.table_name)));
|
|
115
110
|
}
|
|
116
111
|
else {
|
|
117
112
|
console.error("Could not unsubscribe. Subscription might not have initialised yet", {
|
|
@@ -135,18 +130,6 @@ class PubSubManager {
|
|
|
135
130
|
}));
|
|
136
131
|
return tableTriggerConditions;
|
|
137
132
|
};
|
|
138
|
-
getActiveTriggers = (tableName) => {
|
|
139
|
-
const activeTriggers = (this.getTriggerInfo(tableName) ?? []).filter((c) => c.subs.length || c.syncs.length);
|
|
140
|
-
return activeTriggers;
|
|
141
|
-
};
|
|
142
|
-
getAllActiveTriggers = () => {
|
|
143
|
-
return Array.from(this._triggers.keys()).flatMap((tableName) => {
|
|
144
|
-
return this.getActiveTriggers(tableName).map((triggerInfo) => ({
|
|
145
|
-
...triggerInfo,
|
|
146
|
-
tableName,
|
|
147
|
-
}));
|
|
148
|
-
});
|
|
149
|
-
};
|
|
150
133
|
getSubData = async (sub) => {
|
|
151
134
|
const { table_info, filter, selectParams: params, table_rules, localParams, socket, onData, } = sub; //, subOne = false
|
|
152
135
|
const { name: table_name } = table_info;
|
|
@@ -208,8 +191,8 @@ class PubSubManager {
|
|
|
208
191
|
};
|
|
209
192
|
syncTimeout;
|
|
210
193
|
syncData = syncData_1.syncData.bind(this);
|
|
211
|
-
addSync = addSync_1.addSync.
|
|
212
|
-
addSub = addSub_1.addSub.
|
|
194
|
+
addSync = (...args) => this.registerTriggers(() => addSync_1.addSync.apply(this, args));
|
|
195
|
+
addSub = (...args) => this.registerTriggers(() => addSub_1.addSub.apply(this, args));
|
|
213
196
|
getActiveListeners = () => {
|
|
214
197
|
const activeListeners = [];
|
|
215
198
|
const upsert = (t, c) => {
|
|
@@ -230,8 +213,16 @@ class PubSubManager {
|
|
|
230
213
|
/**
|
|
231
214
|
* Sync triggers with database
|
|
232
215
|
* */
|
|
233
|
-
|
|
216
|
+
triggerRefresh = Promise.resolve();
|
|
217
|
+
refreshTriggers = () => {
|
|
218
|
+
// Apply database snapshots in order, including after a previous refresh failed.
|
|
219
|
+
const refresh = () => refreshTriggers_1.refreshTriggers.call(this);
|
|
220
|
+
this.triggerRefresh = this.triggerRefresh.then(refresh, refresh);
|
|
221
|
+
return this.triggerRefresh;
|
|
222
|
+
};
|
|
234
223
|
/** Throttle trigger deletes */
|
|
224
|
+
triggerCleanup = Promise.resolve();
|
|
225
|
+
pendingTriggerRegistrations = new Set();
|
|
235
226
|
deletingOrphanedTriggers;
|
|
236
227
|
deleteOrphanedTriggers = (latestTableNames) => {
|
|
237
228
|
this.deletingOrphanedTriggers ??= {
|
|
@@ -239,13 +230,26 @@ class PubSubManager {
|
|
|
239
230
|
timeout: setTimeout(() => {
|
|
240
231
|
const tableNames = this.deletingOrphanedTriggers.tableNames;
|
|
241
232
|
this.deletingOrphanedTriggers = undefined;
|
|
242
|
-
|
|
233
|
+
// Finish existing registrations before cleanup; new ones wait for this cleanup.
|
|
234
|
+
this.triggerCleanup = Promise.allSettled([
|
|
235
|
+
this.triggerCleanup,
|
|
236
|
+
...this.pendingTriggerRegistrations,
|
|
237
|
+
]).then(() => deleteOrphanedTriggers_1.deleteOrphanedTriggers.call(this, Array.from(tableNames)));
|
|
243
238
|
}, 1000),
|
|
244
239
|
};
|
|
245
240
|
latestTableNames.forEach((latestTableName) => {
|
|
246
241
|
this.deletingOrphanedTriggers?.tableNames.add(latestTableName);
|
|
247
242
|
});
|
|
248
243
|
};
|
|
244
|
+
registerTriggers = (register) => {
|
|
245
|
+
const result = this.triggerCleanup.then(register);
|
|
246
|
+
this.pendingTriggerRegistrations.add(result);
|
|
247
|
+
const settled = () => {
|
|
248
|
+
this.pendingTriggerRegistrations.delete(result);
|
|
249
|
+
};
|
|
250
|
+
void result.then(settled, settled);
|
|
251
|
+
return result;
|
|
252
|
+
};
|
|
249
253
|
addingTrigger;
|
|
250
254
|
addTriggerPool = undefined;
|
|
251
255
|
addTrigger = addTrigger_1.addTrigger.bind(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOrphanedTriggers.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/deleteOrphanedTriggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"deleteOrphanedTriggers.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/deleteOrphanedTriggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,iBAkC/E"}
|
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.deleteOrphanedTriggers = deleteOrphanedTriggers;
|
|
4
4
|
const PubSubManagerUtils_1 = require("./PubSubManagerUtils");
|
|
5
5
|
function deleteOrphanedTriggers(tableNames) {
|
|
6
|
+
const activeListeners = this.getActiveListeners();
|
|
6
7
|
const conditions = tableNames.map((tableName) => {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const activeConditions = activeListeners
|
|
9
|
+
.filter((listener) => listener.table_name === tableName)
|
|
10
|
+
.map((listener) => listener.condition);
|
|
11
|
+
return `(at.table_name = ${(0, PubSubManagerUtils_1.asValue)(tableName)} ${activeConditions.length ? `AND at.condition NOT IN (${(0, PubSubManagerUtils_1.asValue)(activeConditions, ":csv")})` : ""})`;
|
|
10
12
|
});
|
|
11
13
|
// log("deleteOrphanedTriggers", { appId: this.appId, conditions });
|
|
12
14
|
return this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOrphanedTriggers.js","sourceRoot":"","sources":["../../lib/PubSubManager/deleteOrphanedTriggers.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"deleteOrphanedTriggers.js","sourceRoot":"","sources":["../../lib/PubSubManager/deleteOrphanedTriggers.ts"],"names":[],"mappings":";;AAGA,wDAkCC;AApCD,6DAAmF;AAEnF,SAAgB,sBAAsB,CAAsB,UAAoB;IAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC9C,MAAM,gBAAgB,GAAG,eAAe;aACrC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC;aACvD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,oBAAoB,IAAA,4BAAO,EAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B,IAAA,4BAAO,EAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACtJ,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,OAAO,IAAI,CAAC,EAAE;SACX,GAAG,CACF;;aAEO,uDAAkC;;;gBAG/B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;SAE9B,EACH,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CACtB;SACA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACpB,kDAAkD;QAClD,iCAAiC;QACjC,qEAAqE;QACrE,0BAA0B;QAC1B,KAAK;QACL,oCAAoC;QACpC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,UAAkB,CAAC;AACjE,eAAO,MAAM,yBAAyB,GAAI,WAAW,OAAO,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,UAAkB,CAAC;AACjE,eAAO,MAAM,yBAAyB,GAAI,WAAW,OAAO,GAAG,SAAS,WAmGvE,CAAC;AA0PF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
|
|
@@ -15,8 +15,7 @@ const getDataWatchFunctionQuery = (debugMode) => {
|
|
|
15
15
|
CREATE OR REPLACE FUNCTION ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.data_watch_func}() RETURNS TRIGGER
|
|
16
16
|
AS $$
|
|
17
17
|
|
|
18
|
-
DECLARE c_ids
|
|
19
|
-
DECLARE err_c_ids INTEGER[];
|
|
18
|
+
DECLARE c_ids BIGINT[];
|
|
20
19
|
DECLARE condition_checks_union_query TEXT := '';
|
|
21
20
|
DECLARE query TEXT := '';
|
|
22
21
|
DECLARE v_trigger RECORD;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,2EAA2D;AAC3D,8DAAyD;AACzD,8DAAsF;AAEtF;;;GAGG;AACU,QAAA,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,MAAM,sBAAsB,GAAG;;qCAEI,wCAAY,CAAC,eAAe
|
|
1
|
+
{"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,2EAA2D;AAC3D,8DAAyD;AACzD,8DAAsF;AAEtF;;;GAGG;AACU,QAAA,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,MAAM,sBAAsB,GAAG;;qCAEI,wCAAY,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;kBAyB/C,sCAAsC;;kBAEtC,8BAA8B;;;;;;;;;;;;;0BAatB,IAAA,4BAAO,EAAC,kCAAa,CAAC,OAAO,CAAC;;4BAE5B,IAAA,4BAAO,EAAC,8BAAS,CAAC;;4BAElB,IAAA,4BAAO,EAAC,+BAAU,CAAC,IAAI,CAAC;;;;;;;;4BAQxB,SAAS,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;kBAexF,IAAA,qCAAgB,GAAE;;;;;;;8BAON,wCAAY,CAAC,eAAe;;GAEvD,CAAC;IAEF,2GAA2G;IAC3G,MAAM,UAAU,GAAG,sBAAsB;SACtC,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,IACE,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YACxC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAC/C,CAAC;YACD,MAAM,IAAI,KAAK,CACb,yJAAyJ,IAAI,EAAE,CAChK,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AAnGW,QAAA,yBAAyB,6BAmGpC;AAEF,MAAM,sCAAsC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4E9C,CAAC;AAEF,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EtC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EhC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPubSubManagerInitQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAa9D,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;
|
|
1
|
+
{"version":3,"file":"getPubSubManagerInitQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAa9D,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AA2dX;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,UAAU,KACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAyB5B,CAAC"}
|
|
@@ -186,6 +186,8 @@ BEGIN
|
|
|
186
186
|
COMMENT ON TABLE prostgles.apps IS 'Keep track of prostgles server apps connected to db to combine common triggers. Heartbeat used due to no logout triggers in postgres';
|
|
187
187
|
|
|
188
188
|
CREATE TABLE IF NOT EXISTS prostgles.app_triggers (
|
|
189
|
+
/* Stable notification IDs, capped at JavaScript's maximum safe integer. */
|
|
190
|
+
table_condition_id BIGINT GENERATED BY DEFAULT AS IDENTITY (MAXVALUE 9007199254740991) UNIQUE,
|
|
189
191
|
app_id TEXT NOT NULL,
|
|
190
192
|
table_name TEXT NOT NULL,
|
|
191
193
|
condition TEXT NOT NULL,
|
|
@@ -210,9 +212,8 @@ BEGIN
|
|
|
210
212
|
CREATE OR REPLACE VIEW prostgles.v_triggers AS
|
|
211
213
|
SELECT *
|
|
212
214
|
, (ROW_NUMBER() OVER( ORDER BY table_name, condition ))::text AS id
|
|
213
|
-
, ROW_NUMBER() OVER(PARTITION BY app_id, table_name ORDER BY table_name, condition ) - 1 AS table_condition_id
|
|
214
215
|
FROM prostgles.app_triggers;
|
|
215
|
-
COMMENT ON VIEW prostgles.v_triggers IS 'Augment trigger table with natural IDs
|
|
216
|
+
COMMENT ON VIEW prostgles.v_triggers IS 'Augment trigger table with natural IDs';
|
|
216
217
|
|
|
217
218
|
${(0, getDataWatchFunctionQuery_1.getDataWatchFunctionQuery)(debugMode)}
|
|
218
219
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPubSubManagerInitQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getPubSubManagerInitQuery.ts"],"names":[],"mappings":";;;AAAA,qDAA6C;AAC7C,wDAAgD;AAEhD,sEAAuD;AACvD,+FAAyG;AACzG,8DAM+B;AAC/B,8DAAyD;AACzD,2EAAwE;AAE3D,QAAA,YAAY,GAAG;IAC1B,uBAAuB,EAAE,mCAAmC;IAC5D,eAAe,EAAE,sCAAsC;IACvD,iBAAiB,EAAE,6BAA6B;IAChD,oBAAoB,EAAE,oCAAoC;IAC1D,yBAAyB,EAAE,yCAAyC;CAC5D,CAAC;AAEX,MAAM,6BAA6B,GAAG;;;;;;CAMrC,CAAC;AACF,MAAM,iCAAiC,GAAG;;;;;;CAMzC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,SAA8B,EAAE,SAAiB,EAAE,EAAE;IACzE,MAAM,kBAAkB,GAAG,SAAS,IAAI,MAAM,CAAC;IAC/C,MAAM,kBAAkB,GACtB,kBAAkB,CAAC,CAAC;QAClB,gCAAgC;QAClC,CAAC,CAAC;;;KAGD,CAAC;IAEJ,OAAO;;;;;;IAML,uDAAkC;;;;;;;;;;;;;;YAc1B,6BAA6B;;;;;;;YAO7B,iCAAiC;;;;;;;;;;;;;;;;;;;;UAoBnC,4DAAmC;;;;;;;;;;iBAU5B,IAAA,4BAAO,EAAC,sBAAO,CAAC
|
|
1
|
+
{"version":3,"file":"getPubSubManagerInitQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getPubSubManagerInitQuery.ts"],"names":[],"mappings":";;;AAAA,qDAA6C;AAC7C,wDAAgD;AAEhD,sEAAuD;AACvD,+FAAyG;AACzG,8DAM+B;AAC/B,8DAAyD;AACzD,2EAAwE;AAE3D,QAAA,YAAY,GAAG;IAC1B,uBAAuB,EAAE,mCAAmC;IAC5D,eAAe,EAAE,sCAAsC;IACvD,iBAAiB,EAAE,6BAA6B;IAChD,oBAAoB,EAAE,oCAAoC;IAC1D,yBAAyB,EAAE,yCAAyC;CAC5D,CAAC;AAEX,MAAM,6BAA6B,GAAG;;;;;;CAMrC,CAAC;AACF,MAAM,iCAAiC,GAAG;;;;;;CAMzC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,SAA8B,EAAE,SAAiB,EAAE,EAAE;IACzE,MAAM,kBAAkB,GAAG,SAAS,IAAI,MAAM,CAAC;IAC/C,MAAM,kBAAkB,GACtB,kBAAkB,CAAC,CAAC;QAClB,gCAAgC;QAClC,CAAC,CAAC;;;KAGD,CAAC;IAEJ,OAAO;;;;;;IAML,uDAAkC;;;;;;;;;;;;;;YAc1B,6BAA6B;;;;;;;YAO7B,iCAAiC;;;;;;;;;;;;;;;;;;;;UAoBnC,4DAAmC;;;;;;;;;;iBAU5B,IAAA,4BAAO,EAAC,sBAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAyHvB,IAAA,qDAAyB,EAAC,SAAS,CAAC;;qCAET,oBAAY,CAAC,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAoGrC,kBAAkB;;;yEAGmB,oBAAY,CAAC,eAAe;;;;;;;;;;kCAUnE,kBAAkB;;;uEAGmB,oBAAY,CAAC,eAAe;;;;;;;oCAO/D,kBAAkB;;;yEAGmB,oBAAY,CAAC,eAAe;;;;;;;;;;;;;;;yCAe5D,uDAAkC;;;;;;;;;;;;;;;;;;;;;wBAqBnD,IAAA,4BAAO,EAAC,kCAAa,CAAC,OAAO,CAAC;;0BAE5B,IAAA,4BAAO,EAAC,8BAAS,CAAC;0BAClB,IAAA,4BAAO,EAAC,+BAAU,CAAC,mBAAmB,CAAC;;;;qCAI5B,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,4BAA4B;;;;;;;;;;;8BAW9E,oBAAY,CAAC,uBAAuB;;;;;;+CAMnB,oBAAY,CAAC,uBAAuB;;;;;;+CAMpC,oBAAY,CAAC,uBAAuB;;;qCAG9C,oBAAY,CAAC,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDA0ChB,uDAAkC;;;0BAG3D,IAAA,4BAAO,EAAC,kCAAa,CAAC,OAAO,CAAC;;4BAE5B,IAAA,4BAAO,EAAC,8BAAS,CAAC;4BAClB,IAAA,4BAAO,EAAC,+BAAU,CAAC,MAAM,CAAC;;;4BAG1B,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B;;;;;sBAK7D,IAAA,qCAAgB,GAAE;;;;;;8BAMV,oBAAY,CAAC,iBAAiB;;;;;;;;CAQ3D,CAAC;AACF,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,yBAAyB,GAAG,KAAK;IAG5C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAY,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACrH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/E,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAY,CAAC,SAAS,CAAC,8BAA8B,EAAE;QAC1G,SAAS,CAAC,IAAI,EAAE;KACjB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,qBAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,OAAO,EAAP,sBAAO,EAAE,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAY,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC5F,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAA,4BAAU,EAAC,KAAK,IAAI,EAAE;QACnE,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAY,CAAC,GAAG,CAAC,iCAAiC,EAAE;YACtG,UAAU;YACV,OAAO,EAAP,sBAAO;SACR,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,sBAAsB,EAAE,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AA3BW,QAAA,yBAAyB,6BA2BpC"}
|
|
@@ -86,11 +86,11 @@ async function notifListener(data) {
|
|
|
86
86
|
state = "ok";
|
|
87
87
|
const firedTableConditions = tableTriggerConditions.filter(({ table_condition_id }) => conditionIds.includes(table_condition_id));
|
|
88
88
|
const orphanedTableConditions = conditionIds.filter((condId) => {
|
|
89
|
-
const tc = tableTriggerConditions.
|
|
89
|
+
const tc = tableTriggerConditions.find((trigger) => trigger.table_condition_id === condId);
|
|
90
90
|
return !tc || (tc.subs.length === 0 && tc.syncs.length === 0);
|
|
91
91
|
});
|
|
92
92
|
if (orphanedTableConditions.length) {
|
|
93
|
-
void this.deleteOrphanedTriggers(new Set(table_name));
|
|
93
|
+
void this.deleteOrphanedTriggers(new Set([table_name]));
|
|
94
94
|
}
|
|
95
95
|
const triggeredSubs = new Set();
|
|
96
96
|
firedTableConditions.map(({ table_condition_id, condition, subs, syncs }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifListener.js","sourceRoot":"","sources":["../../lib/PubSubManager/notifListener.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"notifListener.js","sourceRoot":"","sources":["../../lib/PubSubManager/notifListener.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshTriggers.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/refreshTriggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"refreshTriggers.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/refreshTriggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAA2C,MAAM,iBAAiB,CAAC;AAE9F,wBAAsB,eAAe,CAAC,IAAI,EAAE,aAAa,iBA6CxD"}
|
|
@@ -9,10 +9,11 @@ async function refreshTriggers() {
|
|
|
9
9
|
WHERE app_id = $1
|
|
10
10
|
ORDER BY table_name, condition
|
|
11
11
|
`, [this.dboBuilder.prostgles.appId]);
|
|
12
|
-
const oldTriggers =
|
|
12
|
+
const oldTriggers = this._triggers;
|
|
13
|
+
const newTriggers = new Map();
|
|
13
14
|
triggers.forEach((t) => {
|
|
14
|
-
|
|
15
|
-
const tableTriggers =
|
|
15
|
+
newTriggers.set(t.table_name, newTriggers.get(t.table_name) ?? new Map());
|
|
16
|
+
const tableTriggers = newTriggers.get(t.table_name);
|
|
16
17
|
const table_condition_id = Number(t.table_condition_id);
|
|
17
18
|
tableTriggers.set(table_condition_id, {
|
|
18
19
|
condition: t.condition,
|
|
@@ -21,6 +22,7 @@ async function refreshTriggers() {
|
|
|
21
22
|
table_condition_id,
|
|
22
23
|
});
|
|
23
24
|
});
|
|
25
|
+
this._triggers = newTriggers;
|
|
24
26
|
await this._log({
|
|
25
27
|
type: "syncOrSub",
|
|
26
28
|
command: "refreshTriggers",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshTriggers.js","sourceRoot":"","sources":["../../lib/PubSubManager/refreshTriggers.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"refreshTriggers.js","sourceRoot":"","sources":["../../lib/PubSubManager/refreshTriggers.ts"],"names":[],"mappings":";;AAEA,0CA6CC;AA7CM,KAAK,UAAU,eAAe;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAOhC;;;;;OAKG,EACH,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAClC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IACnC,MAAM,WAAW,GAA0B,IAAI,GAAG,EAAE,CAAC;IAErD,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,WAAW,CAAC,GAAG,CACb,CAAC,CAAC,UAAU,EACZ,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAA4B,CACrE,CAAC;QACF,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAE,CAAC;QACrD,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxD,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE;YACpC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,cAAc;YACtB,UAAU,EAAE,CAAC,CAAC,YAAY;YAC1B,kBAAkB;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;IAE7B,MAAM,IAAI,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QAC5B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -278,16 +278,11 @@ export class PubSubManager {
|
|
|
278
278
|
);
|
|
279
279
|
const matchingSub = this.subs[matchingSubIdx];
|
|
280
280
|
if (matchingSub) {
|
|
281
|
-
/** Ensure we check and refresh related table/view triggers as well */
|
|
282
|
-
const oldActiveTriggers = this.getAllActiveTriggers();
|
|
283
281
|
this.subs.splice(matchingSubIdx, 1);
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
282
|
+
// These are tables to recheck, not a snapshot of which triggers can be deleted.
|
|
283
|
+
this.deleteOrphanedTriggers(
|
|
284
|
+
new Set(matchingSub.triggers.map((trigger) => trigger.table_name)),
|
|
287
285
|
);
|
|
288
|
-
if (newActiveTriggers.length < oldActiveTriggers.length) {
|
|
289
|
-
this.deleteOrphanedTriggers(tableNames);
|
|
290
|
-
}
|
|
291
286
|
} else {
|
|
292
287
|
console.error("Could not unsubscribe. Subscription might not have initialised yet", {
|
|
293
288
|
channelName,
|
|
@@ -314,22 +309,6 @@ export class PubSubManager {
|
|
|
314
309
|
}));
|
|
315
310
|
return tableTriggerConditions;
|
|
316
311
|
};
|
|
317
|
-
getActiveTriggers = (tableName: string) => {
|
|
318
|
-
const activeTriggers = (this.getTriggerInfo(tableName) ?? []).filter(
|
|
319
|
-
(c) => c.subs.length || c.syncs.length,
|
|
320
|
-
);
|
|
321
|
-
return activeTriggers;
|
|
322
|
-
};
|
|
323
|
-
|
|
324
|
-
getAllActiveTriggers = () => {
|
|
325
|
-
return Array.from(this._triggers.keys()).flatMap((tableName) => {
|
|
326
|
-
return this.getActiveTriggers(tableName).map((triggerInfo) => ({
|
|
327
|
-
...triggerInfo,
|
|
328
|
-
tableName,
|
|
329
|
-
}));
|
|
330
|
-
});
|
|
331
|
-
};
|
|
332
|
-
|
|
333
312
|
getSubData = async (sub: Subscription) => {
|
|
334
313
|
const {
|
|
335
314
|
table_info,
|
|
@@ -418,9 +397,11 @@ export class PubSubManager {
|
|
|
418
397
|
syncTimeout?: ReturnType<typeof setTimeout>;
|
|
419
398
|
syncData = syncData.bind(this);
|
|
420
399
|
|
|
421
|
-
addSync = addSync
|
|
400
|
+
addSync = (...args: Parameters<typeof addSync>) =>
|
|
401
|
+
this.registerTriggers(() => addSync.apply(this, args));
|
|
422
402
|
|
|
423
|
-
addSub = addSub
|
|
403
|
+
addSub = (...args: Parameters<typeof addSub>) =>
|
|
404
|
+
this.registerTriggers(() => addSub.apply(this, args));
|
|
424
405
|
|
|
425
406
|
getActiveListeners = (): { table_name: string; condition: string }[] => {
|
|
426
407
|
const activeListeners: { table_name: string; condition: string }[] = [];
|
|
@@ -445,9 +426,17 @@ export class PubSubManager {
|
|
|
445
426
|
/**
|
|
446
427
|
* Sync triggers with database
|
|
447
428
|
* */
|
|
448
|
-
|
|
429
|
+
private triggerRefresh: Promise<void> = Promise.resolve();
|
|
430
|
+
refreshTriggers = () => {
|
|
431
|
+
// Apply database snapshots in order, including after a previous refresh failed.
|
|
432
|
+
const refresh = () => refreshTriggers.call(this);
|
|
433
|
+
this.triggerRefresh = this.triggerRefresh.then(refresh, refresh);
|
|
434
|
+
return this.triggerRefresh;
|
|
435
|
+
};
|
|
449
436
|
|
|
450
437
|
/** Throttle trigger deletes */
|
|
438
|
+
private triggerCleanup: Promise<void> = Promise.resolve();
|
|
439
|
+
private pendingTriggerRegistrations = new Set<Promise<unknown>>();
|
|
451
440
|
deletingOrphanedTriggers:
|
|
452
441
|
| {
|
|
453
442
|
tableNames: Set<string>;
|
|
@@ -460,7 +449,11 @@ export class PubSubManager {
|
|
|
460
449
|
timeout: setTimeout(() => {
|
|
461
450
|
const tableNames = this.deletingOrphanedTriggers!.tableNames;
|
|
462
451
|
this.deletingOrphanedTriggers = undefined;
|
|
463
|
-
|
|
452
|
+
// Finish existing registrations before cleanup; new ones wait for this cleanup.
|
|
453
|
+
this.triggerCleanup = Promise.allSettled([
|
|
454
|
+
this.triggerCleanup,
|
|
455
|
+
...this.pendingTriggerRegistrations,
|
|
456
|
+
]).then(() => deleteOrphanedTriggers.call(this, Array.from(tableNames)));
|
|
464
457
|
}, 1000),
|
|
465
458
|
};
|
|
466
459
|
|
|
@@ -469,6 +462,16 @@ export class PubSubManager {
|
|
|
469
462
|
});
|
|
470
463
|
};
|
|
471
464
|
|
|
465
|
+
private registerTriggers = <T>(register: () => Promise<T>): Promise<T> => {
|
|
466
|
+
const result = this.triggerCleanup.then(register);
|
|
467
|
+
this.pendingTriggerRegistrations.add(result);
|
|
468
|
+
const settled = () => {
|
|
469
|
+
this.pendingTriggerRegistrations.delete(result);
|
|
470
|
+
};
|
|
471
|
+
void result.then(settled, settled);
|
|
472
|
+
return result;
|
|
473
|
+
};
|
|
474
|
+
|
|
472
475
|
addingTrigger: any;
|
|
473
476
|
addTriggerPool?: Record<string, string[]> = undefined;
|
|
474
477
|
addTrigger = addTrigger.bind(this);
|
|
@@ -2,10 +2,12 @@ import type { PubSubManager } from "./PubSubManager";
|
|
|
2
2
|
import { asValue, EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID } from "./PubSubManagerUtils";
|
|
3
3
|
|
|
4
4
|
export function deleteOrphanedTriggers(this: PubSubManager, tableNames: string[]) {
|
|
5
|
+
const activeListeners = this.getActiveListeners();
|
|
5
6
|
const conditions = tableNames.map((tableName) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const activeConditions = activeListeners
|
|
8
|
+
.filter((listener) => listener.table_name === tableName)
|
|
9
|
+
.map((listener) => listener.condition);
|
|
10
|
+
return `(at.table_name = ${asValue(tableName)} ${activeConditions.length ? `AND at.condition NOT IN (${asValue(activeConditions, ":csv")})` : ""})`;
|
|
9
11
|
});
|
|
10
12
|
|
|
11
13
|
// log("deleteOrphanedTriggers", { appId: this.appId, conditions });
|
|
@@ -13,8 +13,7 @@ export const getDataWatchFunctionQuery = (debugMode: boolean | undefined) => {
|
|
|
13
13
|
CREATE OR REPLACE FUNCTION ${DB_OBJ_NAMES.data_watch_func}() RETURNS TRIGGER
|
|
14
14
|
AS $$
|
|
15
15
|
|
|
16
|
-
DECLARE c_ids
|
|
17
|
-
DECLARE err_c_ids INTEGER[];
|
|
16
|
+
DECLARE c_ids BIGINT[];
|
|
18
17
|
DECLARE condition_checks_union_query TEXT := '';
|
|
19
18
|
DECLARE query TEXT := '';
|
|
20
19
|
DECLARE v_trigger RECORD;
|
|
@@ -195,6 +195,8 @@ BEGIN
|
|
|
195
195
|
COMMENT ON TABLE prostgles.apps IS 'Keep track of prostgles server apps connected to db to combine common triggers. Heartbeat used due to no logout triggers in postgres';
|
|
196
196
|
|
|
197
197
|
CREATE TABLE IF NOT EXISTS prostgles.app_triggers (
|
|
198
|
+
/* Stable notification IDs, capped at JavaScript's maximum safe integer. */
|
|
199
|
+
table_condition_id BIGINT GENERATED BY DEFAULT AS IDENTITY (MAXVALUE 9007199254740991) UNIQUE,
|
|
198
200
|
app_id TEXT NOT NULL,
|
|
199
201
|
table_name TEXT NOT NULL,
|
|
200
202
|
condition TEXT NOT NULL,
|
|
@@ -219,9 +221,8 @@ BEGIN
|
|
|
219
221
|
CREATE OR REPLACE VIEW prostgles.v_triggers AS
|
|
220
222
|
SELECT *
|
|
221
223
|
, (ROW_NUMBER() OVER( ORDER BY table_name, condition ))::text AS id
|
|
222
|
-
, ROW_NUMBER() OVER(PARTITION BY app_id, table_name ORDER BY table_name, condition ) - 1 AS table_condition_id
|
|
223
224
|
FROM prostgles.app_triggers;
|
|
224
|
-
COMMENT ON VIEW prostgles.v_triggers IS 'Augment trigger table with natural IDs
|
|
225
|
+
COMMENT ON VIEW prostgles.v_triggers IS 'Augment trigger table with natural IDs';
|
|
225
226
|
|
|
226
227
|
${getDataWatchFunctionQuery(debugMode)}
|
|
227
228
|
|
|
@@ -102,11 +102,11 @@ export async function notifListener(this: PubSubManager, data: { payload: string
|
|
|
102
102
|
conditionIds.includes(table_condition_id),
|
|
103
103
|
);
|
|
104
104
|
const orphanedTableConditions = conditionIds.filter((condId) => {
|
|
105
|
-
const tc = tableTriggerConditions.
|
|
105
|
+
const tc = tableTriggerConditions.find((trigger) => trigger.table_condition_id === condId);
|
|
106
106
|
return !tc || (tc.subs.length === 0 && tc.syncs.length === 0);
|
|
107
107
|
});
|
|
108
108
|
if (orphanedTableConditions.length) {
|
|
109
|
-
void this.deleteOrphanedTriggers(new Set(table_name));
|
|
109
|
+
void this.deleteOrphanedTriggers(new Set([table_name]));
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
const triggeredSubs = new Set<Subscription>();
|