mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 09:20:22 +08:00
fix(hub): 修复 worker 连接清理逻辑,按完成顺序有序取消对端任务
This commit is contained in:
2
aether-hub/Cargo.lock
generated
2
aether-hub/Cargo.lock
generated
@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aether-hub"
|
name = "aether-hub"
|
||||||
version = "0.1.5"
|
version = "0.1.6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"clap",
|
"clap",
|
||||||
|
|||||||
@@ -77,16 +77,30 @@ pub async fn handle_worker_connection(ws: WebSocket, hub: Arc<HubRouter>, cfg: C
|
|||||||
.await;
|
.await;
|
||||||
});
|
});
|
||||||
|
|
||||||
tokio::select! {
|
let reader_finished = tokio::select! {
|
||||||
_ = &mut reader => {}
|
res = &mut reader => {
|
||||||
_ = &mut liveness => {}
|
if let Err(err) = res {
|
||||||
}
|
warn!(worker_id = conn_id, error = %err, "worker reader task failed");
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
res = &mut liveness => {
|
||||||
|
if let Err(err) = res {
|
||||||
|
warn!(worker_id = conn_id, error = %err, "worker liveness task failed");
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
conn.request_close();
|
conn.request_close();
|
||||||
reader.abort();
|
if !reader_finished {
|
||||||
liveness.abort();
|
reader.abort();
|
||||||
let _ = reader.await;
|
let _ = reader.await;
|
||||||
let _ = liveness.await;
|
}
|
||||||
|
if reader_finished {
|
||||||
|
liveness.abort();
|
||||||
|
let _ = liveness.await;
|
||||||
|
}
|
||||||
|
|
||||||
hub.unregister_worker(conn_id);
|
hub.unregister_worker(conn_id);
|
||||||
tokio::time::sleep(Duration::from_millis(100)).await;
|
tokio::time::sleep(Duration::from_millis(100)).await;
|
||||||
|
|||||||
Reference in New Issue
Block a user