diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index 02ec95c7f..1dfe68fe6 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -292,7 +292,17 @@ module.exports = { let existing = this.opened.find(x => x.conid == conid && x.database == database); if (existing) { - existing.subprocess.send({ msgtype: 'ping' }); + try { + existing.subprocess.send({ msgtype: 'ping' }); + } catch (err) { + logger.error({ err }, 'Error pinging DB connection'); + this.close(conid, database); + + return { + status: 'error', + message: 'Ping failed', + }; + } } else { // @ts-ignore existing = await this.ensureOpened(conid, database); diff --git a/packages/api/src/controllers/serverConnections.js b/packages/api/src/controllers/serverConnections.js index fd7136d0f..fb168e022 100644 --- a/packages/api/src/controllers/serverConnections.js +++ b/packages/api/src/controllers/serverConnections.js @@ -164,7 +164,7 @@ module.exports = { try { opened.subprocess.send({ msgtype: 'ping' }); } catch (err) { - logger.error({ err }, 'Error calling ping'); + logger.error({ err }, 'Error pinging server connection'); this.close(conid); } }) diff --git a/packages/api/src/controllers/sessions.js b/packages/api/src/controllers/sessions.js index 658b2c459..d3ca9eb22 100644 --- a/packages/api/src/controllers/sessions.js +++ b/packages/api/src/controllers/sessions.js @@ -219,7 +219,16 @@ module.exports = { if (!session) { throw new Error('Invalid session'); } - session.subprocess.send({ msgtype: 'ping' }); + try { + session.subprocess.send({ msgtype: 'ping' }); + } catch (err) { + logger.error({ err }, 'Error pinging session'); + + return { + status: 'error', + message: 'Ping failed', + }; + } return { state: 'ok' }; },