{"record":{"id":"36d4bcfd2a7f268d","repo":"linera-io/linera-protocol","slug":"found-issues-while-querying-validators","errorCode":null,"errorMessage":"Found issues while querying validators","messagePattern":"Found issues while querying validators","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"linera-service/src/cli/validator.rs","lineNumber":392,"sourceCode":"                .await;\n\n            if !results.errors().is_empty() {\n                has_errors = true;\n                for error in results.errors() {\n                    tracing::error!(\"Validator {}: {}\", spec.public_key, error);\n                }\n            }\n\n            results.print(\n                Some(&spec.public_key),\n                Some(spec.network_address.as_str()),\n                None,\n                None,\n            );\n        }\n\n        if has_errors {\n            anyhow::bail!(\"Found issues while querying validators\");\n        }\n\n        Ok(())\n    }\n}\n\nimpl Update {\n    async fn run(\n        &self,\n        context: &mut ClientContext<impl linera_core::Environment>,\n    ) -> anyhow::Result<()> {\n        tracing::info!(\"Starting batch update operation\");\n        let time_start = std::time::Instant::now();\n\n        // Parse the batch file or stdin\n        let batch = parse_batch_file(self.file.clone())\n            .with_context(|| format!(\"parsing batch file `{}`\", self.file))?;\n","sourceCodeStart":374,"sourceCodeEnd":410,"githubUrl":"https://github.com/linera-io/linera-protocol/blob/6c226ddcb332ef55118dc8d0aafbd093d5420899/linera-service/src/cli/validator.rs#L374-L410","documentation":"The aggregate validator query path in `linera-service/src/cli/validator.rs` probes every configured validator, records per-validator errors, and prints a combined results table. After printing, it bails whenever at least one validator could not be queried successfully (`has_errors`), so the command's non-zero exit code reflects the unhealthy network rather than a silent partial result.","triggerScenarios":"Running the multi-validator query command (e.g. `linera validator list`) while one or more validators are unreachable, misconfigured, or return error responses; the individual query failures accumulate into `has_errors`.","commonSituations":"A validator process down after a crash or OOM; stale address/TLS config in the wallet; firewall or port issues; querying during a reconfiguration when part of the committee is rotating.","solutions":["Read the printed per-validator output above the bail — it identifies which endpoints failed and why","Restore the failing validator: check its process, port, and logs, then restart it","Re-run the command once every validator is reachable","Verify the wallet's committee/validator configuration is current (not pointing at retired validators)"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Probe each validator before running the aggregate query\nfor addr in $(linera wallet show | grep -oP '\\b[\\w.+-]+:\\d+\\b'); do\n  timeout 5 bash -c \"</dev/tcp/${addr%:*}/${addr##*:}\" \\\n    || echo \"validator $addr unreachable — fix before querying\"\ndone","typeGuard":null,"tryCatchPattern":"match run(&validators).await {\n    Err(e) if e.to_string().contains(\"Found issues while querying validators\") => {\n        // partial results were printed above; treat as degraded, not fatal\n        log::warn!(\"some validators failed to query: {e}\");\n    }\n    other => other?,\n}","preventionTips":["Keep validator processes supervised (systemd/CI job) so dead validators restart before queries run","Refresh the wallet's committee configuration after reconfigurations so it does not query retired validators","Treat the printed per-validator table as the diagnostic source — the bail only summarizes it"],"tags":["validators","network-health","linera-cli"],"backgroundTag":"health-check-failed","analyzedSha":"6c226ddcb332ef55118dc8d0aafbd093d5420899","analyzedAt":"2026-08-22T22:49:09.787Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}