{"record":{"id":"1dca35d3dcc9d973","repo":"hashicorp/nomad","slug":"failed-to-parse-pull-activity-timeout-duration","errorCode":null,"errorMessage":"failed to parse 'pull_activity_timeout' duration: %v","messagePattern":"failed to parse 'pull_activity_timeout' duration: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/docker/config.go","lineNumber":809,"sourceCode":"\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 {\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 {","sourceCodeStart":791,"sourceCodeEnd":827,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/drivers/docker/config.go#L791-L827","documentation":"pull_activity_timeout is floor-checked against pullActivityTimeoutMinimum after parsing. Values below this minimum are rejected because too-short timeouts would abort image pulls from slow registries or for large images.","triggerScenarios":"Setting pull_activity_timeout = \"1s\" (or anything under the minimum, 5m) in the docker plugin client config.","commonSituations":"Users who want pulls to fail fast set tiny values; misreading the option as a poll interval rather than an inactivity timeout.","solutions":["Increase pull_activity_timeout to at least the minimum (5m).","Remove the option to use the default.","If pulls time out, raise the value — it measures pull inactivity, not total pull time."],"exampleFix":"// before\npull_activity_timeout = \"1m\"\n// after\npull_activity_timeout = \"5m\"","handlingStrategy":"validation","validationCode":"d, err := time.ParseDuration(cfg.PullActivityTimeout)\nif err == nil && d < 5*time.Minute {\n  return fmt.Errorf(\"pull_activity_timeout must be >= 5m\")\n}","typeGuard":null,"tryCatchPattern":"if dur < pullActivityTimeoutMinimum {\n  return fmt.Errorf(\"pull_activity_timeout is less than minimum, %v\", pullActivityTimeoutMinimum)\n}","preventionTips":["Keep the value >= 5m (the minimum).","Raise, don't lower, when pulls are slow.","Leave unset for the safe default."],"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"}