diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-30 13:22:50 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-30 14:25:56 +0200 |
commit | dc19f3908644d2d49f0ca97ae60d1d6f825d5dc9 (patch) | |
tree | 14121b642070f62e8178c0cbed6204e6503621ad /crates/driver/src | |
parent | 0440d1a4b8953f9cb8a39d5c6f4f549157db41e8 (diff) | |
download | rebel-dc19f3908644d2d49f0ca97ae60d1d6f825d5dc9.tar rebel-dc19f3908644d2d49f0ca97ae60d1d6f825d5dc9.zip |
driver: skip submission of empty tasks
Diffstat (limited to 'crates/driver/src')
-rw-r--r-- | crates/driver/src/driver.rs | 22 | ||||
-rw-r--r-- | crates/driver/src/task.rs | 6 |
2 files changed, 21 insertions, 7 deletions
diff --git a/crates/driver/src/driver.rs b/crates/driver/src/driver.rs index 375c567..bafba1b 100644 --- a/crates/driver/src/driver.rs +++ b/crates/driver/src/driver.rs @@ -266,8 +266,12 @@ impl<'ctx> Driver<'ctx> { } } - fn spawn_task(&self, task_ref: &TaskRef<'ctx>, runner: &Runner) -> Result<UnixStream> { + fn spawn_task(&self, task_ref: &TaskRef<'ctx>, runner: &Runner) -> Result<Option<UnixStream>> { let task_def = &self.state.ctx[task_ref.id]; + if task_def.action.is_empty() { + return Ok(None); + } + let task_deps = self.state.task_deps(task_ref)?; let task_output = task_def .output @@ -302,15 +306,19 @@ impl<'ctx> Driver<'ctx> { outputs: task_output, }; - Ok(runner.spawn(&task)) + Ok(Some(runner.spawn(&task))) } fn run_task(&mut self, task_ref: TaskRef<'ctx>, runner: &Runner) -> Result<()> { - let socket = self.spawn_task(&task_ref, runner)?; - assert!(self - .tasks_running - .insert(socket.as_raw_fd(), (socket, task_ref)) - .is_none()); + if let Some(socket) = self.spawn_task(&task_ref, runner)? { + assert!(self + .tasks_running + .insert(socket.as_raw_fd(), (socket, task_ref)) + .is_none()); + } else { + println!("Skipping empty task {:#}", task_ref); + self.update_runnable(task_ref, TaskOutput::default()); + } Ok(()) } diff --git a/crates/driver/src/task.rs b/crates/driver/src/task.rs index fe9572c..6b9083b 100644 --- a/crates/driver/src/task.rs +++ b/crates/driver/src/task.rs @@ -63,6 +63,12 @@ pub struct Action { pub run: String, } +impl Action { + pub fn is_empty(&self) -> bool { + self.run.is_empty() + } +} + #[derive(Clone, Debug, Deserialize)] pub struct TaskDef { #[serde(skip)] |