summaryrefslogtreecommitdiffstats
path: root/crates/runner/src/task.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/runner/src/task.rs')
-rw-r--r--crates/runner/src/task.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/crates/runner/src/task.rs b/crates/runner/src/task.rs
index 8981d13..19a7484 100644
--- a/crates/runner/src/task.rs
+++ b/crates/runner/src/task.rs
@@ -575,8 +575,11 @@ pub fn handle(task: Task, jobserver: &mut Jobserver) -> Result<TaskOutput> {
let _lock = unix::lock(paths::task_lock_filename(&input_hash), true, true)
.context("Failed to get task lock")?;
- if let Ok(task_output) = load_cached(&input_hash) {
- return Ok(task_output);
+ let cached_output = load_cached(&input_hash);
+ if !task.force_run {
+ if let Ok(task_output) = cached_output {
+ return Ok(task_output);
+ }
}
let token = jobserver.wait();
@@ -602,5 +605,16 @@ pub fn handle(task: Task, jobserver: &mut Jobserver) -> Result<TaskOutput> {
duration.as_secs_f32()
);
+ if let Ok(cached_output) = cached_output {
+ if cached_output.outputs != task_output.outputs {
+ println!(
+ "WARNING: Output hashes for task {} do not match cached result\n Cached output: {}\n New output: {}",
+ task.label,
+ cjson::to_string(&cached_output.outputs).unwrap(),
+ cjson::to_string(&task_output.outputs).unwrap(),
+ );
+ }
+ }
+
Ok(task_output)
}