hashicorp/nomad · error

cron.start must contain %d fields

Error message

cron.start must contain %d fields

What it means

TaskSchedule (enterprise) validation error: cron.start does not have exactly 6 space-separated fields (sec min hour dom month dow), as measured by counting spaces. Extra or missing fields make the expression unparseable.

Source

Thrown at nomad/structs/task_sched.go:77

//
// Enterprise only.
type TaskSchedule struct {
	Cron *TaskScheduleCron
}

func (t *TaskSchedule) Validate() error {
	if t.Cron == nil {
		return errors.New("must specify cron block")
	}

	const (
		startFields     = 6
		endFields       = 2
		restrictedChars = "/,"
	)

	if strings.Count(t.Cron.Start, " ") != (startFields - 1) {
		return fmt.Errorf("cron.start must contain %d fields", startFields)
	}
	if strings.Count(t.Cron.End, " ") != (endFields - 1) {
		return fmt.Errorf("cron.end must contain %d fields", endFields)
	}
	if strings.ContainsAny(t.Cron.Start, restrictedChars) {
		return fmt.Errorf("cron.start must not contain %q", restrictedChars)
	}
	if strings.ContainsAny(t.Cron.End, restrictedChars) {
		return fmt.Errorf("cron.end must not contain %q", restrictedChars)
	}

	return nil
}

func (t *TaskSchedule) Next(from time.Time) (start, end time.Duration, err error) {
	return t.Cron.Next(from)
}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Write cron.start with exactly 6 fields, e.g. "0 0 9 * * Mon-Fri"
  2. Check for doubled or missing spaces between fields
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at nomad/structs/task_sched.go:77 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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