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

  1. Rerun the download once connectivity is restored — transient network failures are the usual cause
  2. Check the remote data URL/version is correct and the files exist on the server
  3. Inspect the failed list printed in the panic to see exactly which paths 404'd
  4. 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

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


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)