Zackriya-Solutions/meetily · error

{}: {}

Error message

{}: {}

What it means

A chunk from reqwest's bytes_stream returned Err. The engine classifies the error into one of four user-facing categories — connection timeout, connection failed, stream interrupted (body error), or generic download error — and formats 'category: underlying error'. The writer is flushed first, so the partially downloaded file survives for resume.

Source

Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:905

                                // Update model status to Missing so retry can work
                                {
                                    let mut models = self.available_models.write().await;
                                    if let Some(model) = models.get_mut(model_name) {
                                        model.status = ModelStatus::Missing;
                                    }
                                }

                                let error_msg = if e.is_timeout() {
                                    "Connection timeout - Check your internet"
                                } else if e.is_connect() {
                                    "Connection failed - Check your internet"
                                } else if e.is_body() {
                                    "Stream interrupted - Network unstable"
                                } else {
                                    "Download error"
                                };

                                return Err(anyhow!("{}: {}", error_msg, e));
                            }
                        }
                    }
                };

                if let Err(e) = writer.write_all(&chunk).await {
                    // Remove from active downloads on error
                    {
                        let mut active = self.active_downloads.write().await;
                        active.remove(model_name);
                    }

                    // Update model status to Missing so retry can work
                    {
                        let mut models = self.available_models.write().await;
                        if let Some(model) = models.get_mut(model_name) {
                            model.status = ModelStatus::Missing;
                        }

View on GitHub (pinned to 0281737d87)

Solutions

  1. Retry with resume — the partial file is kept and the next attempt sends a Range header from the flushed offset
  2. If the category is connect/timeout, verify general internet connectivity before retrying
  3. For repeated TLS/proxy errors, test the URL with curl and disable VPN/AV interception for that host
  4. Download one model at a time to avoid CDN connection resets
Defensive patterns

Strategy: retry

Try / catch

match result {
    Err(e) if e.to_string().starts_with("Connection timeout")
           || e.to_string().starts_with("Connection failed")
           || e.to_string().starts_with("Stream interrupted") => retry_with_resume(), // partial file is kept
    other => other,
}

Prevention

When it happens

Trigger: Connection reset by the peer mid-body; TLS error during streaming; DNS failure or connect error at request start; HTTP/2 GOAWAY; any reqwest error surfaced by stream.next() after send() succeeded.

Common situations: CDN resetting long-lived connections during multi-GB model fetches; laptop sleep/resume mid-download; flaky Wi-Fi; antivirus MITM breaking TLS mid-transfer.

Related errors


AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16). Data as JSON: /api/errors/0e1ac44b06053550. Report an issue: GitHub.