Zackriya-Solutions/meetily · error

{}: {}

Error message

{}: {}

What it means

Thrown from the chunk loop of ModelManager::download_model when the reqwest byte stream itself yields an error mid-transfer. The manager classifies the reqwest error into a user-facing prefix ('Connection timeout - Check your internet', 'Connection failed - Check your internet', 'Stream interrupted - Network unstable', or generic 'Download error'), sets the model status to ModelStatus::Error so the UI shows a retry button, and returns the prefix concatenated with the underlying error.

Source

Thrown at frontend/src-tauri/src/summary/summary_engine/model_manager.rs:644

                            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"
                            };

                            // Set model status to Error (NOT NotDownloaded) so UI can show retry button
                            {
                                let mut models = self.available_models.write().await;
                                if let Some(model_info) = models.get_mut(model_name) {
                                    model_info.status = ModelStatus::Error(error_msg.to_string());
                                }
                            }

                            return Err(anyhow!("{}: {}", error_msg, e));
                        }
                    }
                }
            };
            let chunk_len = chunk.len() as u64;
            writer
                .write_all(&chunk)
                .await
                .map_err(|e| anyhow!("Error writing to file: {}", e))?;

            downloaded += chunk_len;
            bytes_since_last_report += chunk_len;

            // Calculate progress
            let progress_percent = if total_size > 0 {
                let exact_percent = (downloaded as f64 / total_size as f64) * 100.0;
                exact_percent.min(100.0) as u8
            } else {

View on GitHub (pinned to 0281737d87)

Solutions

  1. Check connectivity and retry from the UI - status is ModelStatus::Error, so the retry button is shown and the partial file is kept for resume
  2. If behind a proxy/VPN/TLS-intercepting firewall, exclude the model host or bypass it for the download
  3. Verify the model URL is reachable: curl -sIL <model url> should return 200 and a large content-length
  4. If it keeps failing at the same offset, delete the partial file and restart the download from scratch
Defensive patterns

Strategy: retry

Validate before calling

// Rust caller: pre-flight the model URL before download_model
let resp = client.head(&model_def.url).send().await?;
if !resp.status().is_success() {
    // fix network/URL before starting a multi-GB download
    return Err(anyhow!("model host returned {}", resp.status()));
}

Try / catch

// TypeScript (Tauri invoke)
try {
  await invoke('download_summary_model', { modelName });
} catch (e) {
  const msg = String(e);
  if (msg.startsWith('CANCELLED:')) return;            // user cancel, not a failure
  if (/Connection|Stream interrupted|Download error/.test(msg)) {
    scheduleRetryWithBackoff(modelName);               // partial file resumes
  } else throw e;
}

Prevention

When it happens

Trigger: Calling download_model for a summary (GGUF) model and the HTTP connection to the model host fails mid-body: reqwest error where is_timeout() (connect/read timeout), is_connect() (DNS/TCP/TLS failure), or is_body() (connection reset during transfer) is true. The separate 30-second per-chunk stall timeout has its own message, so this fires only on an actual stream error, not mere slowness.

Common situations: Unstable Wi-Fi or VPN dropping during a multi-GB model download, corporate proxies/firewalls resetting long-lived connections to the model host (e.g. huggingface.co), DNS failure at connect time, laptop sleep/resume interrupting an in-flight download.

Related errors


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