Skip to content

Commit ef556a3

Browse files
committed
Fuse one-time cancellation tokens instead of using a separate flag
1 parent 0b911d4 commit ef556a3

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

compiler/base/orchestrator/src/coordinator.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use snafu::prelude::*;
44
use std::{
55
collections::{BTreeSet, HashMap},
66
fmt, mem, ops,
7+
pin::pin,
78
process::Stdio,
89
sync::{
910
atomic::{AtomicU64, Ordering},
@@ -1839,14 +1840,12 @@ impl Container {
18391840

18401841
let task = tokio::spawn({
18411842
async move {
1842-
let mut already_cancelled = false;
1843+
let mut cancelled = pin!(token.cancelled().fuse());
18431844
let mut stdin_open = true;
18441845

18451846
loop {
18461847
select! {
1847-
() = token.cancelled(), if !already_cancelled => {
1848-
already_cancelled = true;
1849-
1848+
() = &mut cancelled => {
18501849
let msg = CoordinatorMessage::Kill;
18511850
trace!(msg_name = msg.as_ref(), "processing");
18521851
to_worker_tx.send(msg).await.context(KillSnafu)?;

compiler/base/orchestrator/src/worker.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@
3131
//! - [`tokio::process::ChildStderr`][]
3232
//!
3333
34+
use futures::FutureExt as _;
3435
use snafu::prelude::*;
3536
use std::{
3637
collections::HashMap,
3738
io,
3839
path::{Path, PathBuf},
40+
pin::pin,
3941
process::{ExitStatus, Stdio},
4042
};
4143
use tokio::{
@@ -615,14 +617,13 @@ async fn process_end(
615617
) -> Result<ExecuteCommandResponse, ProcessError> {
616618
use process_error::*;
617619

618-
let mut killed = false;
620+
let mut cancelled = pin!(token.cancelled().fuse());
619621

620622
let status = loop {
621623
select! {
622624
// The user requested that the process be killed
623-
() = token.cancelled(), if !killed => {
625+
() = &mut cancelled => {
624626
child.kill().await.context(KillChildSnafu)?;
625-
killed = true;
626627
},
627628

628629
// The process exited normally

0 commit comments

Comments
 (0)