mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
commit
674e446955
9
bin/pm2
9
bin/pm2
@ -603,6 +603,15 @@ commander.command('dump')
|
||||
pm2.dump();
|
||||
}));
|
||||
|
||||
//
|
||||
// Delete dump file
|
||||
//
|
||||
commander.command('cleardump')
|
||||
.description('Create empty dump file')
|
||||
.action(failOnUnknown(function() {
|
||||
pm2.clearDump();
|
||||
}));
|
||||
|
||||
//
|
||||
// Save processes to file
|
||||
//
|
||||
|
||||
@ -371,13 +371,32 @@ module.exports = function(CLI) {
|
||||
* @return
|
||||
*/
|
||||
function fin(err) {
|
||||
|
||||
// try to fix issues with empty dump file
|
||||
// like #3485
|
||||
if (env_arr.length === 0) {
|
||||
|
||||
// fix : if no dump file, no process, only module and after pm2 update
|
||||
if (!fs.existsSync(cst.DUMP_FILE_PATH)) {
|
||||
that.clearDump(function(){});
|
||||
}
|
||||
|
||||
// if no process in list don't modify dump file
|
||||
// process list should not be empty
|
||||
if(cb) {
|
||||
return cb(null, {success: true});
|
||||
} else {
|
||||
Common.printOut(cst.PREFIX_MSG + 'Nothing to save !!!');
|
||||
Common.printOut(cst.PREFIX_MSG + 'In this case we keep old dump file. To clear dump file you can delete it manually !');
|
||||
that.exitCli(cst.SUCCESS_EXIT);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Back up dump file
|
||||
try {
|
||||
if (fs.existsSync(cst.DUMP_FILE_PATH)) {
|
||||
if (fs.existsSync(cst.DUMP_BACKUP_FILE_PATH)) {
|
||||
fs.unlinkSync(cst.DUMP_BACKUP_FILE_PATH);
|
||||
}
|
||||
fs.renameSync(cst.DUMP_FILE_PATH, cst.DUMP_BACKUP_FILE_PATH);
|
||||
fs.copyFileSync(cst.DUMP_FILE_PATH, cst.DUMP_BACKUP_FILE_PATH);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e.stack || e);
|
||||
@ -390,8 +409,13 @@ module.exports = function(CLI) {
|
||||
} catch (e) {
|
||||
console.error(e.stack || e);
|
||||
try {
|
||||
fs.unlinkSync(cst.DUMP_FILE_PATH);
|
||||
// try to backup file
|
||||
if(fs.existsSync(cst.DUMP_BACKUP_FILE_PATH)) {
|
||||
fs.copyFileSync(cst.DUMP_BACKUP_FILE_PATH, cst.DUMP_FILE_PATH);
|
||||
}
|
||||
} catch (e) {
|
||||
// don't keep broken file
|
||||
fs.unlinkSync(cst.DUMP_FILE_PATH);
|
||||
console.error(e.stack || e);
|
||||
}
|
||||
Common.printOut(cst.PREFIX_MSG_ERR + 'Failed to save dump file in %s', cst.DUMP_FILE_PATH);
|
||||
@ -415,6 +439,21 @@ module.exports = function(CLI) {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Remove DUMP_FILE_PATH file and DUMP_BACKUP_FILE_PATH file
|
||||
* @method dump
|
||||
* @param {} cb
|
||||
* @return
|
||||
*/
|
||||
CLI.prototype.clearDump = function(cb) {
|
||||
fs.writeFileSync(cst.DUMP_FILE_PATH, JSON.stringify([]));
|
||||
|
||||
if(cb && typeof cb === 'function') return cb();
|
||||
|
||||
Common.printOut(cst.PREFIX_MSG + 'Successfully created %s', cst.DUMP_FILE_PATH);
|
||||
return this.exitCli(cst.SUCCESS_EXIT);
|
||||
};
|
||||
|
||||
/**
|
||||
* Resurrect processes
|
||||
* @method resurrect
|
||||
|
||||
@ -137,13 +137,25 @@ module.exports = function(God) {
|
||||
}
|
||||
|
||||
function fin(err) {
|
||||
|
||||
// try to fix issues with empty dump file
|
||||
// like #3485
|
||||
if (process_list.length === 0) {
|
||||
|
||||
// fix : if no dump file, no process, only module and after pm2 update
|
||||
if (!fs.existsSync(cst.DUMP_FILE_PATH)) {
|
||||
that.clearDump(function(){});
|
||||
}
|
||||
|
||||
// if no process in list don't modify dump file
|
||||
// process list should not be empty
|
||||
return cb(null, {success:true, process_list: process_list});
|
||||
}
|
||||
|
||||
// Back up dump file
|
||||
try {
|
||||
if (fs.existsSync(cst.DUMP_FILE_PATH)) {
|
||||
if (fs.existsSync(cst.DUMP_BACKUP_FILE_PATH)) {
|
||||
fs.unlinkSync(cst.DUMP_BACKUP_FILE_PATH);
|
||||
}
|
||||
fs.renameSync(cst.DUMP_FILE_PATH, cst.DUMP_BACKUP_FILE_PATH);
|
||||
fs.copyFileSync(cst.DUMP_FILE_PATH, cst.DUMP_BACKUP_FILE_PATH);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e.stack || e);
|
||||
@ -155,8 +167,13 @@ module.exports = function(God) {
|
||||
} catch (e) {
|
||||
console.error(e.stack || e);
|
||||
try {
|
||||
fs.unlinkSync(cst.DUMP_FILE_PATH);
|
||||
// try to backup file
|
||||
if(fs.existsSync(cst.DUMP_BACKUP_FILE_PATH)) {
|
||||
fs.copyFileSync(cst.DUMP_BACKUP_FILE_PATH, cst.DUMP_FILE_PATH);
|
||||
}
|
||||
} catch (e) {
|
||||
// don't keep broken file
|
||||
fs.unlinkSync(cst.DUMP_FILE_PATH);
|
||||
console.error(e.stack || e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,12 @@ describe('PM2 programmatic calls', function() {
|
||||
});
|
||||
|
||||
after(function(done) {
|
||||
pm2.kill(done);
|
||||
pm2.delete('all', function(err, ret) {
|
||||
// clean dump file
|
||||
pm2.clearDump(function(err) {
|
||||
pm2.kill(done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
before(function(done) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user