mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +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]]
|
||||
name = "aether-hub"
|
||||
version = "0.1.5"
|
||||
version = "0.1.6"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"clap",
|
||||
|
||||
@@ -77,16 +77,30 @@ pub async fn handle_worker_connection(ws: WebSocket, hub: Arc<HubRouter>, cfg: C
|
||||
.await;
|
||||
});
|
||||
|
||||
tokio::select! {
|
||||
_ = &mut reader => {}
|
||||
_ = &mut liveness => {}
|
||||
}
|
||||
let reader_finished = tokio::select! {
|
||||
res = &mut reader => {
|
||||
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();
|
||||
reader.abort();
|
||||
liveness.abort();
|
||||
let _ = reader.await;
|
||||
let _ = liveness.await;
|
||||
if !reader_finished {
|
||||
reader.abort();
|
||||
let _ = reader.await;
|
||||
}
|
||||
if reader_finished {
|
||||
liveness.abort();
|
||||
let _ = liveness.await;
|
||||
}
|
||||
|
||||
hub.unregister_worker(conn_id);
|
||||
tokio::time::sleep(Duration::from_millis(100)).await;
|
||||
|
||||
Reference in New Issue
Block a user