fix --watch (reflect API changes)

This commit is contained in:
tknew2 2014-08-24 22:03:43 +02:00
parent 8b925c5d10
commit 1b6893da2a
11 changed files with 63 additions and 66 deletions

View File

@ -167,10 +167,12 @@ Common.validateApp = function(appConf, outputter) {
*/
Common.exitCli = function(code) {
InteractorDaemonizer.disconnectRPC(function() {
Satan.disconnectRPC(function() {
return process.exit(code || 0);
});
});
Satan.disconnectRPC(function() {
});
setTimeout(function() {
process.exit(code || 0);
}, 100);
};
/**

View File

@ -295,10 +295,12 @@ module.exports = function(God) {
*/
God.restartProcessId = function(opts, cb) {
var id = opts.id;
var env = opts.env;
var env = opts.env || {};
if (typeof(id) === 'undefined')
return cb(God.logAndGenerateError('opts.id not passed to restartProcessId', opts));
if (!(id in God.clusters_db))
return cb(God.logAndGenerateError(id + ' id unknown'), {});
return cb(God.logAndGenerateError('God db process id unknown'), {});
var proc = God.clusters_db[id];
@ -336,7 +338,7 @@ module.exports = function(God) {
async.eachLimit(processes, cst.CONCURRENT_ACTIONS, function(proc, next) {
if (proc.pm2_env.status == cst.ONLINE_STATUS)
return God.restartProcessId(proc.pm2_env.pm_id, next);
return God.restartProcessId({id:proc.pm2_env.pm_id}, next);
else
return God.startProcessId(proc.pm2_env.pm_id, next);
}, function(err) {
@ -512,29 +514,31 @@ module.exports = function(God) {
* @return
*/
God.stopWatch = function(method, value, fn) {
var env;
var env = null;
if (method == 'stopAll' || method == 'deleteAll') {
var processes = God.getFormatedProcesses();
processes.forEach(function(proc) {
console.log('stop watching', proc.pm_id);
God.clusters_db[proc.pm_id].pm2_env.watch = false;
require('../Watcher').close(proc.pm_id);
});
if(method == 'stopAll' || method == 'deleteAll') {
var processes = God.getFormatedProcesses(), l = processes.length;
while(l--) {
env = processes[l].pm2_env;
require('../Watcher').close(env.pm_id);
env.watch = false;
}
} else {
if(method.indexOf('ProcessId') !== -1) {
if (method.indexOf('ProcessId') !== -1) {
env = God.clusters_db[value];
} else if(method.indexOf('ProcessName') !== -1) {
} else if (method.indexOf('ProcessName') !== -1) {
env = God.clusters_db[God.findByName(value)];
}
if(env) {
if (env) {
require('../Watcher').close(env.pm2_env.pm_id);
env.pm2_env.watch = false;
}
}
return fn(null, {success:true});
};
/**
@ -546,10 +550,10 @@ module.exports = function(God) {
* @return
*/
God.restartWatch = function(method, value, fn) {
var env;
var env = null;
if (method == 'restartProcessId') {
env = God.clusters_db[value];
env = God.clusters_db[value.id];
} else if(method == 'restartProcessName') {
env = God.clusters_db[God.findByName(value)];
}

View File

@ -190,8 +190,9 @@ InteractorDaemonizer.daemonize = function(infos, cb) {
child.disconnect();
console.log(chalk.cyan('[Keymetrics.io]') + ' Launched - Log: %s | Conf: %s | PID: %s', cst.INTERACTOR_LOG_FILE_PATH,
cst.INTERACTION_CONF,
cst.INTERACTOR_PID_PATH);
cst.INTERACTION_CONF,
cst.INTERACTOR_PID_PATH);
return setTimeout(function() {cb(null, child)}, 100);
});
};

View File

@ -83,12 +83,12 @@ Satan.processStateHandler = function(God) {
try {
fs.writeFileSync(cst.PM2_PID_FILE_PATH, process.pid);
} catch(e){}
process.on('SIGILL', function() {
global.gc();
console.log(' running garbage collector');
});
process.on('SIGTERM', gracefullExit);
process.on('SIGINT', gracefullExit);
process.on('SIGQUIT', gracefullExit);
@ -353,13 +353,13 @@ Satan.getExposedMethods = function getExposedMethods(cb) {
Satan.executeRemote = function executeRemote(method, env, fn) {
//stop watching when process is deleted
if (method.indexOf('delete') !== -1) {
Satan.stopWatch(method, env, fn);
Satan.stopWatch(method, env);
} else if(method.indexOf('kill') !== -1) {
Satan.stopWatch('deleteAll', env, fn);
Satan.stopWatch('deleteAll', env);
} else if (process.argv.indexOf('--watch') !== -1 && method.indexOf('stop') !== -1) {
Satan.stopWatch(method, env, fn);
Satan.stopWatch(method, env);
} else if (process.argv.indexOf('--watch') !== -1 && method.indexOf('restart') !== -1) {
Satan.restartWatch(method, env, fn);
Satan.restartWatch(method, env);
}
if (!Satan.client || !Satan.client.call) {
@ -396,7 +396,9 @@ Satan.killDaemon = function killDaemon(fn) {
* @return
*/
Satan.restartWatch = function restartWatch(method, env, fn) {
Satan.client.call('restartWatch', method, env, fn);
Satan.client.call('restartWatch', method, env, function() {
debug('Restart watching');
});
};
/**
@ -408,7 +410,9 @@ Satan.restartWatch = function restartWatch(method, env, fn) {
* @return
*/
Satan.stopWatch = function stopWatch(method, env, fn) {
Satan.client.call('stopWatch', method, env, fn);
Satan.client.call('stopWatch', method, env, function() {
debug('Stop watching');
});
};
//

View File

@ -57,8 +57,6 @@ module.exports = {
.on('all', function(event, path) {
var self = this;
log('File changed, reloading');
if(self.restarting === true) {
log('Already restarting skipping');
return;
@ -66,7 +64,7 @@ module.exports = {
self.restarting = true;
require('./God').restartProcessId(pm2_env.pm_id, function(err, list) {
require('./God').restartProcessId({id:pm2_env.pm_id}, function(err, list) {
self.restarting = false;
if(err) {
@ -88,7 +86,7 @@ module.exports = {
* Description
* @method close
* @param {} id
* @return
* @return
*/
close: function(id) {
if(this.watchers[id]) {

View File

@ -122,7 +122,7 @@
"axm": "~0.1.7",
"axon": "~2.0.0",
"chalk": "~0.5.1",
"chokidar": "~0.8.2",
"chokidar": "0.8.2",
"cli-table": "~0.3.0",
"coffee-script": "~1.7.1",
"colors": "~0.6.2",

View File

@ -1,21 +0,0 @@
{
"apps" : [{
"name" : "test.json",
"script" : "test.json.js",
"options": [""]
}],
"deploy" : {
"production" : {
"user" : "node",
"host" : "212.83.163.1",
"repo" : "git@github.com:repo.git",
"path" : "/var/www/production"
},
"dev" : {
"user" : "node",
"host" : "212.83.163.1",
"repo" : "git@github.com:repo.git",
"path" : "/var/www/development"
}
}
}

View File

@ -13,6 +13,7 @@
node="`type -P node`"
nodeVersion="`$node -v`"
pm2="`type -P node` `pwd`/bin/pm2"
script="echo"

View File

@ -18,22 +18,22 @@ echo -e "\033[1mRunning tests:\033[0m"
#####################
# Watch for changes #
#####################
if [ -f server-watch.js ]; then
rm server-watch.js
fi
>server-watch.js
$pm2 kill
sleep 1
cp server-watch.bak.js server-watch.js
$pm2 start --watch server-watch.js
$pm2 start server-watch.js --watch
should 'process should be watched' 'watch: true' 1
echo "console.log('test');" >> server-watch.js
sleep 1
cat server-watch.js
$pm2 list
should 'process should have been restarted' 'restart_time: 1' 1
@ -102,11 +102,10 @@ $pm2 restart 0
should 'process should restart and not be watched' 'watch: false' 1
$pm2 restart --watch 0
should 'process should be watched' 'watch: true' 1
#$pm2 restart --watch 0
#should 'process should be watched' 'watch: true' 1
$pm2 kill
sleep 1
rm server-watch.js
#############
@ -133,7 +132,7 @@ $pm2 kill
cp server-watch.bak.js server-watch.js
$pm2 start server-watch.js --watch
$pm2 start server-watch.js --watch
$pm2 stop 0
$pm2 delete 0

7
test/fixtures/server-watch.js vendored Normal file
View File

@ -0,0 +1,7 @@
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200);
res.end('hey');
}).listen(8000);
console.log('test');

View File

@ -12,6 +12,8 @@ echo "###################### !DEBUG! ###########################"
bash ./test/bash/cli.sh
spec "CLI basic test"
bash ./test/bash/watch.sh
spec "Watch feature"
bash ./test/bash/json_file.sh
spec "JSON file test"
bash ./test/bash/harmony.sh