Skip to content

Commit

Permalink
Check if wasm was built by container exit code and state instead of l…
Browse files Browse the repository at this point in the history
…ocal mountpoint (#570)

* Check if the serai wasm was built successfully by verifying the build container's status code and state, instead of checking the volume mountpoint locally

* Use a log statement for which wasm is used

* Minor typo fix

---------

Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
  • Loading branch information
rlking and kayabaNerve authored May 26, 2024
1 parent 1d2beb3 commit cd69f3b
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 14 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 6 additions & 12 deletions orchestration/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -382,23 +382,17 @@ fn start(network: Network, services: HashSet<String>) {
let serai_runtime_volume = format!("serai-{}-runtime-volume", network.label());
if name == "serai" {
// Check if it's built by checking if the volume has the expected runtime file
let wasm_build_container_name = format!("serai-{}-runtime", network.label());
let built = || {
if let Ok(path) = Command::new("docker")
.arg("volume")
if let Ok(state_and_status) = Command::new("docker")
.arg("inspect")
.arg("-f")
.arg("{{ .Mountpoint }}")
.arg(&serai_runtime_volume)
.arg("{{.State.Status}}:{{.State.ExitCode}}")
.arg(&wasm_build_container_name)
.output()
{
if let Ok(path) = String::from_utf8(path.stdout) {
if let Ok(iter) = std::fs::read_dir(PathBuf::from(path.trim())) {
for item in iter.flatten() {
if item.file_name() == "serai.wasm" {
return true;
}
}
}
if let Ok(state_and_status) = String::from_utf8(state_and_status.stdout) {
return state_and_status.trim() == "exited:0";
}
}
false
Expand Down
3 changes: 2 additions & 1 deletion substrate/node/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ workspace = true
name = "serai-node"

[dependencies]
rand_core = "0.6"
zeroize = "1"
hex = "0.4"
log = "0.4"

rand_core = "0.6"
schnorrkel = "0.11"

libp2p = "0.52"
Expand Down
5 changes: 4 additions & 1 deletion substrate/node/src/chain_spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ fn account_from_name(name: &'static str) -> PublicKey {

fn wasm_binary() -> Vec<u8> {
// TODO: Accept a config of runtime path
if let Ok(binary) = std::fs::read("/runtime/serai.wasm") {
const WASM_PATH: &str = "/runtime/serai.wasm";
if let Ok(binary) = std::fs::read(WASM_PATH) {
log::info!("using {WASM_PATH}");
return binary;
}
log::info!("using built-in wasm");
WASM_BINARY.ok_or("compiled in wasm not available").unwrap().to_vec()
}

Expand Down

0 comments on commit cd69f3b

Please sign in to comment.