{"record":{"id":"4164180bb4801577","repo":"clash-verge-rev/clash-verge-rev","slug":"error-configuration-rollback-failed-rollbac","errorCode":null,"errorMessage":"{error:#}; configuration rollback failed: {rollback_error:#}","messagePattern":"(.+?); configuration rollback failed: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/src/config/port.rs","lineNumber":141,"sourceCode":"            candidate_verge\n                .save_file()\n                .await\n                .context(\"failed to persist selected mixed proxy port\")?;\n            Self::generate_file(ConfigType::Run)\n                .await\n                .context(\"failed to persist Runtime Configuration\")?;\n            Ok::<(), anyhow::Error>(())\n        }\n        .await;\n\n        // Files are not part of the transaction, so a failed write is restored explicitly.\n        // The drafts are rolled back first: restoring reads the committed configuration, and\n        // must not see a candidate that is being abandoned.\n        if let Err(error) = persist_result {\n            transaction.rollback();\n            return match restore_files(&snapshots).await {\n                Ok(()) => Err(error),\n                Err(rollback_error) => Err(anyhow!(\"{error:#}; configuration rollback failed: {rollback_error:#}\")),\n            };\n        }\n\n        transaction.commit();\n        record_fallback(old_port, new_port);\n        Handle::refresh_clash();\n        Handle::refresh_verge();\n        logging!(\n            warn,\n            Type::Config,\n            \"Mixed proxy port {} is externally occupied; switched to {} and persisted all configuration layers\",\n            old_port,\n            new_port\n        );\n        Ok(())\n    }\n\n    pub(crate) fn block_startup_core(error: &anyhow::Error) {","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/clash-verge-rev/clash-verge-rev/blob/5cad0f2799e74b1105e133bcfc2a45f5c1370ef1/src-tauri/src/config/port.rs#L123-L159","documentation":"Error \"{error:#}; configuration rollback failed: {rollback_error:#}\" thrown in clash-verge-rev/clash-verge-rev.","triggerScenarios":"Thrown at src-tauri/src/config/port.rs:141 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"5cad0f2799e74b1105e133bcfc2a45f5c1370ef1","analyzedAt":"2026-08-12T03:25:57.699Z","schemaVersion":2},"datasetVersion":"2026-08-12T08:17:17.861Z"}