Fix oputil hang

This commit is contained in:
Bryan Ashby 2018-06-17 15:14:31 -06:00
parent c9674e68fb
commit f3cd36ad07
3 changed files with 28 additions and 21 deletions

View File

@ -100,7 +100,14 @@ function init(configPath, options, cb) {
}; };
const ConfigCache = require('./config_cache.js'); const ConfigCache = require('./config_cache.js');
ConfigCache.getConfigWithOptions( { filePath : configPath, callback : changed }, (err, config) => { const getConfigOptions = {
filePath : configPath,
noWatch : options.noWatch,
};
if(!options.noWatch) {
getConfigOptions.callback = changed;
}
ConfigCache.getConfigWithOptions(getConfigOptions, (err, config) => {
if(err) { if(err) {
return cb(err); return cb(err);
} }

View File

@ -19,24 +19,26 @@ module.exports = new class ConfigCache
if(options.forceReCache || !cached) { if(options.forceReCache || !cached) {
this.recacheConfigFromFile(options.filePath, (err, config) => { this.recacheConfigFromFile(options.filePath, (err, config) => {
if(!err && !cached) { if(!err && !cached) {
const watcher = sane( if(!options.noWatch) {
paths.dirname(options.filePath), const watcher = sane(
{ paths.dirname(options.filePath),
glob : `**/${paths.basename(options.filePath)}` {
} glob : `**/${paths.basename(options.filePath)}`
);
watcher.on('change', (fileName, fileRoot) => {
require('./logger.js').log.info( { fileName, fileRoot }, 'Configuration file changed; re-caching');
this.recacheConfigFromFile(paths.join(fileRoot, fileName), err => {
if(!err) {
if(options.callback) {
options.callback( { fileName, fileRoot } );
}
} }
);
watcher.on('change', (fileName, fileRoot) => {
require('./logger.js').log.info( { fileName, fileRoot }, 'Configuration file changed; re-caching');
this.recacheConfigFromFile(paths.join(fileRoot, fileName), err => {
if(!err) {
if(options.callback) {
options.callback( { fileName, fileRoot } );
}
}
});
}); });
}); }
} }
return cb(err, config, true); return cb(err, config, true);
}); });

View File

@ -2,8 +2,6 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
'use strict'; 'use strict';
const resolvePath = require('../misc_util.js').resolvePath;
const config = require('../../core/config.js'); const config = require('../../core/config.js');
const db = require('../../core/database.js'); const db = require('../../core/database.js');
@ -46,7 +44,7 @@ function printUsageAndSetExitCode(errMsg, exitCode) {
} }
function getDefaultConfigPath() { function getDefaultConfigPath() {
return './config/'; return './config/';
} }
function getConfigPath() { function getConfigPath() {
@ -57,7 +55,7 @@ function getConfigPath() {
function initConfig(cb) { function initConfig(cb) {
const configPath = getConfigPath(); const configPath = getConfigPath();
config.init(configPath, { keepWsc : true }, cb); config.init(configPath, { keepWsc : true, noWatch : true }, cb);
} }
function initConfigAndDatabases(cb) { function initConfigAndDatabases(cb) {