{"record":{"id":"a53912c9cb3f457a","repo":"hashicorp/nomad","slug":"pull-activity-timeout-is-less-than-minimum-v","errorCode":null,"errorMessage":"pull_activity_timeout is less than minimum, %v","messagePattern":"pull_activity_timeout is less than minimum, (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/docker/config.go","lineNumber":812,"sourceCode":"\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 {\n\t\t\treturn fmt.Errorf(\"failed to parse 'infra_image_pull_timeout' duration: %v\", err)\n\t\t}\n\t\td.config.infraImagePullTimeoutDuration = dur\n\t}\n\n\tif d.config.ImagePullTimeout != \"\" {\n\t\t_, err := time.ParseDuration(d.config.ImagePullTimeout)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to parse 'image_pull_timeout' duration: %v\", err)\n\t\t}\n\t}","sourceCodeStart":794,"sourceCodeEnd":830,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/drivers/docker/config.go#L794-L830","documentation":"The infra_image_pull_timeout option controls how long the driver waits for the driver's infra image (used for exec/task env detection) to pull, parsed via time.ParseDuration in SetConfig. An invalid duration string aborts plugin configuration with this wrapped error.","triggerScenarios":"plugin \"docker\" config sets infra_image_pull_timeout = \"3600\" (no unit) or \"forever\"; time.ParseDuration returns an error.","commonSituations":"Unitless values copied from other tools' docs; typos like \"1hr\"; unfilled template variables in client config.","solutions":["Set a valid Go duration string such as \"5m\" or \"1h\".","Add the missing unit suffix.","Remove the option to fall back to the default timeout."],"exampleFix":"// before\ninfra_image_pull_timeout = \"3600\"\n// after\ninfra_image_pull_timeout = \"1h\"","handlingStrategy":"validation","validationCode":"if _, err := time.ParseDuration(cfg.InfraImagePullTimeout); cfg.InfraImagePullTimeout != \"\" && err != nil {\n  return fmt.Errorf(\"infra_image_pull_timeout invalid: %v\", err)\n}","typeGuard":null,"tryCatchPattern":"dur, err := time.ParseDuration(cfg.InfraImagePullTimeout)\nif err != nil {\n  return fmt.Errorf(\"failed to parse 'infra_image_pull_timeout' duration: %v\", err)\n}","preventionTips":["Include unit suffix in every duration.","Check for accidental quotes/whitespace in config values.","Validate the client config before restart."],"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"}