From d98aa3f745f9a624f4c668be1e979059f68dbbe2 Mon Sep 17 00:00:00 2001 From: Lumither Tao Date: Wed, 30 Oct 2024 23:07:22 -0700 Subject: [PATCH] fix(scheduler) remove unnecessary field --- backend/api_server/src/scheduler/mod.rs | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/backend/api_server/src/scheduler/mod.rs b/backend/api_server/src/scheduler/mod.rs index 018cd5c..21678f4 100644 --- a/backend/api_server/src/scheduler/mod.rs +++ b/backend/api_server/src/scheduler/mod.rs @@ -7,6 +7,7 @@ use crate::{ use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::RwLock; use std::{collections::HashMap, sync::Arc, thread}; +use tracing::log::error; use uuid::Uuid; pub mod scheduler_error; @@ -23,7 +24,6 @@ struct TaskStatus { pub struct Scheduler { tasks: Arc>>>>, running: Arc>>>, - stopped: Arc>>, } impl Scheduler { @@ -40,7 +40,6 @@ impl Scheduler { fn run_task( running: Arc>>>, - stopped: Arc>>, id: Uuid, task: Arc>, ) -> Result<(), SchedulerError> { @@ -69,7 +68,6 @@ impl Scheduler { let mut running_lock_guard = running.write()?; running_lock_guard.remove(&id); } - stopped.write()?.push(id); return Ok(()); } else { let sleeper = Arc::from(SkippableSleeper::from(next_execution)); @@ -89,7 +87,7 @@ impl Scheduler { } } } else { - stopped.write()?.push(id); + error!("unexpected error "); break; } } @@ -100,7 +98,7 @@ impl Scheduler { pub fn run(&self, id: &Uuid) -> Result<(), SchedulerError> { let id = id.to_owned(); if let Some(task) = self.tasks.read()?.get(&id) { - Self::run_task(self.running.clone(), self.stopped.clone(), id, task.clone()) + Self::run_task(self.running.clone(), id, task.clone()) } else { Err(IdNotFound) } @@ -110,9 +108,8 @@ impl Scheduler { let id = id.to_owned(); if let Some(task) = self.tasks.read()?.get(&id) { let running_clone = self.running.clone(); - let stopped_clone = self.stopped.clone(); let task_clone = task.clone(); - thread::spawn(move || Self::run_task(running_clone, stopped_clone, id, task_clone)); + thread::spawn(move || Self::run_task(running_clone, id, task_clone)); Ok(()) } else { Err(IdNotFound) @@ -174,11 +171,16 @@ mod tests { let scheduler = Scheduler::default(); let task = BasicTask::new(|| println!("test print"), "* * * * * *")?; let id = scheduler.insert(Box::new(task))?; - scheduler.run_non_blocking(&id)?; - thread::sleep(Duration::from_secs(4)); - scheduler.stop(&id)?; - // test termination - thread::sleep(Duration::from_secs(5)); + for i in 1..=2 { + println!("Loop {} start", i); + println!("Run {}", i); + scheduler.run_non_blocking(&id)?; + thread::sleep(Duration::from_secs(4)); + scheduler.stop(&id)?; + println!("Stop {}", i); + thread::sleep(Duration::from_secs(2)); + println!("Loop {} finished", i); + } Ok(()) } }