{"record":{"id":"9e1a4ec9fc0025d2","repo":"hashicorp/nomad","slug":"failed-to-find-s-v","errorCode":null,"errorMessage":"failed to find %s: %v","messagePattern":"failed to find (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"client/fingerprint/bridge_linux.go","lineNumber":102,"sourceCode":"\t\terrs = multierror.Append(errs, err)\n\t} else {\n\t\treturn nil\n\t}\n\n\t// check if the module is dynamic but unloaded (will have a dep entry)\n\tdependsPath := fmt.Sprintf(\"/lib/modules/%s/modules.dep\", hostInfo.KernelVersion)\n\tif err := f.searchFile(module, dependsPath, f.regexp(dependsModuleRe, module)); err != nil {\n\t\terrs = multierror.Append(errs, err)\n\t} else {\n\t\treturn nil\n\t}\n\n\treturn errs\n}\n\nfunc (f *BridgeFingerprint) findDir(dirname string) error {\n\tif _, err := os.Stat(dirname); err != nil {\n\t\treturn fmt.Errorf(\"failed to find %s: %v\", dirname, err)\n\t} else {\n\t\treturn nil\n\t}\n}\n\nfunc (f *BridgeFingerprint) searchFile(module, filename string, re *regexp.Regexp) error {\n\tfile, err := os.Open(filename)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to open %s: %v\", filename, err)\n\t}\n\tdefer func() {\n\t\t_ = file.Close()\n\t}()\n\n\tscanner := bufio.NewScanner(file)\n\tfor scanner.Scan() {\n\t\tif re.MatchString(scanner.Text()) {\n\t\t\treturn nil // found the module!","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/client/fingerprint/bridge_linux.go#L84-L120","documentation":"The BridgeFingerprint's findDir checks for the existence of /sys/module/<name> to detect whether the bridge kernel module is loaded/built-in. This error means os.Stat on that sysfs directory failed (typically ENOENT). It is one of several accumulated errors from detect(); a non-nil result just disables the bridge network mode fingerprint (resp.Detected=false), it does not fail the client.","triggerScenarios":"detect('bridge') calls findDir(\"/sys/module/bridge\") and the directory does not exist - the bridge module is neither loaded nor built into the running kernel, or the host lacks the /sys/module entry.","commonSituations":"Minimal/containerized hosts (e.g. running Nomad in a container with a restricted /sys) where the module dir is not visible; kernel built without bridge support (e.g. some VM appliances); module available but not yet loaded and not present in modules.dep.","solutions":["Load the module on the host: run 'modprobe bridge' and ensure it persists across reboots (e.g. /etc/modules-load.d/bridge.conf).","Verify the host kernel has bridge support: check 'ls /sys/module/bridge' and 'grep bridge /proc/modules'.","If running Nomad inside a container, run it on the host or mount /sys so module info is visible.","If bridge networking is not needed, ignore this - the fingerprint simply marks the node as not supporting bridge mode."],"exampleFix":"# before (module missing)\n$ ls /sys/module/bridge\nls: cannot access '/sys/module/bridge': No such file or directory\n# after\n$ sudo modprobe bridge && echo bridge | sudo tee /etc/modules-load.d/bridge.conf\n$ ls /sys/module/bridge\nparameters  refcnt  uevent","handlingStrategy":"fallback","validationCode":"// host-side preflight (shell)\n// test -d /sys/module/bridge || echo 'bridge module not loaded; run: modprobe bridge'","typeGuard":null,"tryCatchPattern":"if err := f.detect(bridgeKernelModuleName); err != nil {\n    // library already does this: log and disable bridge mode rather than failing\n    f.logger.Warn(\"bridge network mode disabled\", \"error\", err)\n    return nil // resp.Detected stays false\n}","preventionTips":["Provision bridge module loading in host images: /etc/modules-load.d/bridge.conf with 'modprobe bridge'.","Run Nomad on the host (or with /sys visible) rather than inside restricted containers.","Treat the fingerprint warning as expected on hosts that don't use Nomad bridge networking."],"tags":["fingerprint","linux","kernel-module","bridge-networking"],"backgroundTag":"kernel-module-not-loaded","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}