{"record":{"id":"1a82991c29fe0049","repo":"prometheus/node_exporter","slug":"couldn-t-get-ue-noinfo-count-for-controller-s-w","errorCode":null,"errorMessage":"couldn't get ue_noinfo_count for controller %s: %w","messagePattern":"couldn't get ue_noinfo_count for controller (.+?): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"collector/edac_linux.go","lineNumber":135,"sourceCode":"\t\t\tedacCeCount, prometheus.CounterValue, float64(value), controllerNumber)\n\n\t\tvalue, err = readUintFromFile(filepath.Join(controller, \"ce_noinfo_count\"))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"couldn't get ce_noinfo_count for controller %s: %w\", controllerNumber, err)\n\t\t}\n\t\tch <- prometheus.MustNewConstMetric(\n\t\t\tedacCsRowCECount, prometheus.CounterValue, float64(value), controllerNumber, \"unknown\")\n\n\t\tvalue, err = readUintFromFile(filepath.Join(controller, \"ue_count\"))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"couldn't get ue_count for controller %s: %w\", controllerNumber, err)\n\t\t}\n\t\tch <- prometheus.MustNewConstMetric(\n\t\t\tedacUeCount, prometheus.CounterValue, float64(value), controllerNumber)\n\n\t\tvalue, err = readUintFromFile(filepath.Join(controller, \"ue_noinfo_count\"))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"couldn't get ue_noinfo_count for controller %s: %w\", controllerNumber, err)\n\t\t}\n\t\tch <- prometheus.MustNewConstMetric(\n\t\t\tedacCsRowUECount, prometheus.CounterValue, float64(value), controllerNumber, \"unknown\")\n\n\t\t// For each controller, walk the csrow directories.\n\t\tcsrows, err := filepath.Glob(controller + \"/csrow[0-9]*\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, csrow := range csrows {\n\t\t\tcsrowMatch := edacMemCsrowRE.FindStringSubmatch(csrow)\n\t\t\tif csrowMatch == nil {\n\t\t\t\treturn fmt.Errorf(\"csrow string didn't match regexp: %s\", csrow)\n\t\t\t}\n\t\t\tcsrowNumber := csrowMatch[1]\n\n\t\t\tvalue, err = readUintFromFile(filepath.Join(csrow, \"ce_count\"))\n\t\t\tif err != nil {","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/prometheus/node_exporter/blob/17ddd77c59ba27e1508e9f7894b1e55b44d6aed3/collector/edac_linux.go#L117-L153","documentation":"Final read in the per-controller loop: ue_noinfo_count. A failure from readUintFromFile aborts Update with this wrapped error, meaning the uncorrectable-errors-without-info counter could not be read for the given EDAC memory controller.","triggerScenarios":"readUintFromFile(<controller>/ue_noinfo_count) returns an error: missing attribute, permission denied, or non-numeric content, for any controller matched by the mc[0-9]* glob.","commonSituations":"EDAC drivers omitting ue_noinfo_count; unprivileged node_exporter in restricted environments; transient sysfs errors while EDAC modules reload.","solutions":["Verify the attribute exists and is readable: cat /sys/devices/system/edac/memctlr/mcN/ue_noinfo_count","Run node_exporter as root or grant read access to EDAC attributes","Inspect the wrapped cause (%w) for ENOENT/EACCES/parse errors","If the driver never exposes this counter, disable the edac collector for that host or adapt the collector"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if _, err := os.ReadFile(\"/sys/devices/system/edac/memctlr/mc0/ue_noinfo_count\"); err != nil {\n    // final EDAC counter unreadable; expect Update to fail\n}","typeGuard":null,"tryCatchPattern":"if err := c.Update(ch); err != nil {\n    if strings.Contains(err.Error(), \"couldn't get ue_noinfo_count\") {\n        // missing/unreadable attribute; fix access or disable edac collector\n    }\n}","preventionTips":["Confirm all four EDAC counters are readable by the exporter user before enabling the collector","Re-run host validation after kernel or EDAC driver upgrades","Wrap collector construction/scrape in health checks that surface wrapped EDAC read errors early"],"tags":["linux","edac","sysfs","file-read"],"backgroundTag":"file-read-failed","analyzedSha":"17ddd77c59ba27e1508e9f7894b1e55b44d6aed3","analyzedAt":"2026-09-07T17:54:06.211Z","contentChangedAt":"2026-09-07T17:54:06.211Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}