SYNC: handle subprocess errors

This commit is contained in:
SPRINX0\prochazka
2025-04-09 09:40:24 +02:00
committed by Diflow
parent 4b3c0466eb
commit 14b47a929f
4 changed files with 27 additions and 2 deletions

View File

@@ -142,6 +142,11 @@ module.exports = {
if (newOpened.disconnected) return; if (newOpened.disconnected) return;
this.close(conid, database, false); 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({ subprocess.send({
msgtype: 'connect', msgtype: 'connect',

View File

@@ -98,6 +98,11 @@ module.exports = {
if (newOpened.disconnected) return; if (newOpened.disconnected) return;
this.close(conid, false); 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() }); subprocess.send({ msgtype: 'connect', ...connection, globalSettings: await config.getSettings() });
return newOpened; return newOpened;
}); });

View File

@@ -60,6 +60,10 @@ class DatastoreProxy {
// if (this.disconnected) return; // if (this.disconnected) return;
this.subprocess = null; 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 }); this.subprocess.send({ msgtype: 'open', file: this.file });
} }
return this.subprocess; return this.subprocess;

View File

@@ -57,10 +57,21 @@ function callForwardProcess(connection, tunnelConfig, tunnelCacheKey) {
} }
}); });
subprocess.on('exit', code => { subprocess.on('exit', code => {
logger.info('SSH forward process exited'); logger.info(`SSH forward process exited with code ${code}`);
delete sshTunnelCache[tunnelCacheKey]; delete sshTunnelCache[tunnelCacheKey];
if (!promiseHandled) { 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);
} }
}); });
}); });