diff --git a/jobs-sled/Cargo.toml b/jobs-sled/Cargo.toml index c503678..4d39fe7 100644 --- a/jobs-sled/Cargo.toml +++ b/jobs-sled/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "background-jobs-sled-storage" description = "Sled storage backend for background-jobs" -version = "0.1.1" +version = "0.1.2" license = "GPL-3.0" authors = ["asonix "] repository = "https://git.asonix.dog/Aardwolf/background-jobs" @@ -12,6 +12,7 @@ edition = "2018" [dependencies] background-jobs-core = { version = "0.5", path = "../jobs-core" } +chrono = "0.4" failure = "0.1" sled = "0.24" serde = "1.0" diff --git a/jobs-sled/src/lib.rs b/jobs-sled/src/lib.rs index 8344ff3..187e21c 100644 --- a/jobs-sled/src/lib.rs +++ b/jobs-sled/src/lib.rs @@ -1,4 +1,5 @@ use background_jobs_core::{JobInfo, Storage, Stats}; +use chrono::offset::Utc; mod error; mod sled_wrappers; @@ -41,12 +42,15 @@ impl Storage for SledStorage { let job_tree = self.jobinfo.clone(); self.lock_queue(queue, move || { + let now = Utc::now(); + let job = queue_tree .iter() .filter_map(|res| res.ok()) .filter_map(|(id, in_queue)| if queue == in_queue { Some(id) } else { None }) .filter_map(|id| job_tree.get(id).ok()) .filter_map(|opt| opt) + .filter(|job| job.is_ready(now)) .next(); if let Some(ref job) = job {