{"record":{"id":"090bcb51408f794b","repo":"Zackriya-Solutions/meetily","slug":"cannot-start-processing","errorCode":null,"errorMessage":"Cannot start processing: {}","messagePattern":"Cannot start processing: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"frontend/src-tauri/src/whisper_engine/parallel_processor.rs","lineNumber":156,"sourceCode":"        info!(\"Calculated safe worker count: {} (system: {}, config: {})\",\n              safe_count, worker_count, self.config.max_workers);\n\n        Ok(safe_count)\n    }\n\n    /// Start parallel processing with resource-aware worker spawning\n    pub async fn start_processing(\n        &mut self,\n        chunks: Vec<AudioChunk>,\n        model_name: String,\n    ) -> Result<()> {\n        info!(\"Starting parallel processing of {} chunks with model {}\",\n              chunks.len(), model_name);\n\n        // Check system resources before starting\n        let resource_status = self.system_monitor.check_resource_constraints().await?;\n        if !resource_status.can_proceed {\n            return Err(anyhow!(\"Cannot start processing: {}\",\n                             resource_status.get_primary_constraint()\n                             .unwrap_or_else(|| \"Resource constraints violated\".to_string())));\n        }\n\n        // Calculate safe worker count\n        let safe_worker_count = self.calculate_safe_worker_count().await?;\n\n        // Initialize chunk queue\n        {\n            let mut queue = self.chunk_queue.write().await;\n            queue.pending = chunks;\n            queue.processing.clear();\n            queue.completed.clear();\n            queue.failed.clear();\n            queue.retry_queue.clear();\n        }\n\n        // Reset state","sourceCodeStart":138,"sourceCodeEnd":174,"githubUrl":"https://github.com/Zackriya-Solutions/meetily/blob/0281737d87d26352fb0adc78c8c0975f691b23d1/frontend/src-tauri/src/whisper_engine/parallel_processor.rs#L138-L174","documentation":"ParallelProcessor::start_processing polls SystemMonitor::check_resource_constraints before spawning workers. If the system is above the configured memory/CPU/load thresholds (can_proceed == false), it refuses to start and reports the primary constraint string (e.g. memory usage above limit) in the message.","triggerScenarios":"Starting parallel whisper transcription while available RAM is below the threshold or CPU/load is saturated - e.g. a local LLM is loaded and summarizing at the same time, or leftover workers from a previous run still hold resources.","commonSituations":"Low-RAM machines (about 8 GB) with large whisper models; transcription running concurrently with local LLM summarization; containers/CI with tight cgroup memory limits; heavy background load (builds, backups).","solutions":["Wait for the competing workload (summary, other transcription) to finish and retry start_processing","Lower ParallelConfig.max_workers or choose a smaller whisper model to reduce the resource floor","Close memory-heavy applications; read the constraint text in the error to see whether memory or CPU was the blocker","If it persists, compare SystemMonitor thresholds against actual usage in the logs and tune the limits"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Caller-side gate mirroring the internal check\nlet status = system_monitor.check_resource_constraints().await?;\nif !status.can_proceed {\n    return Err(anyhow!(\"resources busy: {:?}\", status.get_primary_constraint()));\n}","typeGuard":null,"tryCatchPattern":"match processor.start_processing(chunks, model).await {\n    Err(e) if e.to_string().contains(\"Cannot start processing\") => {\n        tokio::time::sleep(Duration::from_secs(30)).await; // let competing load drain\n        processor.start_processing(chunks, model).await\n    }\n    other => other,\n}","preventionTips":["Do not run whisper transcription and local LLM summarization simultaneously on low-RAM machines","Tune ParallelConfig.max_workers down on 8 GB-class hardware","Watch the constraint string in the error - it tells you whether memory or CPU is the blocker"],"tags":["resources","whisper","parallel-processing","system-monitor"],"backgroundTag":"insufficient-system-resources","analyzedSha":"0281737d87d26352fb0adc78c8c0975f691b23d1","analyzedAt":"2026-08-16T20:57:52.567Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}