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

  1. Retry the task run; prefetch validation failure falls back to executing the action locally
  2. Delete the incomplete remote action entry if the error repeats, forcing a clean re-store
  3. 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

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


AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22). Data as JSON: /api/errors/d9cecf0396d149ba. Report an issue: GitHub.