hashicorp/nomad · error

version must be zero when tagging latest, got: %d

Error message

version must be zero when tagging latest, got: %d

What it means

Guard in Job.TagVersion: the request sets both Latest and an explicit Version; tagging the latest version requires Version to be zero so the two selectors are not contradictory.

Source

Thrown at nomad/job_endpoint.go:2406

	j.srv.MeasureRPCRate("job", structs.RateMetricWrite, args)
	if authErr != nil {
		return structs.ErrPermissionDenied
	}
	defer metrics.MeasureSince([]string{"nomad", "job", "tag_version"}, time.Now())

	aclObj, err := j.srv.ResolveACL(args)
	if err != nil {
		return err
	}
	if !aclObj.AllowNsOpAnyOf(args.RequestNamespace(),
		acl.NamespaceCapabilitySubmitJob,
		acl.NamespaceCapabilityTagJobVersion,
	) {
		return structs.ErrPermissionDenied
	}

	if args.Latest && args.Version > 0 {
		return fmt.Errorf("version must be zero when tagging latest, got: %d", args.Version)
	}
	if args.Tag != nil {
		args.Tag.TaggedTime = time.Now().UnixNano()
	}

	_, index, err := j.srv.raftApply(structs.JobVersionTagRequestType, args)
	if err != nil {
		j.logger.Error("tagging version failed", "error", err)
		return err
	}

	reply.Index = index
	if args.Tag != nil {
		reply.Name = args.Tag.Name
		reply.Description = args.Tag.Description
		reply.TaggedTime = args.Tag.TaggedTime
	}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Set either latest=true with version 0, or an explicit version without latest
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at nomad/job_endpoint.go:2406 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/c968b8a69b96680b. Report an issue: GitHub.