jdx/mise · error · eyre::Report
remote action output file is missing
Error message
remote action output file is missing
What it means
While walking the prefetched output tree, every file digest listed in a CacheDirectory must exist in the verified blob map. A file whose blob was not downloaded and digest-verified makes the prefetch batch incomplete, so the action is rejected instead of restored with holes.
Source
Thrown at crates/mise-cache-core/src/agent.rs:1260
.result
.output_root
.iter()
.cloned()
.collect::<Vec<_>>();
let mut seen = BTreeMap::new();
while let Some(digest) = pending.pop() {
if seen.insert(digest.clone(), ()).is_some() {
continue;
}
if seen.len() > MAX_PREFETCH_DIRECTORY_OBJECTS {
bail!("remote action output tree is too large");
}
let directory = directories
.get(&digest)
.ok_or_else(|| eyre::eyre!("remote action output directory is missing"))?;
for file in &directory.files {
if !verified.contains_key(&file.digest) {
bail!("remote action output file is missing");
}
}
pending.extend(
directory
.directories
.iter()
.map(|directory| directory.digest.clone()),
);
}
Ok(())
}
#[cfg(test)]
async fn prefetch_output_tree(
&self,
remote: &RemoteCacheClient,
output_root: &CacheDigest,
) -> Result<()> {View on GitHub (pinned to 6f52dcdf99)
Solutions
- Retry the run — the action executes locally and the cache entry is rewritten
- If persistent, remove the incomplete remote action entry so it is re-created whole
- Check for concurrent eviction/GC running against the remote cache bucket
Defensive patterns
Strategy: fallback
Try / catch
match try_restore(&agent, &digest).await {
Ok(out) => out,
Err(e) if e.to_string().contains("remote action output file is missing") => {
evict_remote_blobs_for_action(&digest).await?;
execute_and_store(&action).await?
}
Err(e) => return Err(e),
} Prevention
- Publish a cache entry only after every file blob it references is uploaded
- Retry once on missing-file errors before evicting — single-object download drops are common
- Avoid running aggressive remote GC concurrently with heavy prefetch traffic
When it happens
Trigger: A directory object arrived but one of its file blobs failed to download or failed digest verification earlier in the batch; remote entry missing individual file objects.
Common situations: Partial network failures during large batch downloads; remote cache objects evicted mid-prefetch; interrupted uploads from the writer.
Related errors
- remote action descriptor is missing
- remote action metadata is missing
- remote rustc action diagnostic blob is missing
- task action manifest is not canonical JSON
- remote action output tree is too large
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/79a5c3d672647ad7.
Report an issue: GitHub.