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

Model {} is currently downloading

Error message

Model {} is currently downloading

What it means

Thrown by WhisperModelManager::load_model when the requested model's ModelStatus is Downloading. A download task is still streaming the ggml file to disk, so load is refused to prevent whisper.cpp from memory-mapping a partial file. The error clears once the download finishes and status becomes Available.

Source

Thrown at frontend/src-tauri/src/whisper_engine/whisper_engine.rs:334

                };

                // Update current context and model
                *self.current_context.write().await = Some(ctx);
                *self.current_model.write().await = Some(model_name.to_string());

                // Enhanced acceleration status reporting
                let acceleration_status = acceleration.status_label();

                log::info!("Successfully loaded model: {} with {} (Performance Tier: {:?}, Beam Size: {}, Threads: {:?})",
                          model_name, acceleration_status, hardware_profile.performance_tier,
                          adaptive_config.beam_size, adaptive_config.max_threads);
                Ok(())
            },
            ModelStatus::Missing => {
                Err(anyhow!("Model {} is not downloaded", model_name))
            },
            ModelStatus::Downloading { .. } => {
                Err(anyhow!("Model {} is currently downloading", model_name))
            },
            ModelStatus::Error(ref err) => {
                Err(anyhow!("Model {} has error: {}", model_name, err))
            },
            ModelStatus::Corrupted { .. } => {
                Err(anyhow!("Model {} is corrupted and cannot be loaded", model_name))
            }
        }
    }

    pub async fn unload_model(&self) -> bool  {
        let mut ctx_guard = self.current_context.write().await;
        let unloaded = ctx_guard.take().is_some();
        if unloaded {
            log::info!("📉Whisper model unloaded");
        }

        let mut model_name_guard = self.current_model.write().await;

View on GitHub (pinned to 0281737d87)

Solutions

  1. Wait for the download progress event to report 100 and the status to become Available, then retry load_model
  2. If the status is stuck at Downloading after a crash/restart, call get_models (which rescans the registry/disk) or delete_model then download_model again
  3. Disable the Load button in the UI while the model status is Downloading

Example fix

// before (frontend)
await invoke('load_whisper_model', { modelName }); // fails with 'currently downloading'

// after
const models = await invoke<ModelInfo[]>('get_whisper_models');
const m = models.find(m => m.name === modelName);
if (m?.status === 'Downloading') {
  showToast('Model still downloading — wait for 100%');
} else {
  await invoke('load_whisper_model', { modelName });
}
Defensive patterns

Strategy: validation

Validate before calling

// Before load_model: check status via the model list command
const models = await invoke<Array<{ name: string; status: string }>>('get_whisper_models');
const m = models.find(x => x.name === modelName);
if (!m || m.status !== 'Available') {
  throw new Error(`Model not loadable yet (status: ${m?.status ?? 'unknown'})`);
}
await invoke('load_whisper_model', { modelName });

Type guard

const isLoadable = (m: { status: string } | undefined): m is { status: 'Available' } =>
  m?.status === 'Available';

Try / catch

try {
  await invoke('load_whisper_model', { modelName });
} catch (e) {
  if (String(e).includes('currently downloading')) {
    // subscribe to download progress; retry on 100%
  } else { throw e; }
}

Prevention

When it happens

Trigger: Calling load_model (Tauri command load_whisper_model) for a model whose download_model call is still in progress; clicking Load in the UI while the progress callback reports < 100; retrying load immediately after starting a download.

Common situations: UI lets the user press Load while a download badge shows partial progress; app crashed or was killed mid-download leaving a stale Downloading status in the registry; automated test starts transcription before the model fetch completes.

Related errors


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