{"record":{"id":"a419ce3fb6e13742","repo":"jdx/mise","slug":"cache-agent-did-not-return-an-action-lookup-respon","errorCode":null,"errorMessage":"cache agent did not return an action lookup response","messagePattern":"cache agent did not return an action lookup response","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/cache/rustc.rs","lineNumber":275,"sourceCode":"            .transpose()?;\n        if &actual != expected {\n            bail!(\"compiler environment input changed: {name}\");\n        }\n    }\n    Ok(())\n}\n\nfn restore_result(\n    action: &RustcAction,\n    outputs: &RustcOutputs,\n    discovered: &DiscoveredInputs,\n    restore_outputs: bool,\n) -> Result<Option<CachedCompilation>> {\n    let responses = session::request_agent(&[AgentRequest::FindActionResult {\n        action: action.digest.clone(),\n    }])?;\n    let Some(response) = responses.into_iter().next() else {\n        bail!(\"cache agent did not return an action lookup response\");\n    };\n    let result = match response {\n        AgentResponse::ActionResult { result } => match result {\n            Some(result) => result,\n            None => return Ok(None),\n        },\n        AgentResponse::Error { message } => bail!(message),\n        _ => bail!(\"cache agent returned an unexpected action lookup response\"),\n    };\n    if result.version != 1 || result.action != action.digest {\n        bail!(\"cached rustc action result has an invalid identity\");\n    }\n    let metadata_digest = result\n        .metadata\n        .ok_or_else(|| eyre::eyre!(\"cached rustc action result has no metadata\"))?;\n    let output_root_digest = result\n        .output_root\n        .ok_or_else(|| eyre::eyre!(\"cached rustc action result has no output root\"))?;","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/cache/rustc.rs#L257-L293","documentation":"Looking up a cached compilation result starts with a FindActionResult request; the protocol guarantees one response per request, and an empty response vector makes the wrapper bail with 'did not return an action lookup response' (src/cache/rustc.rs:275). Same protocol-integrity family as the prediction lookups.","triggerScenarios":"The agent closes/restarts between the wrapper's request and reply, or a version-skewed agent drops requests, returning zero responses for the action digest query.","commonSituations":"Agent killed during a long build; mise upgraded while a build was in flight; socket env vars stale after daemon churn.","solutions":["Re-run the build in a fresh session so the agent restarts cleanly","Ensure one consistent mise version for agent and wrappers","Persistent recurrence: disable the rustc cache and report the protocol drop"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"# Same transient protocol handling: reset agent env and retry\ngrep -q 'did not return an action lookup response' build.log && {\n  unset MISE_CACHE_SOCKET MISE_CACHE_TASK MISE_CACHE_STAGING_DIR; cargo build;\n}","preventionTips":["Restart agents after upgrades or OOM kills","Pin one mise version in CI images","Report agents that persistently drop requests"],"tags":["mise","rustc-cache","cache-agent","protocol","ipc"],"backgroundTag":"cache-agent-protocol-error","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}