{"record":{"id":"08d1576a08f174f7","repo":"hashicorp/nomad","slug":"job-max-priority-cannot-be-d-must-be-between-d","errorCode":null,"errorMessage":"job_max_priority cannot be %d. Must be between %d and %d","messagePattern":"job_max_priority cannot be (.+?)\\. Must be between (.+?) and (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"command/agent/agent.go","lineNumber":364,"sourceCode":"\t\tif agentConfig.Autopilot.MinQuorum != 0 {\n\t\t\tconf.AutopilotConfig.MinQuorum = uint(agentConfig.Autopilot.MinQuorum)\n\t\t}\n\t\tif agentConfig.Autopilot.EnableRedundancyZones != nil {\n\t\t\tconf.AutopilotConfig.EnableRedundancyZones = *agentConfig.Autopilot.EnableRedundancyZones\n\t\t}\n\t\tif agentConfig.Autopilot.DisableUpgradeMigration != nil {\n\t\t\tconf.AutopilotConfig.DisableUpgradeMigration = *agentConfig.Autopilot.DisableUpgradeMigration\n\t\t}\n\t\tif agentConfig.Autopilot.EnableCustomUpgrades != nil {\n\t\t\tconf.AutopilotConfig.EnableCustomUpgrades = *agentConfig.Autopilot.EnableCustomUpgrades\n\t\t}\n\t}\n\n\tjobMaxPriority := structs.JobDefaultMaxPriority\n\tif agentConfig.Server.JobMaxPriority != nil && *agentConfig.Server.JobMaxPriority != 0 {\n\t\tjobMaxPriority = *agentConfig.Server.JobMaxPriority\n\t\tif jobMaxPriority < structs.JobDefaultMaxPriority || jobMaxPriority > structs.JobMaxPriority {\n\t\t\treturn nil, fmt.Errorf(\"job_max_priority cannot be %d. Must be between %d and %d\", *agentConfig.Server.JobMaxPriority, structs.JobDefaultMaxPriority, structs.JobMaxPriority)\n\t\t}\n\t}\n\tjobDefaultPriority := structs.JobDefaultPriority\n\tif agentConfig.Server.JobDefaultPriority != nil && *agentConfig.Server.JobDefaultPriority != 0 {\n\t\tjobDefaultPriority = *agentConfig.Server.JobDefaultPriority\n\t\tif jobDefaultPriority < structs.JobDefaultPriority || jobDefaultPriority >= jobMaxPriority {\n\t\t\treturn nil, fmt.Errorf(\"job_default_priority cannot be %d. Must be between %d and %d\", *agentConfig.Server.JobDefaultPriority, structs.JobDefaultPriority, jobMaxPriority)\n\t\t}\n\t}\n\tconf.JobMaxPriority = jobMaxPriority\n\tconf.JobDefaultPriority = jobDefaultPriority\n\n\tjobMaxCount := structs.JobDefaultMaxCount\n\tif agentConfig.Server.JobMaxCount != nil {\n\t\tjobMaxCount = *agentConfig.Server.JobMaxCount\n\t\tif jobMaxCount < 0 {\n\t\t\treturn nil, fmt.Errorf(\"job_max_count (%d) cannot be negative\", jobMaxCount)\n\t\t}","sourceCodeStart":346,"sourceCodeEnd":382,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/command/agent/agent.go#L346-L382","documentation":"Nomad jobs carry priorities in [JobDefaultMaxPriority? — specifically between structs.JobDefaultMaxPriority (1) and structs.JobMaxPriority (2048)]. convertServerConfig validates server.job_max_priority against this inclusive range, rejecting 0 and out-of-range values.","triggerScenarios":"Setting server { job_max_priority = N } where N != 0 and (N < structs.JobDefaultMaxPriority or N > structs.JobMaxPriority) during agent start or reload.","commonSituations":"Clusters needing higher-than-default max priority (default 100) setting the cap too high above 2048; typos or unit confusion (e.g. 20000); templating bugs passing 0 to mean 'unlimited'.","solutions":["Set job_max_priority within [1, 2048] (structs.JobDefaultMaxPriority..structs.JobMaxPriority).","Remove the stanza to keep the default max of 100.","If 0 was intended as 'default', simply omit the option (0 is treated as unset)."],"exampleFix":"// before\nserver {\n  job_max_priority = 5000\n}\n// after\nserver {\n  job_max_priority = 2048\n}","handlingStrategy":"validation","validationCode":"// Go: pre-validate with structs constants\nif p := cfg.Server.JobMaxPriority; p != nil && *p != 0 &&\n   (*p < structs.JobDefaultMaxPriority || *p > structs.JobMaxPriority) {\n    return fmt.Errorf(\"job_max_priority %d outside [%d,%d]\", *p, structs.JobDefaultMaxPriority, structs.JobMaxPriority)\n}","typeGuard":null,"tryCatchPattern":"conf, err := convertServerConfig(agentCfg)\nif err != nil {\n    if strings.Contains(err.Error(), \"job_max_priority cannot be\") {\n        return fmt.Errorf(\"job_max_priority must be within the allowed priority range: %w\", err)\n    }\n    return err\n}","preventionTips":["Keep job_max_priority within [1, 2048]; default cap is 100.","Treat 0 as unset — omit the option instead.","Reference the structs constants rather than hardcoding numbers in tooling."],"tags":["nomad","jobs","config","validation"],"backgroundTag":"config-value-out-of-range","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"}