{"record":{"id":"dff8120225ab180f","repo":"windmill-labs/windmill","slug":"wheel-record-verification-failed-after-install-of","errorCode":null,"errorMessage":"wheel RECORD verification failed after install of {req}","messagePattern":"wheel RECORD verification failed after install of (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/windmill-worker/src/python_executor.rs","lineNumber":3123,"sourceCode":"                    \"uv pip install of {req} into {venv_p} failed wheel RECORD verification: {verify_err}\"\n                );\n                append_logs(\n                    &job_id,\n                    &w_id,\n                    format!(\n                        \"\\nWheel RECORD verification failed after install of {req}: {verify_err}. \\\n                         Aborting to avoid publishing a corrupt cache entry.\"\n                    ),\n                    &conn,\n                ).await;\n                if let Err(rm_err) = tokio::fs::remove_dir_all(&venv_p).await {\n                    tracing::warn!(\n                        workspace_id = %w_id,\n                        \"could not remove broken install dir {venv_p}: {rm_err}\"\n                    );\n                }\n                pids.lock().await.get_mut(i).and_then(|e| e.take());\n                return Err(Error::from(anyhow!(\n                    \"wheel RECORD verification failed after install of {req}\"\n                )));\n            }\n\n            print_success(\n                false,\n                s3_push,\n                &job_id,\n                &w_id,\n                &req,\n                req_tl,\n                counter_arc,\n                total_to_install,\n                start,\n                &conn, //\n            )\n            .await;\n","sourceCodeStart":3105,"sourceCodeEnd":3141,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/windmill-worker/src/python_executor.rs#L3105-L3141","documentation":"Raised by handle_python_reqs when, after `uv pip install` of a requirement into the cached venv, the installed files' hashes do not match the wheel's RECORD. Windmill verifies to avoid publishing a corrupt shared cache entry; on failure it logs to the job, removes the venv directory, and aborts so the next run reinstalls cleanly.","triggerScenarios":"Thrown at backend/windmill-worker/src/python_executor.rs:3123 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the job — the corrupt venv was deleted and the wheel will be reinstalled","If it repeats, check the worker's disk or network for corruption/truncation during install","Pin a different version of the offending package if its wheel is consistently bad"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}