{"record":{"id":"b82da59203d69127","repo":"hashicorp/nomad","slug":"unsupported-raft-log-store-backend-q","errorCode":null,"errorMessage":"unsupported raft log store backend: %q","messagePattern":"unsupported raft log store backend: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nomad/server.go","lineNumber":1488,"sourceCode":"\t\t\tboltStore, boltErr := raftboltdb.New(raftboltdb.Options{\n\t\t\t\tPath:   filepath.Join(path, \"raft.db\"),\n\t\t\t\tNoSync: false, // fsync each log write\n\t\t\t\tBoltOptions: &bbolt.Options{\n\t\t\t\t\tNoFreelistSync: noFreelistSync,\n\t\t\t\t},\n\t\t\t\tMsgpackUseNewTimeFormat: true,\n\t\t\t})\n\t\t\tif boltErr != nil {\n\t\t\t\treturn boltErr\n\t\t\t}\n\t\t\tstore = boltStore\n\t\t\ts.logger.Info(\"setting up raft bolt store\", \"no_freelist_sync\", noFreelistSync)\n\n\t\t\t// Start publishing bboltdb metrics\n\t\t\tgo boltStore.RunMetrics(s.shutdownCtx, 0)\n\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported raft log store backend: %q\", backend)\n\t\t}\n\n\t\ts.raftStore = store\n\t\tstable = store\n\n\t\t// If online verification of the raft log store is enabled, wire up the\n\t\t// periodic verifier. The verifier will run in the background and attempt\n\t\t// to exercise the store's verification routines (when supported) at the\n\t\t// configured interval.\n\t\tif s.config.RaftLogStoreConfig != nil && s.config.RaftLogStoreConfig.VerificationEnabled {\n\t\t\t// Start the verifier in background; it will stop when server shuts down.\n\t\t\ts.startRaftLogVerifier()\n\t\t}\n\n\t\t// Wrap the store in a LogCache to improve performance, unless disabled.\n\t\tdisableLogCache := s.config.RaftLogStoreConfig != nil && s.config.RaftLogStoreConfig.DisableLogCache\n\t\tif disableLogCache {\n\t\t\tlog = store","sourceCodeStart":1470,"sourceCodeEnd":1506,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/server.go#L1470-L1506","documentation":"The raft log store backend is chosen from config (RaftLogStoreConfig.Backend) with a switch over known backends (WAL, BoltDB). Any other value falls to the default case and startup fails, naming the unsupported backend with %q.","triggerScenarios":"setupRaft(): raft_log_store { backend = \"...\" } in config contains a value other than \"wal\" or \"boltdb\" (case-sensitive).","commonSituations":"Typo in backend name (\"bolt\", \"wal2\"); wrong casing (\"WAL\"); copying config from another tool; newer/older Nomad version where the backend name is not recognized.","solutions":["Set raft_log_store backend to a supported value: \"wal\" or \"boltdb\" (exact spelling, lowercase)","Check `nomad version` / docs to confirm which backends your build supports","Remove the backend override to use the version's default"],"exampleFix":"// before (server.hcl)\nraft_log_store {\n  backend = \"BOLTDB\"\n}\n// after\nraft_log_store {\n  backend = \"boltdb\"\n}","handlingStrategy":"validation","validationCode":"var validBackends = map[string]bool{\"wal\": true, \"boltdb\": true}\nb := cfg.RaftLogStoreConfig.Backend\nif b != \"\" && !validBackends[b] {\n    return fmt.Errorf(\"backend %q not supported; use wal or boltdb\", b)\n}","typeGuard":null,"tryCatchPattern":"if err := server.Start(); err != nil {\n    if strings.Contains(err.Error(), \"unsupported raft log store backend\") {\n        logger.Error(\"fix raft_log_store.backend in config\")\n    }\n    return err\n}","preventionTips":["Copy backend values only from official docs; they are case-sensitive","Validate configs in CI with a schema check before rollout","Pin Nomad versions and confirm supported backends per release"],"tags":["configuration","raft","validation","nomad"],"backgroundTag":"unsupported-config-value","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"}