janky deser
This commit is contained in:
parent
36cdf9387f
commit
ca221497c5
3 changed files with 15 additions and 3 deletions
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue