diff --git a/public/electron.js b/public/electron.js index ef6634e5c..01fe6a1e2 100644 --- a/public/electron.js +++ b/public/electron.js @@ -137,7 +137,7 @@ ipcMain.on('lnd-restart-process', async event => { lndProcess && lndProcess.kill('SIGINT'); let restartError; try { - lndProcess = await startLndProcess({ + lndProcess = startLndProcess({ isDev, lndSettingsDir, lndPort: LND_PORT, @@ -151,15 +151,15 @@ ipcMain.on('lnd-restart-process', async event => { event.sender.send('lnd-restart-error', { restartError }); }); -const startLnd = async () => { +const startLnd = () => { try { - btcdProcess = await startBtcdProcess({ + btcdProcess = startBtcdProcess({ isDev, logger: Logger, btcdSettingsDir, miningAddress: BTCD_MINING_ADDRESS, }); - lndProcess = await startLndProcess({ + lndProcess = startLndProcess({ isDev, lndSettingsDir, lndPort: LND_PORT, diff --git a/public/lnd-child-process.js b/public/lnd-child-process.js index 43a613556..216f687d0 100644 --- a/public/lnd-child-process.js +++ b/public/lnd-child-process.js @@ -11,21 +11,18 @@ function getProcessName(binName) { return fs.existsSync(filePath) ? filePath : filename; } -async function startChildProcess(name, args, logger) { - return new Promise((resolve, reject) => { - const processName = getProcessName(name); - logger.info(`Using ${name} in path ${processName}`); - const childProcess = cp.spawn(processName, args); - childProcess.stdout.on('data', data => { - logger.info(`${name}: ${data}`); - resolve(childProcess); - }); - childProcess.stderr.on('data', data => { - logger.error(`${name} Error: ${data}`); - reject(new Error(data)); - }); - childProcess.on('error', reject); +function startChildProcess(name, args, logger) { + const processName = getProcessName(name); + logger.info(`Using ${name} in path ${processName}`); + const childProcess = cp.spawn(processName, args, { + detached: true, + stdio: 'ignore', }); + childProcess.unref(); + childProcess.on('error', err => + logger.error(`Errored in child process: ${err}`) + ); + return childProcess; } function startBlockingProcess(name, args, logger) { @@ -45,7 +42,7 @@ function startBlockingProcess(name, args, logger) { }); } -module.exports.startLndProcess = async function({ +module.exports.startLndProcess = function({ isDev, lndSettingsDir, lndPort, @@ -95,7 +92,7 @@ module.exports.startLndProcess = async function({ return startChildProcess(processName, args, logger); }; -module.exports.startBtcdProcess = async function({ +module.exports.startBtcdProcess = function({ isDev, logger, btcdSettingsDir, diff --git a/test/integration/action/action-integration.spec.js b/test/integration/action/action-integration.spec.js index a63ff9d9d..a063fc29b 100644 --- a/test/integration/action/action-integration.spec.js +++ b/test/integration/action/action-integration.spec.js @@ -95,8 +95,8 @@ describe('Action Integration Tests', function() { let autopilot2; let btcdArgs; - const startLnd = async () => { - const lndProcess1Promise = startLndProcess({ + const startLnd = () => { + lndProcess1 = startLndProcess({ isDev, lndSettingsDir: LND_SETTINGS_DIR_1, lndPort: LND_PORT_1, @@ -104,7 +104,7 @@ describe('Action Integration Tests', function() { lndRestPort: LND_REST_PORT_1, logger, }); - const lndProcess2Promise = startLndProcess({ + lndProcess2 = startLndProcess({ isDev, lndSettingsDir: LND_SETTINGS_DIR_2, lndPort: LND_PORT_2, @@ -112,9 +112,6 @@ describe('Action Integration Tests', function() { lndRestPort: LND_REST_PORT_2, logger, }); - - lndProcess1 = await lndProcess1Promise; - lndProcess2 = await lndProcess2Promise; }; before(async () => { @@ -136,12 +133,12 @@ describe('Action Integration Tests', function() { btcdSettingsDir: BTCD_SETTINGS_DIR, miningAddress: BTCD_MINING_ADDRESS, }; - btcdProcess = await startBtcdProcess(btcdArgs); + btcdProcess = startBtcdProcess(btcdArgs); await nap(NAP_TIME); await retry(() => isPortOpen(BTCD_PORT)); await mineBlocks({ blocks: 400, logger }); - await startLnd(); + startLnd(); await grcpClient.init({ ipcMain: ipcMainStub1, @@ -239,7 +236,7 @@ describe('Action Integration Tests', function() { it('should reset password', async () => { lndProcess1.kill('SIGINT'); lndProcess2.kill('SIGINT'); - await startLnd(); + startLnd(); ipcMainStub1.on('lnd-restart-process', async event => { event.sender.send('lnd-restart-error', { restartError: undefined }); }); @@ -263,7 +260,7 @@ describe('Action Integration Tests', function() { it('should unlock wallet with reset password', async () => { lndProcess1.kill(); lndProcess2.kill(); - await startLnd(); + startLnd(); store1.walletUnlocked = false; await grpc1.initUnlocker(); @@ -292,7 +289,7 @@ describe('Action Integration Tests', function() { it('should fund wallet for node1', async () => { await killProcess(btcdProcess.pid); btcdArgs.miningAddress = store1.walletAddress; - btcdProcess = await startBtcdProcess(btcdArgs); + btcdProcess = startBtcdProcess(btcdArgs); await nap(NAP_TIME); await retry(() => isPortOpen(BTCD_PORT)); await mineAndSync({ blocks: 100 });