a-b-street/abstreet · error
Failed to download stuff
Error message
Failed to download stuff: {:?} What it means
download_updates collects per-file download/decompress failures into a `failed` list and continues past each one; after the loop, if anything failed, it panics with the whole list to fail the updater build/run. This fires when one or more data files could not be fetched from S3 (or the local mirror) or could not be gzip-decoded — a network or manifest-version mismatch problem, not a per-call abort.
Solutions
- Rerun the download once connectivity is restored — transient network failures are the usual cause
- Check the remote data URL/version is correct and the files exist on the server
- Inspect the failed list printed in the panic to see exactly which paths 404'd
- Download from a local mirror (dl_from_local) if the remote is unavailable
Defensive patterns
Strategy: retry
Validate before calling
// pre-check reachability
let resp = reqwest::get(&format!("{}/{}", base, path)).await?;
if !resp.status().is_success() { eprintln!("missing: {}", path); } Try / catch
match download_file(version, path, local).await {
Ok(bytes) => save(bytes),
Err(e) => { eprintln!("retrying {}: {:?}", path, e); retry_with_backoff(); }
} Prevention
- Retry transient network failures with backoff before failing the build
- Verify the remote version/URL exists before batch download
- Pin to a known-good data version in CI
When it happens
Trigger: One or more downloads during `updater download` fail (network error, 404 from the remote server, version not yet uploaded), leaving the `failed` list non-empty at the end of the loop.
Common situations: CI running against a dev/remote data URL while the server is down; renamed/deleted remote files; wrong version string; no network access in the build environment.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- This build of A/B Street stores player data in…
- Can't find the data/ directory
- CityName::new( , ) has a country code that isn't two letters
- Couldn't read_json( )
- Couldn't read_binary
AI-assisted analysis of a-b-street/abstreet@0964f29315 (2026-09-13).
Data as JSON: /api/errors/57dce4ab61215169.
Report an issue: GitHub.
Appendix: source
Thrown at updater/src/main.rs:153
if !failed.is_empty() {
// Fail the build.
panic!("Failed to download stuff: {:?}", failed);
}
remove_empty_directories("data/input");
remove_empty_directories("data/system");View on GitHub (pinned to 0964f29315)