jdx/mise · error · eyre::Report
remote action metadata is missing
Error message
remote action metadata is missing
What it means
For non-rustc adapters that carry action.result.metadata, validate_prefetched_action requires that metadata digest to exist in the verified blob map. The metadata blob is part of the action's cached result; a prefetch batch missing it is incomplete and rejected.
Source
Thrown at crates/mise-cache-core/src/agent.rs:1238
verified: &BTreeMap<CacheDigest, PathBuf>,
rustc_metadata: &BTreeMap<CacheDigest, RustcMetadata>,
directories: &BTreeMap<CacheDigest, CacheDirectory>,
) -> Result<()> {
if !verified.contains_key(&action.result.action) {
bail!("remote action descriptor is missing");
}
if let Some(metadata) = &action.result.metadata {
if action.adapter == "rustc" {
let metadata = rustc_metadata
.get(metadata)
.ok_or_else(|| eyre::eyre!("remote rustc action metadata is missing"))?;
for digest in [&metadata.stdout, &metadata.stderr] {
if !verified.contains_key(digest) {
bail!("remote rustc action diagnostic blob is missing");
}
}
} else if !verified.contains_key(metadata) {
bail!("remote action metadata is missing");
}
}
let mut pending = action
.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)View on GitHub (pinned to 6f52dcdf99)
Solutions
- Retry the task run; prefetch validation failure falls back to executing the action locally
- Delete the incomplete remote action entry if the error repeats, forcing a clean re-store
- Inspect logs for the specific metadata blob digest whose download failed
Defensive patterns
Strategy: fallback
Try / catch
match try_restore(&agent, &digest).await {
Ok(out) => out,
Err(e) if e.to_string().contains("remote action metadata is missing") => {
evict_remote_blobs_for_action(&digest).await?;
execute_and_store(&action).await?
}
Err(e) => return Err(e),
} Prevention
- Upload every referenced blob before publishing the manifest that points to it
- Keep restore logic resilient: any missing-blob error should degrade to local execution
- Correlate per-blob download failures in logs with later validation errors
When it happens
Trigger: Prefetch downloaded the action descriptor and outputs but the metadata blob's fetch failed or was never scheduled; remote entry partially evicted.
Common situations: Network drops mid-batch; concurrent eviction; writers that reference metadata blobs they never upload.
Related errors
- remote action descriptor is missing
- remote action output file 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/d9cecf0396d149ba.
Report an issue: GitHub.