{"record":{"id":"6889021d99874b7b","repo":"FuelLabs/fuel-core","slug":"backlog-unresolved-at-height-current-height-rep-688902","errorCode":null,"errorMessage":"Backlog unresolved at height {current_height}: repair error: {e}","messagePattern":"Backlog unresolved at height (.+?): repair error: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/fuel-core/src/service/adapters/consensus_module/poa.rs","lineNumber":903,"sourceCode":"                        Ok(false) => {\n                            tracing::warn!(\n                                \"Repair failed to reach quorum at height \\\n                                 {current_height} — will retry next round\"\n                            );\n                            if reconciled.is_empty() {\n                                return Err(anyhow!(\n                                    \"Backlog unresolved at height {current_height}: \\\n                                     repair failed to reach quorum\"\n                                ));\n                            }\n                            break;\n                        }\n                        Err(e) => {\n                            tracing::warn!(\n                                \"Repair error at height {current_height}: {e}\"\n                            );\n                            if reconciled.is_empty() {\n                                return Err(anyhow!(\n                                    \"Backlog unresolved at height {current_height}: \\\n                                     repair error: {e}\"\n                                ));\n                            }\n                            break;\n                        }\n                    }\n                }\n            } else {\n                if reconciled.is_empty() {\n                    return Err(anyhow!(\n                        \"Backlog unresolved at height {current_height}: \\\n                         no winning block candidate\"\n                    ));\n                }\n                break;\n            }\n","sourceCodeStart":885,"sourceCodeEnd":921,"githubUrl":"https://github.com/FuelLabs/fuel-core/blob/b9d4d170da3a31c9ace5f963d633b326348e0d42/crates/fuel-core/src/service/adapters/consensus_module/poa.rs#L885-L921","documentation":"Same repair path (crates/fuel-core/src/service/adapters/consensus_module/poa.rs:898-909): repair_sub_quorum_block itself returned Err({e}) — an I/O or Redis failure while re-proposing the block to the nodes — and since no earlier height had been reconciled in this round, the error is wrapped as 'Backlog unresolved … repair error' and aborts reconciliation.","triggerScenarios":"Connection failures or timeouts on enough nodes during the multi-node re-write that the repair call errors out entirely rather than completing with a false result.","commonSituations":"Redis outage starting mid-repair; transient network blip; node_timeout exceeded by the repair writes.","solutions":["Inspect the wrapped {e} and the preceding 'Repair error at height …' warning to identify the failing node(s)","Restore those nodes or the network path and let the next reconciliation round retry the repair","Raise node_timeout if the writes are merely slow rather than failing"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"match unreconciled_blocks(next_height).await {\n    Err(e) if e.to_string().contains(\"repair error\") => {\n        // the inner {e} names the failing node/op: address it, then the next\n        // reconciliation round retries the repair automatically\n    }\n    other => other,\n}","preventionTips":["Watch 'Repair error at height …' warnings — they precede this error with node detail","Keep node_timeout above worst-case multi-node write duration","Stabilize the Redis cluster (no restarts/failovers) while backlog repair is pending"],"tags":["fuel-core","redis","repair","timeout","reconciliation"],"backgroundTag":null,"analyzedSha":"b9d4d170da3a31c9ace5f963d633b326348e0d42","analyzedAt":"2026-08-16T08:56:42.692Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}