diff --git a/server/src/main.rs b/server/src/main.rs index 16127a0..34dc7d5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -156,11 +156,7 @@ async fn read_from_disk(kill: watch::Sender<()>) -> anyhow::Result { depots, }; - let mut live = LiveState::from_save(saved, scheduler, kill); - - for turtle in live.turtles.iter() { - live.tasks.add_turtle(&TurtleCommander::new(turtle.read().await.name,&live).await.unwrap()) - } + let live = LiveState::from_save(saved, scheduler, kill); Ok(live) } diff --git a/server/src/tasks.rs b/server/src/tasks.rs index ad43663..ddfad21 100644 --- a/server/src/tasks.rs +++ b/server/src/tasks.rs @@ -46,6 +46,7 @@ impl Scheduler { if self.turtles.iter().any(|(t,_)| t.name() == name ) { return; } + info!("registered {}", name.to_owned().to_str()); self.turtles.push(( turtle.clone(), None diff --git a/server/src/turtle_api.rs b/server/src/turtle_api.rs index 48ec7df..389e7ab 100644 --- a/server/src/turtle_api.rs +++ b/server/src/turtle_api.rs @@ -222,6 +222,7 @@ pub(crate) async fn command( ) -> Json { trace!("reply from turtle {id}: {req:?}"); let state_guard = state.clone().read_owned().await; + let turtle_commander = state_guard.get_turtle(id).await; if id as usize > state_guard.turtles.len() { return Json(turtle::TurtleCommand::Update); @@ -237,6 +238,7 @@ pub(crate) async fn command( if Instant::elapsed(&state.clone().read().await.started).as_secs_f64() > STARTUP_ALLOWANCE { let schedule = &mut state.write().await.tasks; trace!("idle, polling"); + schedule.add_turtle(&turtle_commander.unwrap()); schedule.poll().await; } });