forked from DGNum/colmena
Minor tokio cleanup
This commit is contained in:
parent
9f4d5a2221
commit
afabd8c6f9
6 changed files with 23 additions and 69 deletions
56
Cargo.lock
generated
56
Cargo.lock
generated
|
@ -335,15 +335,6 @@ dependencies = [
|
||||||
"regex",
|
"regex",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "instant"
|
|
||||||
version = "0.1.9"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if 1.0.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "0.4.6"
|
version = "0.4.6"
|
||||||
|
@ -362,15 +353,6 @@ version = "0.2.81"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
|
checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lock_api"
|
|
||||||
version = "0.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
|
|
||||||
dependencies = [
|
|
||||||
"scopeguard",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.11"
|
version = "0.4.11"
|
||||||
|
@ -452,31 +434,6 @@ version = "1.5.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
|
checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "parking_lot"
|
|
||||||
version = "0.11.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
|
|
||||||
dependencies = [
|
|
||||||
"instant",
|
|
||||||
"lock_api",
|
|
||||||
"parking_lot_core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "parking_lot_core"
|
|
||||||
version = "0.8.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d7c6d9b8427445284a09c55be860a15855ab580a417ccad9da88f5a06787ced0"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if 1.0.0",
|
|
||||||
"instant",
|
|
||||||
"libc",
|
|
||||||
"redox_syscall",
|
|
||||||
"smallvec",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "percent-encoding"
|
name = "percent-encoding"
|
||||||
version = "2.1.0"
|
version = "2.1.0"
|
||||||
|
@ -670,12 +627,6 @@ version = "1.0.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
|
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "scopeguard"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.118"
|
version = "1.0.118"
|
||||||
|
@ -722,12 +673,6 @@ version = "0.4.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
|
checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "smallvec"
|
|
||||||
version = "1.5.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae524f056d7d770e174287294f562e95044c68e88dec909a00d2094805db9d75"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "snafu"
|
name = "snafu"
|
||||||
version = "0.6.10"
|
version = "0.6.10"
|
||||||
|
@ -867,7 +812,6 @@ dependencies = [
|
||||||
"mio",
|
"mio",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"parking_lot",
|
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
"tokio-macros",
|
"tokio-macros",
|
||||||
|
|
13
Cargo.toml
13
Cargo.toml
|
@ -25,5 +25,16 @@ serde_json = "1.0"
|
||||||
sys-info = "0.7.0"
|
sys-info = "0.7.0"
|
||||||
snafu = "0.6.10"
|
snafu = "0.6.10"
|
||||||
tempfile = "3.1.0"
|
tempfile = "3.1.0"
|
||||||
tokio = { version = "1.0.0", features = ["full"] }
|
|
||||||
validator = { version = "0.12", features = ["derive"] }
|
validator = { version = "0.12", features = ["derive"] }
|
||||||
|
|
||||||
|
[dependencies.tokio]
|
||||||
|
version = "1.0.0"
|
||||||
|
features = [
|
||||||
|
"fs",
|
||||||
|
"io-util",
|
||||||
|
"macros",
|
||||||
|
"process",
|
||||||
|
"rt",
|
||||||
|
"rt-multi-thread",
|
||||||
|
"sync",
|
||||||
|
]
|
||||||
|
|
|
@ -14,5 +14,5 @@ in rustPlatform.buildRustPackage {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
cargoSha256 = "0imalrw8im6zl5lq8k5j05msykax85lya39vq0fxagifdckcdfsb";
|
cargoSha256 = "1ibhn8bbcx0y9gjl42d9ba478j6a5dr928v0ds61vwn7lbm68dzr";
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,7 +139,7 @@ pub async fn run(_global_args: &ArgMatches<'_>, local_args: &ArgMatches<'_>) {
|
||||||
let command = command.clone();
|
let command = command.clone();
|
||||||
let progress = progress.clone();
|
let progress = progress.clone();
|
||||||
|
|
||||||
futures.push(tokio::spawn(async move {
|
futures.push(async move {
|
||||||
let permit = match parallel_sp.as_ref() {
|
let permit = match parallel_sp.as_ref() {
|
||||||
Some(sp) => Some(sp.acquire().await.unwrap()),
|
Some(sp) => Some(sp.acquire().await.unwrap()),
|
||||||
None => None,
|
None => None,
|
||||||
|
@ -166,7 +166,7 @@ pub async fn run(_global_args: &ArgMatches<'_>, local_args: &ArgMatches<'_>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
drop(permit);
|
drop(permit);
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
join_all(futures).await;
|
join_all(futures).await;
|
||||||
|
|
|
@ -27,7 +27,7 @@ macro_rules! bind_command {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::main(flavor = "multi_thread")]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
init_logging();
|
init_logging();
|
||||||
|
|
||||||
|
|
|
@ -274,8 +274,7 @@ impl Deployment {
|
||||||
|
|
||||||
let arc_self = self.clone();
|
let arc_self = self.clone();
|
||||||
let progress = progress.clone();
|
let progress = progress.clone();
|
||||||
// how come the bars show up only when initialized here???
|
futures.push(async move {
|
||||||
futures.push(tokio::spawn(async move {
|
|
||||||
let permit = arc_self.parallelism_limit.apply.acquire().await.unwrap();
|
let permit = arc_self.parallelism_limit.apply.acquire().await.unwrap();
|
||||||
let mut process = progress.create_process_progress(node.clone());
|
let mut process = progress.create_process_progress(node.clone());
|
||||||
|
|
||||||
|
@ -294,7 +293,7 @@ impl Deployment {
|
||||||
}
|
}
|
||||||
|
|
||||||
drop(permit);
|
drop(permit);
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
join_all(futures).await
|
join_all(futures).await
|
||||||
|
@ -334,7 +333,7 @@ impl Deployment {
|
||||||
// FIXME: Eww
|
// FIXME: Eww
|
||||||
let chunk: Vec<String> = chunk.iter().map(|s| s.to_string()).collect();
|
let chunk: Vec<String> = chunk.iter().map(|s| s.to_string()).collect();
|
||||||
|
|
||||||
futures.push(tokio::spawn(async move {
|
futures.push(async move {
|
||||||
let drv = {
|
let drv = {
|
||||||
// Evaluation phase
|
// Evaluation phase
|
||||||
let permit = arc_self.parallelism_limit.evaluation.acquire().await.unwrap();
|
let permit = arc_self.parallelism_limit.evaluation.acquire().await.unwrap();
|
||||||
|
@ -401,12 +400,12 @@ impl Deployment {
|
||||||
let profile = profiles.get(&node).cloned()
|
let profile = profiles.get(&node).cloned()
|
||||||
.expect(&format!("Somehow profile for {} was not built", node));
|
.expect(&format!("Somehow profile for {} was not built", node));
|
||||||
|
|
||||||
futures.push(tokio::spawn(async move {
|
futures.push(async move {
|
||||||
arc_self.apply_profile(&node, target, profile, progress).await
|
arc_self.apply_profile(&node, target, profile, progress).await
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
|
join_all(futures).await;
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
join_all(futures).await;
|
join_all(futures).await;
|
||||||
|
|
Loading…
Reference in a new issue