hashicorp/nomad · error
failed to parse 'pull_activity_timeout' duration: %v
Error message
failed to parse 'pull_activity_timeout' duration: %v
What it means
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.
Source
Thrown at drivers/docker/config.go:809
}
d.config.GC.DanglingContainers.period = dur
}
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 {View on GitHub (pinned to 482b49bf1a)
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.
Example fix
// before pull_activity_timeout = "1m" // after pull_activity_timeout = "5m"
Defensive patterns
Strategy: validation
Validate before calling
d, err := time.ParseDuration(cfg.PullActivityTimeout)
if err == nil && d < 5*time.Minute {
return fmt.Errorf("pull_activity_timeout must be >= 5m")
} Try / catch
if dur < pullActivityTimeoutMinimum {
return fmt.Errorf("pull_activity_timeout is less than minimum, %v", pullActivityTimeoutMinimum)
} Prevention
- Keep the value >= 5m (the minimum).
- Raise, don't lower, when pulls are slow.
- Leave unset for the safe default.
When it happens
Trigger: Setting pull_activity_timeout = "1s" (or anything under the minimum, 5m) in the docker plugin client config.
Common situations: Users who want pulls to fail fast set tiny values; misreading the option as a poll interval rather than an inactivity timeout.
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.
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
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
- pull_activity_timeout is less than minimum, %v
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/1dca35d3dcc9d973.
Report an issue: GitHub.