Zackriya-Solutions/meetily · error
Retry failed for {} with status: {}
Error message
Retry failed for {} with status: {} What it means
Returned by download_model_detailed when the no-Range retry request completed but returned a non-success HTTP status. Unlike the initial path, the retry branch only checks is_success(), so any 4xx/5xx (403 forbidden, 404 gone, 429 rate limited, 5xx outage) lands here with the reqwest StatusCode printed.
Source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:796
"File {} incomplete ({}/{} bytes). Deleting and retrying.",
filename, existing_size, expected_size
);
if let Err(e) = fs::remove_file(&file_path).await {
let mut active = self.active_downloads.write().await;
active.remove(model_name);
return Err(anyhow!("Failed to delete incomplete file {}: {}", filename, e));
}
// Retry without Range header
log::info!("Retrying {} without resume", filename);
response = client.get(&file_url).send().await
.map_err(|e| anyhow!("Retry failed for {}: {}", filename, e))?;
if !response.status().is_success() {
let mut active = self.active_downloads.write().await;
active.remove(model_name);
return Err(anyhow!("Retry failed for {} with status: {}", filename, response.status()));
}
(response.content_length().unwrap_or(0), false)
}
} else {
// Other errors
let mut active = self.active_downloads.write().await;
active.remove(model_name);
return Err(anyhow!("Download failed for {} with status: {}", filename, response.status()));
};
// Open file for writing (append if resuming, create new if not)
let file = if resuming {
fs::OpenOptions::new()
.append(true)
.open(&file_path)
.await
.map_err(|e| anyhow!("Failed to open file for resume {}: {}", filename, e))?View on GitHub (pinned to 0281737d87)
Solutions
- On 429: wait several minutes before retrying the download (the partial file is kept and will resume)
- On 404/410: the upstream URL moved - update the app (base URLs are baked into parakeet_engine.rs) or fall back to the other model version whose host still serves it
- On 5xx: retry later; the mirror/CDN is having an incident
- Verify the exact file URL with curl -I to distinguish client-side blocks (403) from missing files (404)
Defensive patterns
Strategy: retry
Validate before calling
// Distinguish rate limits/outages from moved files before hammering the server // v3 files: https://meetily.towardsgeneralintelligence.com/models/parakeet-tdt-0.6b-v3-onnx/<file> // v2 files: https://huggingface.co/istupakov/parakeet-tdt-0.6b-v2-onnx/resolve/main/<file> // A quick manual `curl -I <url>` tells you 429/5xx (retry later) from 404 (URL gone).
Try / catch
match engine.download_model(name, None).await {
Err(e) if e.to_string().contains("Retry failed for") && e.to_string().contains("status") => {
let msg = e.to_string();
if msg.contains("429") || msg.contains("50") {
// rate limit / origin outage: back off minutes, not seconds; resume keeps bytes
} else if msg.contains("404") || msg.contains("403") {
// upstream file gone/blocked: switch model version or update the app - do not retry
}
return Err(e);
}
other => other?,
} Prevention
- Back off for minutes after 429 responses - immediate re-downloads deepen rate limits
- On persistent 404/403, switch to the other catalog model (v2/v3 use different hosts)
- Keep the app updated - download base URLs are fixed in code and change when repos move
When it happens
Trigger: HuggingFace rate-limiting (429) after repeated large-file GETs on the retry; the file was removed upstream (404 on huggingface.co/istupakov/parakeet-tdt-0.6b-v2-onnx or the meetily mirror); origin returning 403 to the second request due to expired signed URL/auth; 502/503 from the CDN on failover.
Common situations: Repeated resume attempts hammering HuggingFace and hitting the rate limit; upstream repo reorganized so the hardcoded URL 404s; CDN incident at download time.
Related errors
- Download failed for {} with status: {}
- Parakeet model {} is not downloaded
- Parakeet model {} is currently downloading
- Parakeet model {} has error: {}
- Parakeet model {} is corrupted and cannot be loaded
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/137eb50cede35266.
Report an issue: GitHub.