Skip to content

Commit

Permalink
cleanup: simplify precompile implementation with an iterator
Browse files Browse the repository at this point in the history
Signed-off-by: Kate Goldenring <[email protected]>
  • Loading branch information
kate-goldenring committed Mar 11, 2024
1 parent d8b2330 commit abf807f
Showing 1 changed file with 24 additions and 24 deletions.
48 changes: 24 additions & 24 deletions containerd-shim-spin/src/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -357,31 +357,31 @@ impl Engine for SpinEngine {

fn precompile(&self, layers: &[WasmLayer]) -> Result<Vec<Option<Vec<u8>>>> {
// Runwasi expects layers to be returned in the same order, so wrap each layer in an option, setting non Wasm layers to None
let mut wasm_content_layers: Vec<Option<WasmLayer>> =
layers.iter().map(SpinEngine::is_wasm_content).collect();
for layer in &mut wasm_content_layers {
if let Some(wasm_layer) = layer.as_mut() {
log::info!(
"Precompile called for wasm layer {:?}",
wasm_layer.config.digest()
);
if self
.wasmtime_engine
.detect_precompiled(&wasm_layer.layer)
.is_some()
{
log::info!("Layer already precompiled {:?}", wasm_layer.config.digest());
continue;
let precompiled_layers = layers
.iter()
.map(|layer| match SpinEngine::is_wasm_content(layer) {
Some(wasm_layer) => {
log::info!(
"Precompile called for wasm layer {:?}",
wasm_layer.config.digest()
);
if self
.wasmtime_engine
.detect_precompiled(&wasm_layer.layer)
.is_some()
{
log::info!("Layer already precompiled {:?}", wasm_layer.config.digest());
Ok(None)
} else {
let component =
spin_componentize::componentize_if_necessary(&wasm_layer.layer)?;
let precompiled = self.wasmtime_engine.precompile_component(&component)?;
Ok(Some(precompiled))
}
}
let component = spin_componentize::componentize_if_necessary(&wasm_layer.layer)?;
let precompiled = self.wasmtime_engine.precompile_component(&component)?;
wasm_layer.layer = precompiled;
}
}
let precompiled_layers: Vec<Option<Vec<u8>>> = wasm_content_layers
.into_iter()
.map(|l| l.map(|l| l.layer))
.collect();
None => Ok(None),
})
.collect::<anyhow::Result<_>>()?;
Ok(precompiled_layers)
}

Expand Down

0 comments on commit abf807f

Please sign in to comment.