{"record":{"id":"33e14268bf51d983","repo":"BigPizzaV3/CodexPlusPlus","slug":"session-export-task-failed-error","errorCode":null,"errorMessage":"session export task failed: {error}","messagePattern":"session export task failed: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"apps/codex-plus-launcher/src/main.rs","lineNumber":774,"sourceCode":"    }\n\n    fn storage_adapter(&self) -> codex_plus_data::SQLiteStorageAdapter {\n        let allowed_db_paths = self.candidate_db_paths();\n        codex_plus_data::SQLiteStorageAdapter::new(\n            self.db_path.clone(),\n            codex_plus_data::BackupStore::new(self.backup_dir.clone()),\n        )\n        .with_allowed_db_paths(allowed_db_paths)\n        .with_codex_home(codex_plus_core::codex_sqlite::default_codex_home_dir())\n    }\n\n    async fn export_session_file(&self, session: SessionRef) -> anyhow::Result<Value> {\n        let home = codex_plus_core::codex_sqlite::default_codex_home_dir();\n        tokio::task::spawn_blocking(move || {\n            codex_plus_core::session_share::export_rollout(&home, &session.session_id)\n        })\n        .await\n        .map_err(|error| anyhow::anyhow!(\"session export task failed: {error}\"))?\n    }\n\n    async fn import_session_file(&self, payload: Value) -> anyhow::Result<Value> {\n        let home = codex_plus_core::codex_sqlite::default_codex_home_dir();\n        tokio::task::spawn_blocking(move || {\n            codex_plus_core::session_share::import_rollout(&home, &payload)\n        })\n        .await\n        .map_err(|error| anyhow::anyhow!(\"session import task failed: {error}\"))?\n    }\n}\n\nstruct LauncherRuntimeService {\n    debug_port: Mutex<u16>,\n    websocket_url: Mutex<Option<String>>,\n    user_scripts: UserScriptManager,\n}\n","sourceCodeStart":756,"sourceCodeEnd":792,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/apps/codex-plus-launcher/src/main.rs#L756-L792","documentation":"Wrapped failure thrown by LauncherDataService::export_session_file when the spawn_blocking task around session_share::export_rollout fails at the task level (JoinError), reported as \"session export task failed: {error}\". The rollout export never completed; domain errors from export_rollout itself are propagated separately after the await.","triggerScenarios":"Thrown at apps/codex-plus-launcher/src/main.rs:774 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["查看导出任务的 panic 日志","确认 session_id 对应的 rollout 文件存在","重试导出","修复 export_rollout 内对缺失文件/空数据的 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"}