1
Fork 0

janky deser

This commit is contained in:
Andy Killorin 2023-12-25 16:01:14 -06:00
parent 36cdf9387f
commit ca221497c5
Signed by: ank
GPG key ID: B6241CA3B552BCA4
3 changed files with 15 additions and 3 deletions

View file

@ -251,8 +251,17 @@ impl Quarry {
}
async fn next_chunk(&self) -> i32 {
loop { // this might be unsound, I don't really know
let chunk = self.head.load(Ordering::SeqCst);
let backstop = self.confirmed.load(Ordering::SeqCst);
if let Ok(_) = self.head.compare_exchange(chunk, chunk.max(backstop), Ordering::AcqRel, Ordering::SeqCst) {
break;
}
}
let chunk = self.head.fetch_add(1, Ordering::AcqRel);
self.in_flight.write().await.push(chunk);
let backstop = self.confirmed.load(Ordering::SeqCst);
self.in_flight.write().await.push(chunk.max(backstop));
chunk
}

View file

@ -58,7 +58,6 @@ impl Scheduler {
self.tasks.push(task);
}
#[instrument(skip(self))]
pub async fn poll(&mut self) {
for turtle in &mut self.turtles {
if let Some(join) = &turtle.1 {

View file

@ -10,6 +10,7 @@ use anyhow::Ok;
use anyhow;
use anyhow::Context;
use tracing::error;
use tracing::trace;
use tracing::warn;
use tracing::info;
@ -192,7 +193,10 @@ impl TurtleCommander {
pub async fn execute(&self, command: TurtleCommand) -> TurtleInfo {
let (send, recv) = oneshot::channel::<TurtleInfo>();
self.sender.to_owned().send((command,send)).await.unwrap();
if let Err(_) = self.sender.to_owned().send((command,send)).await {
error!("server disappeared"); // It's fine to continue, nobody
// is left to read garbage
};
let resp = recv.await.unwrap();
let mut pos = self.pos.write().await;