Skip to content

Commit

Permalink
Use workaround for master/worker child logger.
Browse files Browse the repository at this point in the history
Child logger does not always work correctly in the master/worker code.
Using a workaround with a manually added prefix for now.
  • Loading branch information
davidlehn committed Nov 14, 2019
1 parent 0a0d90d commit c2f318c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# bedrock ChangeLog

### Fixed
- Use workaround for master/worker child logger issue.

## 3.0.1 - 2019-11-08

### Fixed
Expand Down
29 changes: 17 additions & 12 deletions lib/bedrock.js
Original file line number Diff line number Diff line change
Expand Up @@ -356,19 +356,21 @@ function _configureProcess() {
}
}

function _setupUncaughtExceptionHandler(mode, logger) {
function _setupUncaughtExceptionHandler(logger, logPrefix) {
// log uncaught exception and exit, except in test mode
if(config.cli.command.name() !== 'test') {
process.on('uncaughtException', function(err) {
process.removeAllListeners('uncaughtException');
logger.critical(mode + ': uncaught error:', {error: err});
logger.critical(`${logPrefix} uncaught error`, {error: err});
process.exit(1);
});
}
}

function _runMaster(startTime, options) {
const logger = loggers.get('app').child('bedrock/master');
// FIXME: use child logger
const logger = loggers.get('app');
const logPrefix = '[bedrock/master]';

// setup cluster if running with istanbul coverage
if(process.env.running_under_istanbul) {
Expand All @@ -386,10 +388,11 @@ function _runMaster(startTime, options) {
const args = process.argv.slice(2).join(' ');
process.title = config.core.master.title + (args ? (' ' + args) : '');

_setupUncaughtExceptionHandler('master', logger);
_setupUncaughtExceptionHandler(logger, logPrefix);

logger.info(
`starting process "${config.core.master.title}"`, {pid: process.pid});
`${logPrefix} starting process "${config.core.master.title}"`,
{pid: process.pid});

// get starting script
const script = options.script || process.argv[1];
Expand All @@ -413,14 +416,14 @@ function _runMaster(startTime, options) {
// the process
if(worker.exitedAfterDisconnect) {
logger.info(
`worker "${worker.process.pid}" exited on purpose` +
`${logPrefix} worker "${worker.process.pid}" exited on purpose` +
` with code "${code}"; exiting master process.`);
process.exit(code);
}

// accidental worker exit (crash)
logger.critical(
`worker "${worker.process.pid}" exited with code "${code}"`);
`${logPrefix} worker "${worker.process.pid}" exited with code "${code}"`);

// if configured, fork a replacement worker
if(config.core.worker.restart) {
Expand All @@ -442,19 +445,21 @@ function _runMaster(startTime, options) {
for(let i = 0; i < workers; ++i) {
_startWorker(masterState, script);
}
logger.info('started', {timeMs: Date.now() - startTime});
logger.info(`${logPrefix} started`, {timeMs: Date.now() - startTime});
}

async function _runWorker(startTime) {
const logger = loggers.get('app').child('bedrock/worker');
// FIXME: use child logger
const logger = loggers.get('app');
const logPrefix = '[bedrock/worker]';

// set 'ps' title
const args = process.argv.slice(2).join(' ');
process.title = config.core.worker.title + (args ? (' ' + args) : '');

_setupUncaughtExceptionHandler('worker', logger);
_setupUncaughtExceptionHandler(logger, logPrefix);

logger.info(`starting process "${config.core.worker.title}"`);
logger.info(`${logPrefix} starting process "${config.core.worker.title}"`);

// listen for master process exit
let bedrockStarted = false;
Expand Down Expand Up @@ -491,7 +496,7 @@ async function _runWorker(startTime) {
await events.emit('bedrock.start');
await events.emit('bedrock.ready');
await events.emit('bedrock.started');
logger.info('started', {timeMs: Date.now() - startTime});
logger.info(`${logPrefix} started`, {timeMs: Date.now() - startTime});
}

function _startWorker(state, script) {
Expand Down

0 comments on commit c2f318c

Please sign in to comment.