Zackriya-Solutions/meetily · error · anyhow::Error

Parakeet model {} has error: {}

Error message

Parakeet model {} has error: {}

What it means

Returned by load_model when the model's status is ModelStatus::Error(ref err); the embedded string is the message recorded when the model previously entered an error state. This is a sticky status carried in available_models, so the load is rejected until the state is cleared by a successful download, a delete, or a fresh discovery pass.

Source

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

                // Update current model and model name
                *self.current_model.write().await = Some(model);
                *self.current_model_name.write().await = Some(model_name.to_string());

                log::info!(
                    "Successfully loaded Parakeet model: {} ({})",
                    model_name,
                    if quantized { "Int8 quantized" } else { "FP32" }
                );
                Ok(())
            }
            ModelStatus::Missing => {
                Err(anyhow!("Parakeet model {} is not downloaded", model_name))
            }
            ModelStatus::Downloading { .. } => {
                Err(anyhow!("Parakeet model {} is currently downloading", model_name))
            }
            ModelStatus::Error(ref err) => {
                Err(anyhow!("Parakeet model {} has error: {}", model_name, err))
            }
            ModelStatus::Corrupted { .. } => {
                Err(anyhow!("Parakeet model {} is corrupted and cannot be loaded", model_name))
            }
        }
    }

    /// Unload the current model
    pub async fn unload_model(&self) -> bool {
        let mut model_guard = self.current_model.write().await;
        let unloaded = model_guard.take().is_some();
        if unloaded {
            log::info!("Parakeet model unloaded");
        }

        let mut model_name_guard = self.current_model_name.write().await;
        model_name_guard.take();

View on GitHub (pinned to 0281737d87)

Solutions

  1. Re-run parakeet_retry_download / download_model for the model - a fresh successful pass overwrites the Error status
  2. If retry keeps failing, call parakeet_delete_corrupted_model / delete_model (only works for Corrupted/Available, so first reset via a retry or app restart) or delete the model folder manually and download again
  3. Restart the app to force discover_models to recompute status from disk if the folder actually looks complete

Example fix

// before
engine.load_model(name).await?;

// after - clear an Error status by re-downloading before loading
let info = engine.discover_models().await?.into_iter().find(|m| m.name == name);
if matches!(info.map(|m| m.status), Some(ModelStatus::Error(_))) {
    engine.download_model(&name, None).await?;
}
engine.load_model(&name).await?;
Defensive patterns

Strategy: retry

Validate before calling

let infos = engine.discover_models().await?;
if let Some(m) = infos.iter().find(|m| m.name == name) {
    if let ModelStatus::Error(ref msg) = m.status {
        log::warn!("model {name} in Error state: {msg}; re-downloading");
        engine.download_model(&name, None).await?;
    }
}

Type guard

fn is_error_status(info: &ModelInfo) -> bool {
    matches!(info.status, ModelStatus::Error(_))
}

Try / catch

match engine.load_model(name).await {
    Err(e) if e.to_string().contains("has error") => {
        // clear the state with a fresh download, then retry once
        engine.download_model(name, None).await?;
        engine.load_model(name).await?;
    }
    other => other?,
}

Prevention

When it happens

Trigger: A prior download attempt for this model failed in a path that set ModelStatus::Error (for example the post-download verification or a hard failure during fetch), and load_model is called afterwards; the app was not restarted since, so the in-memory status map still holds Error.

Common situations: Flaky network killed a download mid-session; the download succeeded partially and a later validation marked the model errored; the user retried 'Load' instead of 'Download' after seeing a download error in the UI.

Related errors


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