{"record":{"id":"6745b7b74893027a","repo":"hashicorp/nomad","slug":"creation-grace-is-less-than-minimum-v","errorCode":null,"errorMessage":"creation_grace is less than minimum, %v","messagePattern":"creation_grace is less than minimum, (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/docker/config.go","lineNumber":801,"sourceCode":"\t\t}\n\t\td.config.GC.imageDelayDuration = dur\n\t}\n\n\tif len(d.config.GC.DanglingContainers.PeriodStr) > 0 {\n\t\tdur, err := time.ParseDuration(d.config.GC.DanglingContainers.PeriodStr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to parse 'period' duration: %v\", err)\n\t\t}\n\t\td.config.GC.DanglingContainers.period = dur\n\t}\n\n\tif len(d.config.GC.DanglingContainers.CreationGraceStr) > 0 {\n\t\tdur, err := time.ParseDuration(d.config.GC.DanglingContainers.CreationGraceStr)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to parse 'creation_grace' duration: %v\", err)\n\t\t}\n\t\tif dur < danglingContainersCreationGraceMinimum {\n\t\t\treturn fmt.Errorf(\"creation_grace is less than minimum, %v\", danglingContainersCreationGraceMinimum)\n\t\t}\n\t\td.config.GC.DanglingContainers.CreationGrace = dur\n\t}\n\n\tif len(d.config.PullActivityTimeout) > 0 {\n\t\tdur, err := time.ParseDuration(d.config.PullActivityTimeout)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to parse 'pull_activity_timeout' duration: %v\", err)\n\t\t}\n\t\tif dur < pullActivityTimeoutMinimum {\n\t\t\treturn fmt.Errorf(\"pull_activity_timeout is less than minimum, %v\", pullActivityTimeoutMinimum)\n\t\t}\n\t\td.config.pullActivityTimeoutDuration = dur\n\t}\n\n\tif d.config.InfraImagePullTimeout != \"\" {\n\t\tdur, err := time.ParseDuration(d.config.InfraImagePullTimeout)\n\t\tif err != nil {","sourceCodeStart":783,"sourceCodeEnd":819,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/drivers/docker/config.go#L783-L819","documentation":"The Docker driver's pull_activity_timeout option is parsed with time.ParseDuration during SetConfig. If the string cannot be parsed (e.g. missing unit or invalid characters), the driver returns this wrapped error and the plugin fails to configure.","triggerScenarios":"plugin \"docker\" config sets pull_activity_timeout = \"600\" or \"never\" — not parseable by time.ParseDuration.","commonSituations":"Unitless integers, descriptive text instead of a duration, or templating mistakes leaving a placeholder like ${TIMEOUT} in the config.","solutions":["Use a valid duration string, e.g. \"5m\".","Include a unit suffix; bare numbers are invalid.","Ensure config templating actually substitutes placeholders."],"exampleFix":"// before\npull_activity_timeout = \"10min\"\n// after\npull_activity_timeout = \"10m\"","handlingStrategy":"validation","validationCode":"if _, err := time.ParseDuration(cfg.PullActivityTimeout); cfg.PullActivityTimeout != \"\" && err != nil {\n  return fmt.Errorf(\"pull_activity_timeout invalid: %v\", err)\n}","typeGuard":null,"tryCatchPattern":"dur, err := time.ParseDuration(cfg.PullActivityTimeout)\nif err != nil {\n  return fmt.Errorf(\"failed to parse 'pull_activity_timeout' duration: %v\", err)\n}","preventionTips":["Always append a unit: \"5m\", \"10m\".","No bare integers.","Catch template-variable substitution failures."],"tags":["docker","duration","config","nomad"],"backgroundTag":"invalid-duration-format","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"}