/**
     * Take a normal (non-priority) task out of a job queue, marking it as completed so it will not be re-delivered.
     * TODO maybe use unique delivery receipts instead of task IDs to handle redelivered tasks independently
     * @return whether the task was found and removed.
     */
public synchronized boolean markTaskCompleted (int taskId) {
        Job job = getJobForTask(taskId);
        if (job == null) {
            LOG.error("Could not find a job containing task {}, and therefore could not mark the task as completed.", taskId);
            return false;
        }
        job.completedTasks.add(taskId);
        return true;
    }
public synchronized boolean markTaskCompleted (int taskId) {
Job job = getJobForTask(taskId);
if (job == null) {
LOG.error("Could not find a job containing task {}, and therefore could not mark the task as completed.", taskId);
return false;
}
job.completedTasks.add(taskId);
return true;
}
public synchronized boolean markTaskCompleted (int taskId) {
Job job = getJobForTask(taskId);
if (job == null) {
LOG.error("Could not find a job containing task {}, and therefore could not mark the task as completed.", taskId);
return false;
}
job.completedTasks.add(taskId);
return true;
}
public synchronized boolean markTaskCompleted (int taskId) {
Job job = getJobForTask(taskId);
if (job == null) {
LOG.error("Could not find a job containing task {}, and therefore could not mark the task as completed.", taskId);
return false;
}
job.completedTasks.add(taskId);
return true;
}