@n8n/db 1.27.0 → 1.27.1
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/build.tsbuildinfo +1 -1
- package/dist/connection/db-connection-monitor.d.ts +16 -1
- package/dist/connection/db-connection-monitor.js +106 -15
- package/dist/connection/db-connection-monitor.js.map +1 -1
- package/dist/connection/db-connection.js +1 -1
- package/dist/connection/db-connection.js.map +1 -1
- package/package.json +8 -8
|
@@ -14,12 +14,27 @@ export declare class DbConnectionMonitor {
|
|
|
14
14
|
private connected;
|
|
15
15
|
private stopped;
|
|
16
16
|
private stopAbortController;
|
|
17
|
+
private pendingRecovery;
|
|
18
|
+
private resolvePendingRecovery;
|
|
19
|
+
private recoveryPromise;
|
|
20
|
+
private liveObtainMasterConnection;
|
|
17
21
|
constructor(dataSource: DataSource, onConnectedChange: (connected: boolean) => void, databaseConfig: DatabaseConfig, logger: Logger, errorReporter: ErrorReporter, initialConnected?: boolean);
|
|
18
22
|
start(): void;
|
|
19
|
-
stop(): void
|
|
23
|
+
stop(): Promise<void>;
|
|
20
24
|
private scheduleNextPing;
|
|
21
25
|
private ping;
|
|
22
26
|
private recoverDataSource;
|
|
27
|
+
private computeBackoff;
|
|
28
|
+
private get isPostgres();
|
|
29
|
+
private get postgresDriver();
|
|
23
30
|
private attachPoolErrorHandler;
|
|
31
|
+
private wrapConnectionAcquisition;
|
|
32
|
+
private acquireConnection;
|
|
33
|
+
private awaitRecovery;
|
|
34
|
+
private startRecovery;
|
|
35
|
+
private markRecoveryPending;
|
|
36
|
+
private stopRecovery;
|
|
37
|
+
private clearPendingRecovery;
|
|
38
|
+
private isRecoverableConnectionError;
|
|
24
39
|
private setConnected;
|
|
25
40
|
}
|
|
@@ -5,9 +5,8 @@ const backend_common_1 = require("@n8n/backend-common");
|
|
|
5
5
|
const constants_1 = require("@n8n/constants");
|
|
6
6
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
7
|
const promises_1 = require("timers/promises");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const MAX_RECOVERY_BACKOFF_MS = 30_000;
|
|
8
|
+
const POOL_TORN_DOWN_MESSAGE = 'Cannot use a pool after calling end on the pool';
|
|
9
|
+
const DRIVER_NOT_CONNECTED_MESSAGE = 'Driver not Connected';
|
|
11
10
|
class DbConnectionMonitor {
|
|
12
11
|
constructor(dataSource, onConnectedChange, databaseConfig, logger, errorReporter, initialConnected = true) {
|
|
13
12
|
this.dataSource = dataSource;
|
|
@@ -23,19 +22,24 @@ class DbConnectionMonitor {
|
|
|
23
22
|
}
|
|
24
23
|
start() {
|
|
25
24
|
this.attachPoolErrorHandler();
|
|
26
|
-
this.
|
|
25
|
+
this.wrapConnectionAcquisition();
|
|
26
|
+
if (this.databaseConfig.maxRecoveryBackoffMs < this.databaseConfig.minRecoveryBackoffMs) {
|
|
27
|
+
this.logger.warn(`DB_RECOVERY_BACKOFF_MAX_MS (${this.databaseConfig.maxRecoveryBackoffMs}) is below DB_RECOVERY_BACKOFF_MIN_MS (${this.databaseConfig.minRecoveryBackoffMs}); recovery will retry at a constant ${this.databaseConfig.minRecoveryBackoffMs}ms instead of backing off. Set max >= min.`);
|
|
28
|
+
}
|
|
29
|
+
this.logger.debug(`Database connection monitor started (pingIntervalSeconds=${this.databaseConfig.pingIntervalSeconds}, pingTimeoutMs=${this.databaseConfig.pingTimeoutMs}, recoveryThreshold=${this.databaseConfig.pingMaxFailuresBeforeRecovery})`);
|
|
27
30
|
if (!backend_common_1.inTest) {
|
|
28
31
|
this.scheduleNextPing();
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
|
-
stop() {
|
|
34
|
+
async stop() {
|
|
32
35
|
this.stopped = true;
|
|
33
|
-
this.
|
|
36
|
+
this.stopRecovery();
|
|
34
37
|
this.stopAbortController.abort();
|
|
35
38
|
if (this.pingTimer) {
|
|
36
39
|
clearTimeout(this.pingTimer);
|
|
37
40
|
this.pingTimer = undefined;
|
|
38
41
|
}
|
|
42
|
+
await this.recoveryPromise;
|
|
39
43
|
this.logger.debug('Database connection monitor stopped');
|
|
40
44
|
}
|
|
41
45
|
scheduleNextPing() {
|
|
@@ -71,13 +75,13 @@ class DbConnectionMonitor {
|
|
|
71
75
|
catch (error) {
|
|
72
76
|
this.setConnected(false);
|
|
73
77
|
this.consecutiveFailures += 1;
|
|
74
|
-
this.logger.warn(`Database ping failed (${this.consecutiveFailures}/${
|
|
78
|
+
this.logger.warn(`Database ping failed (${this.consecutiveFailures}/${this.databaseConfig.pingMaxFailuresBeforeRecovery}): ${(0, n8n_workflow_1.ensureError)(error).message}`);
|
|
75
79
|
if (!(error instanceof n8n_workflow_1.OperationalError)) {
|
|
76
80
|
this.errorReporter.error(error);
|
|
77
81
|
}
|
|
78
|
-
if (this.consecutiveFailures >=
|
|
82
|
+
if (this.consecutiveFailures >= this.databaseConfig.pingMaxFailuresBeforeRecovery) {
|
|
79
83
|
this.logger.warn(`Triggering database connection recovery after ${this.consecutiveFailures} consecutive ping failures`);
|
|
80
|
-
|
|
84
|
+
this.recoveryPromise = this.recoverDataSource();
|
|
81
85
|
}
|
|
82
86
|
}
|
|
83
87
|
finally {
|
|
@@ -89,7 +93,7 @@ class DbConnectionMonitor {
|
|
|
89
93
|
if (this.recovering || this.stopped) {
|
|
90
94
|
return;
|
|
91
95
|
}
|
|
92
|
-
this.
|
|
96
|
+
this.startRecovery();
|
|
93
97
|
try {
|
|
94
98
|
const recoveryStart = Date.now();
|
|
95
99
|
let attempt = 0;
|
|
@@ -106,6 +110,7 @@ class DbConnectionMonitor {
|
|
|
106
110
|
}
|
|
107
111
|
await this.dataSource.initialize();
|
|
108
112
|
this.attachPoolErrorHandler();
|
|
113
|
+
this.wrapConnectionAcquisition();
|
|
109
114
|
this.setConnected(true);
|
|
110
115
|
this.consecutiveFailures = 0;
|
|
111
116
|
recovered = true;
|
|
@@ -113,7 +118,7 @@ class DbConnectionMonitor {
|
|
|
113
118
|
catch (error) {
|
|
114
119
|
const wrapped = (0, n8n_workflow_1.ensureError)(error);
|
|
115
120
|
this.errorReporter.error(wrapped);
|
|
116
|
-
const backoff =
|
|
121
|
+
const backoff = this.computeBackoff(attempt);
|
|
117
122
|
this.logger.warn(`Recovery attempt ${attempt} failed: ${wrapped.message}. Retrying in ${backoff}ms`);
|
|
118
123
|
try {
|
|
119
124
|
await (0, promises_1.setTimeout)(backoff, undefined, {
|
|
@@ -135,25 +140,111 @@ class DbConnectionMonitor {
|
|
|
135
140
|
this.errorReporter.error((0, n8n_workflow_1.ensureError)(error));
|
|
136
141
|
}
|
|
137
142
|
finally {
|
|
138
|
-
this.
|
|
143
|
+
this.stopRecovery();
|
|
139
144
|
}
|
|
140
145
|
}
|
|
146
|
+
computeBackoff(attempt) {
|
|
147
|
+
const { minRecoveryBackoffMs, maxRecoveryBackoffMs } = this.databaseConfig;
|
|
148
|
+
const ceiling = Math.max(minRecoveryBackoffMs, maxRecoveryBackoffMs);
|
|
149
|
+
return Math.min(minRecoveryBackoffMs * 2 ** (attempt - 1), ceiling);
|
|
150
|
+
}
|
|
151
|
+
get isPostgres() {
|
|
152
|
+
return this.dataSource.options.type === 'postgres';
|
|
153
|
+
}
|
|
154
|
+
get postgresDriver() {
|
|
155
|
+
return this.dataSource.driver;
|
|
156
|
+
}
|
|
141
157
|
attachPoolErrorHandler() {
|
|
142
|
-
if (this.
|
|
158
|
+
if (!this.isPostgres) {
|
|
143
159
|
return;
|
|
144
160
|
}
|
|
145
|
-
const
|
|
146
|
-
const pool = driver.master;
|
|
161
|
+
const pool = this.postgresDriver.master;
|
|
147
162
|
if (!pool || typeof pool.on !== 'function') {
|
|
148
163
|
this.logger.warn('Skipping Postgres pool error listener: driver.master is unavailable (TypeORM internals may have changed)');
|
|
149
164
|
return;
|
|
150
165
|
}
|
|
151
166
|
pool.on('error', (cause) => {
|
|
167
|
+
if (!this.isPostgres || this.postgresDriver.master !== pool) {
|
|
168
|
+
this.logger.debug('Ignoring Postgres pool error from a pool replaced by recovery');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
152
171
|
this.setConnected(false);
|
|
153
172
|
this.logger.warn(`Postgres pool client error: ${(0, n8n_workflow_1.ensureError)(cause).message}`);
|
|
154
173
|
});
|
|
155
174
|
this.logger.debug('Attached pool error listener to Postgres driver');
|
|
156
175
|
}
|
|
176
|
+
wrapConnectionAcquisition() {
|
|
177
|
+
if (!this.isPostgres) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const driver = this.postgresDriver;
|
|
181
|
+
const original = driver.obtainMasterConnection.bind(driver);
|
|
182
|
+
this.liveObtainMasterConnection = original;
|
|
183
|
+
driver.obtainMasterConnection = async () => await this.acquireConnection(original);
|
|
184
|
+
}
|
|
185
|
+
async acquireConnection(original) {
|
|
186
|
+
await this.awaitRecovery();
|
|
187
|
+
try {
|
|
188
|
+
return await original();
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (!this.isRecoverableConnectionError(error)) {
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
const liveObtainMasterConnection = this.liveObtainMasterConnection;
|
|
195
|
+
const isRecoveryRace = this.recovering ||
|
|
196
|
+
this.pendingRecovery !== undefined ||
|
|
197
|
+
(liveObtainMasterConnection !== undefined && liveObtainMasterConnection !== original);
|
|
198
|
+
if (!isRecoveryRace) {
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
await this.awaitRecovery();
|
|
202
|
+
return await (this.liveObtainMasterConnection ?? original)();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
async awaitRecovery() {
|
|
206
|
+
const pending = this.pendingRecovery;
|
|
207
|
+
if (!pending) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const timeoutMs = this.databaseConfig.connectionAcquisitionTimeoutMs;
|
|
211
|
+
if (timeoutMs <= 0) {
|
|
212
|
+
await pending;
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const abortController = new AbortController();
|
|
216
|
+
try {
|
|
217
|
+
await Promise.race([
|
|
218
|
+
pending,
|
|
219
|
+
(0, promises_1.setTimeout)(timeoutMs, undefined, { signal: abortController.signal }).then(() => {
|
|
220
|
+
throw new n8n_workflow_1.OperationalError(`Timed out after ${timeoutMs}ms waiting for database connection recovery`);
|
|
221
|
+
}),
|
|
222
|
+
]);
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
abortController.abort();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
startRecovery() {
|
|
229
|
+
this.recovering = true;
|
|
230
|
+
this.markRecoveryPending();
|
|
231
|
+
}
|
|
232
|
+
markRecoveryPending() {
|
|
233
|
+
this.pendingRecovery ??= new Promise((resolve) => (this.resolvePendingRecovery = resolve));
|
|
234
|
+
}
|
|
235
|
+
stopRecovery() {
|
|
236
|
+
this.recovering = false;
|
|
237
|
+
this.clearPendingRecovery();
|
|
238
|
+
}
|
|
239
|
+
clearPendingRecovery() {
|
|
240
|
+
this.resolvePendingRecovery?.();
|
|
241
|
+
this.resolvePendingRecovery = undefined;
|
|
242
|
+
this.pendingRecovery = undefined;
|
|
243
|
+
}
|
|
244
|
+
isRecoverableConnectionError(error) {
|
|
245
|
+
const { message } = (0, n8n_workflow_1.ensureError)(error);
|
|
246
|
+
return (message.includes(POOL_TORN_DOWN_MESSAGE) || message.includes(DRIVER_NOT_CONNECTED_MESSAGE));
|
|
247
|
+
}
|
|
157
248
|
setConnected(connected) {
|
|
158
249
|
if (this.connected === connected) {
|
|
159
250
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-connection-monitor.js","sourceRoot":"","sources":["../../src/connection/db-connection-monitor.ts"],"names":[],"mappings":";;;AAAA,wDAA0D;AAE1D,8CAAsC;
|
|
1
|
+
{"version":3,"file":"db-connection-monitor.js","sourceRoot":"","sources":["../../src/connection/db-connection-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ let DbConnection = class DbConnection {
|
|
|
68
68
|
connectionState.migrated = true;
|
|
69
69
|
}
|
|
70
70
|
async close() {
|
|
71
|
-
this.monitor?.stop();
|
|
71
|
+
await this.monitor?.stop();
|
|
72
72
|
this.monitor = undefined;
|
|
73
73
|
if (this.dataSource.isInitialized) {
|
|
74
74
|
await this.dataSource.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../src/connection/db-connection.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,wCAA6C;AAC7C,gDAA2C;AAC3C,gCAA6C;AAC7C,0CAA0C;AAC1C,uCAAyC;AACzC,+CAAqE;AAErE,mEAA8D;AAC9D,mEAA8D;AAC9D,uEAAgE;AASzD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAUxB,YACkB,aAA4B,EAC5B,iBAAsC,EACtC,cAA8B,EAC9B,MAAc;QAHd,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAAqB;QACtC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAQ;QATvB,oBAAe,GAAoB;YAC3C,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;SACf,CAAC;QAQD,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,cAAS,CAAC,GAAG,CAAC,oBAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,IACI,OAAO;QACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC1C,IAAI,eAAe,CAAC,SAAS;YAAE,OAAO;QAGtC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,6HAA6H,CAC7H,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,KAAK,GAAG,IAAA,0BAAW,EAAC,CAAC,CAAC,CAAC;YAC3B,IACC,OAAO,CAAC,IAAI,KAAK,UAAU;gBAC3B,KAAK,CAAC,OAAO,KAAK,iDAAiD,EAClE,CAAC;gBACF,KAAK,GAAG,IAAI,uCAAwB,CAAC;oBACpC,KAAK,EAAE,KAAK;oBACZ,qBAAqB,EAAE,OAAO,CAAC,gBAAiB;iBAChD,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;QAED,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,2CAAmB,CACrC,IAAI,CAAC,UAAU,EACf,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,EAC3D,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,eAAe,CAAC,SAAS,CACzB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC5C,UAAU,CAAC,OAAO,CAAC,UAA0B,CAAC,OAAO,CAAC,iCAAa,CAAC,CAAC;QACtE,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../src/connection/db-connection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/db",
|
|
3
|
-
"version": "1.27.
|
|
3
|
+
"version": "1.27.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"uuid": "11.1.1",
|
|
21
21
|
"xss": "1.0.15",
|
|
22
22
|
"zod": "3.25.67",
|
|
23
|
-
"@n8n/backend-common": "1.27.
|
|
24
|
-
"@n8n/decorators": "1.27.0",
|
|
25
|
-
"@n8n/constants": "0.27.0",
|
|
23
|
+
"@n8n/backend-common": "1.27.1",
|
|
26
24
|
"@n8n/api-types": "1.27.0",
|
|
27
|
-
"@n8n/
|
|
28
|
-
"@n8n/
|
|
25
|
+
"@n8n/config": "2.25.1",
|
|
26
|
+
"@n8n/constants": "0.27.0",
|
|
27
|
+
"@n8n/decorators": "1.27.1",
|
|
29
28
|
"@n8n/permissions": "0.64.0",
|
|
30
|
-
"@n8n/
|
|
29
|
+
"@n8n/di": "0.14.0",
|
|
31
30
|
"n8n-workflow": "2.27.0",
|
|
32
|
-
"n8n-core": "2.27.
|
|
31
|
+
"n8n-core": "2.27.1",
|
|
32
|
+
"@n8n/utils": "1.35.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/lodash": "4.17.17",
|