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

  1. Set a valid Go duration string such as "5m" or "1h".
  2. Add the missing unit suffix.
  3. 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

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.

Related errors


AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04). Data as JSON: /api/errors/a53912c9cb3f457a. Report an issue: GitHub.