diff --git a/src/backups.js b/src/backups.js index b1c49ab1c..cdc1543fc 100644 --- a/src/backups.js +++ b/src/backups.js @@ -937,7 +937,7 @@ function ensureBackup(auditSource, callback) { return callback(null); } - tasks.startTask(tasks.TASK_BACKUP, [], auditSource, callback); + tasks.startTask(tasks.TASK_BACKUP, {}, auditSource, callback); }); }); } diff --git a/src/routes/backups.js b/src/routes/backups.js index 504d7fcb3..3986adeee 100644 --- a/src/routes/backups.js +++ b/src/routes/backups.js @@ -36,7 +36,7 @@ function list(req, res, next) { function startBackup(req, res, next) { // note that cloudron.backup only waits for backup initiation and not for backup to complete // backup progress can be checked up ny polling the progress api call - tasks.startTask(tasks.TASK_BACKUP, [], auditSource(req), function (error) { + tasks.startTask(tasks.TASK_BACKUP, {}, auditSource(req), function (error) { if (error && error.reason === TasksError.BAD_STATE) return next(new HttpError(409, error.message)); if (error) return next(new HttpError(500, error)); diff --git a/src/routes/sysadmin.js b/src/routes/sysadmin.js index 0daf1d1ca..181a56b06 100644 --- a/src/routes/sysadmin.js +++ b/src/routes/sysadmin.js @@ -26,7 +26,7 @@ function backup(req, res, next) { // note that cloudron.backup only waits for backup initiation and not for backup to complete // backup progress can be checked up ny polling the progress api call var auditSource = { userId: null, username: 'sysadmin' }; - tasks.startTask(tasks.TASK_BACKUP, [], auditSource, function (error) { + tasks.startTask(tasks.TASK_BACKUP, {}, auditSource, function (error) { if (error && error.reason === TasksError.BAD_STATE) return next(new HttpError(409, error.message)); if (error) return next(new HttpError(500, error)); diff --git a/src/taskdb.js b/src/taskdb.js index 0be682c80..16ed3c8bc 100644 --- a/src/taskdb.js +++ b/src/taskdb.js @@ -17,7 +17,7 @@ function postProcess(result) { assert.strictEqual(typeof result, 'object'); assert(result.argsJson === null || typeof result.argsJson === 'string'); - result.args = safe.JSON.parse(result.argsJson); + result.args = safe.JSON.parse(result.argsJson) || {}; delete result.argsJson; } diff --git a/src/tasks.js b/src/tasks.js index 2f23e131e..079d4fb53 100644 --- a/src/tasks.js +++ b/src/tasks.js @@ -97,12 +97,12 @@ function clear(id, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); - update(id, { percent: 0, message: 'Starting', result: '', errorMessage: '' }, callback); + update(id, { percent: 0, message: 'Starting', result: '', errorMessage: '', args: {} }, callback); } function startTask(id, args, auditSource, callback) { assert.strictEqual(typeof id, 'string'); - assert(Array.isArray(args)); + assert(args && typeof args === 'object'); assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); @@ -125,9 +125,9 @@ function startTask(id, args, auditSource, callback) { assert(!gTasks[id], 'Task is already running'); clear(id, NOOP_CALLBACK); - eventlog.add(taskInfo.startEventId, auditSource, { }); + eventlog.add(taskInfo.startEventId, auditSource, args); - gTasks[id] = child_process.fork(taskInfo.program, args, { stdio: [ 'pipe', fd, fd, 'ipc' ]}); + gTasks[id] = child_process.fork(taskInfo.program, [], { stdio: [ 'pipe', fd, fd, 'ipc' ]}); gTasks[id].once('exit', function (code, signal) { debug(`startTask: ${id} completed with code ${code} and signal ${signal}`);