From 36bfac7162c1f6a0b13be45f56acb6481972dbd4 Mon Sep 17 00:00:00 2001 From: vmarchaud Date: Wed, 28 Mar 2018 16:15:12 +0200 Subject: [PATCH] interactor: handle errors from handshake + enable log by default --- src/InteractorClient.js | 12 +++++++----- src/InteractorDaemon.js | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/InteractorClient.js b/src/InteractorClient.js index 51d7120..4912e12 100644 --- a/src/InteractorClient.js +++ b/src/InteractorClient.js @@ -8,6 +8,7 @@ const axon = require('pm2-axon') const chalk = require('chalk') const os = require('os') const constants = require('../constants') +const child_process = require('child_process') const printError = (msg) => { if (process.env.PM2_SILENT || process.env.PM2_PROGRAMMATIC) return false @@ -170,10 +171,10 @@ module.exports = class InteractorDaemonizer { // Redirect PM2 internal err and out // to STDERR STDOUT when running with Travis const testEnv = process.env.TRAVIS || (process.env.NODE_ENV && process.env.NODE_ENV.match(/test/)) - const out = testEnv ? 1 : fs.openSync(conf.INTERACTOR_LOG_FILE_PATH, 'a') - const err = testEnv ? 2 : fs.openSync(conf.INTERACTOR_LOG_FILE_PATH, 'a') + const out = testEnv ? 1 : fs.openSync(constants.INTERACTOR_LOG_FILE_PATH, 'a') + const err = testEnv ? 2 : fs.openSync(constants.INTERACTOR_LOG_FILE_PATH, 'a') - const child = require('child_process').spawn(process.env.NODEJS_EXECUTABLE || 'node', [InteractorJS], { + const child = child_process.spawn(process.env.NODEJS_EXECUTABLE || 'node', [InteractorJS], { silent: false, detached: true, cwd: process.cwd(), @@ -184,7 +185,8 @@ module.exports = class InteractorDaemonizer { PM2_PUBLIC_KEY: infos.public_key, PM2_REVERSE_INTERACT: infos.reverse_interact, KEYMETRICS_NODE: infos.info_node, - PM2_VERSION: infos.pm2_version + PM2_VERSION: infos.pm2_version, + DEBUG: process.env.DEBUG || 'interactor:*,-interactor:axon,-interactor:websocket' }, process.env), stdio: ['ipc', out, err] }) @@ -193,7 +195,7 @@ module.exports = class InteractorDaemonizer { child.on('close', (status) => { if (status === constants.ERROR_EXIT) { - return cb(new Error()) + return cb(new Error('Agent has shutdown for unknown reason')) } return cb() }) diff --git a/src/InteractorDaemon.js b/src/InteractorDaemon.js index 315eeec..022a08b 100644 --- a/src/InteractorDaemon.js +++ b/src/InteractorDaemon.js @@ -167,6 +167,10 @@ const InteractorDaemon = module.exports = class InteractorDaemon { return cb(err) } + if (data.error === true) { + return cb(new Error(data.msg)) + } + if (data.disabled === true || data.pending === true) { log('Interactor is disabled by admins') return cb(new Error('Interactor disabled, contact us at contact@keymetrics.io for more informatios'))