Better progress text when waiting for other tasks

Fixes #630
This commit is contained in:
Girish Ramakrishnan
2019-08-28 21:59:14 -07:00
parent a40505e2ee
commit 1faee00764
4 changed files with 19 additions and 4 deletions
+11 -1
View File
@@ -22,6 +22,14 @@ let gPendingTasks = [ ];
const TASK_CONCURRENCY = 3;
const NOOP_CALLBACK = function (error) { if (error) debug(error); };
function waitText(lockOperation) {
if (lockOperation === locker.OP_BOX_UPDATE) return 'Waiting for Cloudron to finish updating. See the Settings view';
if (lockOperation === locker.OP_PLATFORM_START) return 'Waiting for Cloudron to initialize';
if (lockOperation === locker.OP_FULL_BACKUP) return 'Wait for Cloudron to finish backup. See the Backups view';
return ''; // cannot happen
}
// callback is called when task is finished
function scheduleTask(appId, taskId, callback) {
assert.strictEqual(typeof appId, 'string');
@@ -34,6 +42,7 @@ function scheduleTask(appId, taskId, callback) {
if (Object.keys(gActiveTasks).length >= TASK_CONCURRENCY) {
debug(`Reached concurrency limit, queueing task id ${taskId}`);
tasks.update(taskId, { percent: 0, message: 'Waiting for other app tasks to complete' }, NOOP_CALLBACK);
gPendingTasks.push({ appId, taskId, callback });
return;
}
@@ -41,7 +50,8 @@ function scheduleTask(appId, taskId, callback) {
var lockError = locker.recursiveLock(locker.OP_APPTASK);
if (lockError) {
debug(`Locked for another operation, queueing task id ${taskId}`);
debug(`Could not get lock. ${lockError.message}, queueing task id ${taskId}`);
tasks.update(taskId, { percent: 0, message: waitText(lockError.operation) }, NOOP_CALLBACK);
gPendingTasks.push({ appId, taskId, callback });
return;
}