{"record":{"id":"f886f7b31cda0f68","repo":"jdx/mise","slug":"unsupported-remote-cache-client-metadata-version","errorCode":null,"errorMessage":"unsupported remote cache client metadata version","messagePattern":"unsupported remote cache client metadata version","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/task/task_cache_store.rs","lineNumber":62,"sourceCode":"    fn from_manifest(manifest: &CacheManifest) -> Self {\n        Self {\n            execution_duration_ns: manifest.execution_duration_ns,\n            output: manifest.output.clone(),\n            restored_bytes: manifest.restored_bytes,\n            roots: manifest\n                .roots\n                .iter()\n                .map(|path| path.to_string_lossy().replace('\\\\', \"/\"))\n                .collect(),\n            task_identity: manifest.task_identity.clone(),\n            kind: \"task\".to_string(),\n            version: 1,\n        }\n    }\n\n    fn into_manifest(self, key: &str) -> Result<CacheManifest> {\n        if self.version != 1 {\n            bail!(\"unsupported remote cache client metadata version\");\n        }\n        if self.kind != \"task\" {\n            bail!(\"remote cache metadata kind is not a task\");\n        }\n        let roots = self.roots.into_iter().map(PathBuf::from).collect();\n        Ok(CacheManifest {\n            format: CACHE_FORMAT_VERSION,\n            key: key.to_string(),\n            task_identity: self.task_identity,\n            artifact_checksum: None,\n            roots,\n            output: self.output,\n            restored_bytes: self.restored_bytes,\n            execution_duration_ns: self.execution_duration_ns,\n        })\n    }\n}\n","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/task/task_cache_store.rs#L44-L80","documentation":"When reading a task cache entry from a remote (CAS-based) store, the stored client metadata blob declares a version field; into_manifest only understands version 1. A metadata blob written by a newer (or otherwise incompatible) client version cannot be interpreted, so mise bails instead of misreading it.","triggerScenarios":"Fetching a cache entry via TaskCacheStore::get whose remote client metadata JSON has version != 1 — e.g. the remote cache was populated by a newer mise version with an upgraded metadata schema.","commonSituations":"Mixed-version fleets/CI sharing one remote cache; cache entries persisted before a mise upgrade changed the schema; corrupted metadata blob edited by tooling.","solutions":["Upgrade mise so the client understands the metadata version used on the remote","Clear/re-populate the remote cache with entries written by the current version","Pin all machines sharing the remote cache to the same mise version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"match cache_get(key) {\n    Err(e) if e.to_string().contains(\"metadata version\") => {\n        // fall back to rebuilding locally or repopulating the cache\n        rebuild_locally();\n    }\n    r => r?,\n}","preventionTips":["Keep all machines sharing a remote cache on the same mise version","Drain or version-prefix the remote cache when upgrading schema versions","Read mise release notes for cache format changes"],"tags":["remote-cache","versioning","schema"],"backgroundTag":"schema-validation-failed","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}