windmill-labs/windmill · error

wheel RECORD verification failed after install of {req}

Error message

wheel RECORD verification failed after install of {req}

What it means

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.

Source

Thrown at backend/windmill-worker/src/python_executor.rs:3123

                    "uv pip install of {req} into {venv_p} failed wheel RECORD verification: {verify_err}"
                );
                append_logs(
                    &job_id,
                    &w_id,
                    format!(
                        "\nWheel RECORD verification failed after install of {req}: {verify_err}. \
                         Aborting to avoid publishing a corrupt cache entry."
                    ),
                    &conn,
                ).await;
                if let Err(rm_err) = tokio::fs::remove_dir_all(&venv_p).await {
                    tracing::warn!(
                        workspace_id = %w_id,
                        "could not remove broken install dir {venv_p}: {rm_err}"
                    );
                }
                pids.lock().await.get_mut(i).and_then(|e| e.take());
                return Err(Error::from(anyhow!(
                    "wheel RECORD verification failed after install of {req}"
                )));
            }

            print_success(
                false,
                s3_push,
                &job_id,
                &w_id,
                &req,
                req_tl,
                counter_arc,
                total_to_install,
                start,
                &conn, //
            )
            .await;

View on GitHub (pinned to e474e8803c)

Solutions

  1. Retry the job — the corrupt venv was deleted and the wheel will be reinstalled
  2. If it repeats, check the worker's disk or network for corruption/truncation during install
  3. Pin a different version of the offending package if its wheel is consistently bad
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at backend/windmill-worker/src/python_executor.rs:3123 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/dff8120225ab180f. Report an issue: GitHub.