hashicorp/nomad · error
creation_grace is less than minimum, %v
Error message
creation_grace is less than minimum, %v
What it means
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.
Source
Thrown at drivers/docker/config.go:801
}
d.config.GC.imageDelayDuration = dur
}
if len(d.config.GC.DanglingContainers.PeriodStr) > 0 {
dur, err := time.ParseDuration(d.config.GC.DanglingContainers.PeriodStr)
if err != nil {
return fmt.Errorf("failed to parse 'period' duration: %v", err)
}
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 {View on GitHub (pinned to 482b49bf1a)
Solutions
- Use a valid duration string, e.g. "5m".
- Include a unit suffix; bare numbers are invalid.
- Ensure config templating actually substitutes placeholders.
Example fix
// before pull_activity_timeout = "10min" // after pull_activity_timeout = "10m"
Defensive patterns
Strategy: validation
Validate before calling
if _, err := time.ParseDuration(cfg.PullActivityTimeout); cfg.PullActivityTimeout != "" && err != nil {
return fmt.Errorf("pull_activity_timeout invalid: %v", err)
} Try / catch
dur, err := time.ParseDuration(cfg.PullActivityTimeout)
if err != nil {
return fmt.Errorf("failed to parse 'pull_activity_timeout' duration: %v", err)
} Prevention
- Always append a unit: "5m", "10m".
- No bare integers.
- Catch template-variable substitution failures.
When it happens
Trigger: plugin "docker" config sets pull_activity_timeout = "600" or "never" — not parseable by time.ParseDuration.
Common situations: Unitless integers, descriptive text instead of a duration, or templating mistakes leaving a placeholder like ${TIMEOUT} in the 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.
Related errors
- failed to parse 'image_delay' duration: %v
- failed to parse 'period' duration: %v
- failed to parse 'creation_grace' duration: %v
- failed to parse 'pull_activity_timeout' duration: %v
- pull_activity_timeout is less than minimum, %v
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/6745b7b74893027a.
Report an issue: GitHub.