hashicorp/nomad · error
pull_activity_timeout is less than minimum, %v
Error message
pull_activity_timeout is less than minimum, %v
What it means
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.
Source
Thrown at drivers/docker/config.go:812
if len(d.config.GC.DanglingContainers.CreationGraceStr) > 0 {
dur, err := time.ParseDuration(d.config.GC.DanglingContainers.CreationGraceStr)
if err != nil {
return fmt.Errorf("failed to parse 'creation_grace' duration: %v", err)
}
if dur < danglingContainersCreationGraceMinimum {
return fmt.Errorf("creation_grace is less than minimum, %v", danglingContainersCreationGraceMinimum)
}
d.config.GC.DanglingContainers.CreationGrace = dur
}
if len(d.config.PullActivityTimeout) > 0 {
dur, err := time.ParseDuration(d.config.PullActivityTimeout)
if err != nil {
return fmt.Errorf("failed to parse 'pull_activity_timeout' duration: %v", err)
}
if dur < pullActivityTimeoutMinimum {
return fmt.Errorf("pull_activity_timeout is less than minimum, %v", pullActivityTimeoutMinimum)
}
d.config.pullActivityTimeoutDuration = dur
}
if d.config.InfraImagePullTimeout != "" {
dur, err := time.ParseDuration(d.config.InfraImagePullTimeout)
if err != nil {
return fmt.Errorf("failed to parse 'infra_image_pull_timeout' duration: %v", err)
}
d.config.infraImagePullTimeoutDuration = dur
}
if d.config.ImagePullTimeout != "" {
_, err := time.ParseDuration(d.config.ImagePullTimeout)
if err != nil {
return fmt.Errorf("failed to parse 'image_pull_timeout' duration: %v", err)
}
}View on GitHub (pinned to 482b49bf1a)
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.
Example fix
// before infra_image_pull_timeout = "3600" // after infra_image_pull_timeout = "1h"
Defensive patterns
Strategy: validation
Validate before calling
if _, err := time.ParseDuration(cfg.InfraImagePullTimeout); cfg.InfraImagePullTimeout != "" && err != nil {
return fmt.Errorf("infra_image_pull_timeout invalid: %v", err)
} Try / catch
dur, err := time.ParseDuration(cfg.InfraImagePullTimeout)
if err != nil {
return fmt.Errorf("failed to parse 'infra_image_pull_timeout' duration: %v", err)
} Prevention
- Include unit suffix in every duration.
- Check for accidental quotes/whitespace in config values.
- Validate the client config before restart.
When it happens
Trigger: plugin "docker" config sets infra_image_pull_timeout = "3600" (no unit) or "forever"; time.ParseDuration returns an error.
Common situations: Unitless values copied from other tools' docs; typos like "1hr"; unfilled template variables in client config.
Understand the failure class
Background: "invalid duration" / "failed to parse duration": why your timeout, interval, or TTL string is rejected and which formats each library accepts — this error's family across 32 libraries.
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- failed to parse 'image_delay' duration: %v
- failed to parse 'period' duration: %v
- failed to parse 'creation_grace' duration: %v
- creation_grace is less than minimum, %v
- failed to parse 'pull_activity_timeout' duration: %v
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/a53912c9cb3f457a.
Report an issue: GitHub.