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 {
|
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);
|
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
|
chunk
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,6 @@ impl Scheduler {
|
||||||
self.tasks.push(task);
|
self.tasks.push(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[instrument(skip(self))]
|
|
||||||
pub async fn poll(&mut self) {
|
pub async fn poll(&mut self) {
|
||||||
for turtle in &mut self.turtles {
|
for turtle in &mut self.turtles {
|
||||||
if let Some(join) = &turtle.1 {
|
if let Some(join) = &turtle.1 {
|
||||||
|
|
|
@ -10,6 +10,7 @@ use anyhow::Ok;
|
||||||
|
|
||||||
use anyhow;
|
use anyhow;
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
use tracing::error;
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
use tracing::warn;
|
use tracing::warn;
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
@ -192,7 +193,10 @@ impl TurtleCommander {
|
||||||
pub async fn execute(&self, command: TurtleCommand) -> TurtleInfo {
|
pub async fn execute(&self, command: TurtleCommand) -> TurtleInfo {
|
||||||
let (send, recv) = oneshot::channel::<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 resp = recv.await.unwrap();
|
||||||
let mut pos = self.pos.write().await;
|
let mut pos = self.pos.write().await;
|
||||||
|
|
Loading…
Reference in a new issue