diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index ecd41610f..7b36da519 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -142,6 +142,11 @@ module.exports = { if (newOpened.disconnected) return; this.close(conid, database, false); }); + subprocess.on('error', err => { + logger.error(extractErrorLogData(err), 'Error in database connection subprocess'); + if (newOpened.disconnected) return; + this.close(conid, database, false); + }); subprocess.send({ msgtype: 'connect', diff --git a/packages/api/src/controllers/serverConnections.js b/packages/api/src/controllers/serverConnections.js index fa2a3042c..61dfe6a82 100644 --- a/packages/api/src/controllers/serverConnections.js +++ b/packages/api/src/controllers/serverConnections.js @@ -98,6 +98,11 @@ module.exports = { if (newOpened.disconnected) return; this.close(conid, false); }); + subprocess.on('error', err => { + logger.error(extractErrorLogData(err), 'Error in server connection subprocess'); + if (newOpened.disconnected) return; + this.close(conid, false); + }); subprocess.send({ msgtype: 'connect', ...connection, globalSettings: await config.getSettings() }); return newOpened; }); diff --git a/packages/api/src/utility/DatastoreProxy.js b/packages/api/src/utility/DatastoreProxy.js index 72022c306..1be85daad 100644 --- a/packages/api/src/utility/DatastoreProxy.js +++ b/packages/api/src/utility/DatastoreProxy.js @@ -60,6 +60,10 @@ class DatastoreProxy { // if (this.disconnected) return; this.subprocess = null; }); + this.subprocess.on('error', err => { + logger.error(extractErrorLogData(err), 'Error in data store subprocess'); + this.subprocess = null; + }); this.subprocess.send({ msgtype: 'open', file: this.file }); } return this.subprocess; diff --git a/packages/api/src/utility/sshTunnel.js b/packages/api/src/utility/sshTunnel.js index da19aa1eb..a7a6c2776 100644 --- a/packages/api/src/utility/sshTunnel.js +++ b/packages/api/src/utility/sshTunnel.js @@ -57,10 +57,21 @@ function callForwardProcess(connection, tunnelConfig, tunnelCacheKey) { } }); subprocess.on('exit', code => { - logger.info('SSH forward process exited'); + logger.info(`SSH forward process exited with code ${code}`); delete sshTunnelCache[tunnelCacheKey]; if (!promiseHandled) { - reject(new Error('SSH forward process exited, try to change "Local host address for SSH connections" in Settings/Connections')); + reject( + new Error( + 'SSH forward process exited, try to change "Local host address for SSH connections" in Settings/Connections' + ) + ); + } + }); + subprocess.on('error', error => { + logger.error(extractErrorLogData(error), 'SSH forward process error'); + delete sshTunnelCache[tunnelCacheKey]; + if (!promiseHandled) { + reject(error); } }); });