Fix: Remove 'Killed' tasks on 'clean'

This commit is contained in:
Arne Beer 2020-03-27 13:36:05 +01:00
parent f7813736ad
commit 3638f6562f
5 changed files with 21 additions and 7 deletions

View file

@ -1,3 +1,8 @@
# v0.2.1
**Fixes:**
- Respect `Killed` tasks on `pueue clean`.
# v0.2.0
**Features:**
- New `--delay` flag, which delays enqueueing of a task. Can be used on `start` and `enqueue`.

View file

@ -120,8 +120,10 @@ fn switch(message: SwitchMessage, state: &SharedState) -> Message {
fn stash(message: StashMessage, state: &SharedState) -> Message {
let (matching, mismatching) = {
let mut state = state.lock().unwrap();
let (matching, mismatching) =
state.tasks_in_statuses(vec![TaskStatus::Queued, TaskStatus::Locked], Some(message.task_ids));
let (matching, mismatching) = state.tasks_in_statuses(
vec![TaskStatus::Queued, TaskStatus::Locked],
Some(message.task_ids),
);
for task_id in &matching {
state.change_status(*task_id, TaskStatus::Stashed);

View file

@ -1,4 +1,4 @@
use ::anyhow::{Result, anyhow};
use ::anyhow::{anyhow, Result};
use ::async_std::net::{TcpListener, TcpStream};
use ::async_std::task;
use ::log::{info, warn};

View file

@ -108,7 +108,9 @@ impl TaskHandler {
let task = state.tasks.get_mut(&task_id);
let task = match task {
Some(task) => {
if !vec![TaskStatus::Stashed, TaskStatus::Queued, TaskStatus::Paused].contains(&task.status) {
if !vec![TaskStatus::Stashed, TaskStatus::Queued, TaskStatus::Paused]
.contains(&task.status)
{
info!("Tried to start task with status: {}", task.status);
return;
}
@ -181,7 +183,7 @@ impl TaskHandler {
let mut changed = false;
for (_, task) in state.tasks.iter_mut() {
if task.status != TaskStatus::Stashed {
continue
continue;
}
if let Some(time) = task.enqueue_at {

View file

@ -131,7 +131,7 @@ impl State {
/// Remove all finished tasks (clean up the task queue)
pub fn clean(&mut self) {
self.backup();
let statuses = vec![TaskStatus::Done, TaskStatus::Failed];
let statuses = vec![TaskStatus::Done, TaskStatus::Failed, TaskStatus::Killed];
let (matching, _) = self.tasks_in_statuses(statuses, None);
for task_id in &matching {
@ -245,7 +245,12 @@ impl State {
for (task_id, task) in state.tasks.iter_mut() {
// Handle ungraceful shutdowns while executing tasks
if task.status == TaskStatus::Running || task.status == TaskStatus::Paused {
info!("Setting task {} with previous status {:?} to new status {:?}", task.id, task.status, TaskStatus::Killed);
info!(
"Setting task {} with previous status {:?} to new status {:?}",
task.id,
task.status,
TaskStatus::Killed
);
task.status = TaskStatus::Killed;
}
// Crash during editing of the task command