{"record":{"id":"bee161bc26f0d155","repo":"BigPizzaV3/CodexPlusPlus","slug":"provider-target-discovery-task-failed-error","errorCode":null,"errorMessage":"provider target discovery task failed: {error}","messagePattern":"provider target discovery task failed: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"apps/codex-plus-manager/src-tauri/src/commands.rs","lineNumber":2829,"sourceCode":"    let key = key.trim();\n    if key.is_empty() { None } else { Some(key) }\n}\n\nfn ensure_text_newline(value: &str) -> String {\n    if value.trim().is_empty() {\n        String::new()\n    } else {\n        format!(\"{}\\n\", value.trim_end())\n    }\n}\n\n#[tauri::command]\npub async fn load_provider_sync_targets() -> CommandResult<Value> {\n    let settings = SettingsStore::default().load().unwrap_or_default();\n    let result =\n        tauri::async_runtime::spawn_blocking(|| codex_plus_data::load_provider_sync_targets(None))\n            .await\n            .map_err(|error| anyhow::anyhow!(\"provider target discovery task failed: {error}\"));\n    match result {\n        Ok(mut targets) => {\n            let manual = settings\n                .provider_sync_manual_providers\n                .iter()\n                .chain(settings.provider_sync_saved_providers.iter())\n                .filter_map(|value| {\n                    let trimmed = value.trim();\n                    if trimmed.is_empty() {\n                        None\n                    } else {\n                        Some(trimmed.to_string())\n                    }\n                })\n                .collect::<Vec<_>>();\n            merge_manual_provider_sync_targets(&mut targets, &manual, &settings);\n            ok(\n                \"Provider 同步目标已加载。\",","sourceCodeStart":2811,"sourceCodeEnd":2847,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/apps/codex-plus-manager/src-tauri/src/commands.rs#L2811-L2847","documentation":"Wrapped failure thrown by the load_provider_sync_targets Tauri command when the spawn_blocking task around codex_plus_data::load_provider_sync_targets fails at the task level (JoinError), formatted as \"provider target discovery task failed: {error}\". Means the blocking wrapper died (panic/cancellation); a clean domain error from the discovery itself is returned by the inner call.","triggerScenarios":"Thrown at apps/codex-plus-manager/src-tauri/src/commands.rs:2829 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["查看任务 panic 日志定位崩溃点","确认 settings 与本地数据文件可读","重试加载","修复 load_provider_sync_targets 内的 unwrap 路径"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f2074595a281bc057525c748175c8eb9805b0673","analyzedAt":"2026-08-23T12:52:24.489Z","contentChangedAt":"2026-08-23T12:52:24.489Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}