{"record":{"id":"170008ee558efa59","repo":"spacedriveapp/spacedrive","slug":"proxy-generation-failed","errorCode":null,"errorMessage":"Proxy generation failed: {}","messagePattern":"Proxy generation failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/src/ops/media/proxy/processor.rs","lineNumber":140,"sourceCode":"\t\t\treturn Ok(ProcessorResult::failure(\n\t\t\t\t\"Entry has no content_id\".to_string(),\n\t\t\t));\n\t\t};\n\n\t\tdebug!(\"→ Generating scrubbing proxy for: {}\", entry.path.display());\n\n\t\t// Call shared generation function\n\t\tlet count = super::generate_proxy_for_file(\n\t\t\t&self.library,\n\t\t\t&content_uuid,\n\t\t\t&entry.path,\n\t\t\t&[self.variant.clone()],\n\t\t\tself.use_hardware_accel,\n\t\t\t&self.preset,\n\t\t\tfalse, // Don't regenerate in processor\n\t\t)\n\t\t.await\n\t\t.map_err(|e| anyhow::anyhow!(\"Proxy generation failed: {}\", e))?;\n\n\t\tif count > 0 {\n\t\t\tdebug!(\"✓ Generated scrubbing proxy for: {}\", entry.path.display());\n\t\t}\n\n\t\tOk(ProcessorResult::success(count, 0))\n\t}\n\n\tpub fn name(&self) -> &'static str {\n\t\t\"proxy\"\n\t}\n}\n","sourceCodeStart":122,"sourceCodeEnd":153,"githubUrl":"https://github.com/spacedriveapp/spacedrive/blob/6dfeccf2113039e35f2ce735f945e70dc3e4ea45/core/src/ops/media/proxy/processor.rs#L122-L153","documentation":"The proxy processor delegates to generate_proxy_for_file with the library, resolved content_uuid, entry path, variant, hardware-accel flag, preset, and regenerate=false; any failure inside generation (transcode/ffmpeg error, unsupported codec, missing binary, unwritable output path, insufficient disk) is wrapped here. The message is a shell around the real generation error, which is where to look.","triggerScenarios":"ffmpeg missing from PATH or a non-functional build; hardware acceleration requested on a machine without the required GPU/codec support; source file unreadable or in a format the preset cannot handle; output directory permissions; disk full.","commonSituations":"Headless servers without ffmpeg installed; driver/mesa updates breaking VAAPI/NVENC; corrupt media files failing mid-transcode; thumbnails/proxies filling the disk.","solutions":["Read the wrapped inner error to identify the failing stage (spawn, decode, encode, write)","Verify ffmpeg is installed and works standalone with the same preset/codec arguments","Retry with use_hardware_accel disabled if the error names a hwaccel device or codec","Check output directory writability and free disk space"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Pre-flight the transcoder before queueing proxy generation\nif which::which(\"ffmpeg\").is_err() {\n    // skip or fall back to software proxy generation\n}\nif !output_dir_is_writable(&library).await { /* alert before queueing */ }","typeGuard":null,"tryCatchPattern":"match generate_proxy_for_file(&self.library, &content_uuid, &entry.path, &[self.variant.clone()], self.use_hardware_accel, &self.preset, false).await {\n    Ok(count) => count,\n    Err(e) if e.to_string().contains(\"hwaccel\") || e.to_string().contains(\"vaapi\") || e.to_string().contains(\"nvenc\") => {\n        // retry once with hardware acceleration disabled\n        generate_proxy_for_file(&self.library, &content_uuid, &entry.path, &[self.variant.clone()], false, &self.preset, false).await?\n    }\n    Err(e) => return Err(anyhow::anyhow!(\"Proxy generation failed: {}\", e)),\n}","preventionTips":["Verify ffmpeg presence and codec support at daemon startup","Test hardware-accel availability before enabling it in presets","Monitor output-directory disk space; transcodes fail silently when full"],"tags":["proxy","media-processors","ffmpeg","transcoding","hardware-accel"],"backgroundTag":null,"analyzedSha":"6dfeccf2113039e35f2ce735f945e70dc3e4ea45","analyzedAt":"2026-08-16T11:26:17.074Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}