windmill-labs/windmill · error
the configured maven repositories did not serve: {}. Coursie
Error message
the configured maven repositories did not serve: {}. Coursier reported success but no artifact for them was found in its cache. What it means
After Coursier fetches Java dependencies, Windmill walks the fetch directory and checks that every requested coordinate's artifact was actually retrieved. If Coursier exited successfully but some requested artifacts are absent from its cache (e.g. the repository 404'd or left an empty directory for the coordinate), the job fails listing the missing display names.
Source
Thrown at backend/windmill-worker/src/java_executor.rs:592
display_name: display_name.clone(),
found: false,
})
})
.collect::<anyhow::Result<Vec<_>>>()?;
// longest coordinate first: a group id ending in another one's coordinates (com.org.foo:bar
// over org.foo:bar) would otherwise be free to claim the shorter one's directory
wanted.sort_by_key(|w| std::cmp::Reverse(w.coordinate.len()));
find_and_copy(&PathBuf::from(fetch_dir), &mut vec![], &mut wanted).await?;
let missing = wanted
.iter()
.filter(|w| !w.found)
.map(|w| w.display_name.as_str())
.sorted()
.collect_vec();
if !missing.is_empty() {
bail!(
"the configured maven repositories did not serve: {}. \
Coursier reported success but no artifact for them was found in its cache.",
missing.join(", ")
);
}
Ok(())
}
async fn compile<'a>(
JobHandlerInput {
occupancy_metrics,
mem_peak,
canceled_by,
worker_name,
job,
conn,
job_dir,
client,View on GitHub (pinned to e474e8803c)
Solutions
- Read the missing artifact names in the message and verify the coordinate (group:artifact:version) actually exists on the configured repository — fix typos in the script's requirements
- Add a Maven repository that serves the artifact via workspace settings (or re-enable default repositories if `no_default_repositories` was set)
- Check the repository URL serves the expected layout (`<group path>/<artifact>/<version>/<artifact>-<version>.jar`); fix registry URL/mirror config
- Clear the Coursier fetch cache on the worker if a stale empty 404 directory shadows a now-existing artifact, then retry
Example fix
// before (workspace maven repo setting) https://maven.example.com/releases // after (repo that actually hosts the artifact) https://repo1.maven.org/maven2
Defensive patterns
Strategy: validation
Validate before calling
#!/bin/sh # before submitting, check the coordinate is served by the configured repo curl -fsSI "$REPO/com/example/artifact/1.0.0/artifact-1.0.0.jar" > /dev/null \ || echo "artifact not served by repository"
Try / catch
match job_result {
Err(e) if e.to_string().contains("did not serve") => {
let missing = extract_names(&e.to_string());
// surface per-artifact resolution failure, don't blind-retry
}
other => other?,
} Prevention
- Verify every Maven coordinate exists in the configured repository before deploying
- Use a coordinate/version known to exist in the repo layout Coursier expects
- Probe new private repositories with a simple fetch test first
- Treat empty directories left by 404s in the cache as missing artifacts
When it happens
Trigger: A Java job runs against configured Maven repositories where one or more coordinates are not actually served — a 404 at the registry URL path, a repository that leaves an empty directory, an artifact missing from the version requested, or a mirror silently swallowing the request.
Common situations: Typo'd group/artifact id or nonexistent version; a private Maven repo that doesn't host the artifact; `no_default_repositories` set with only a mirror missing the package; a repository whose URL path layout doesn't match what Coursier expects, so a 404 leaves an empty directory that looks like the coordinate.
Related errors
- {line} is not parsable
- Internal Error: {path} is not under {repository_dir}
- file path escapes the build directory: ${rel}
- Failed to generate lockfile: ${message}
- Unknown type `{s}`
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/8addafcf9125b95b.
Report an issue: GitHub.