hashicorp/nomad · error
error parsing DecompressionLimitSize: %w
Error message
error parsing DecompressionLimitSize: %w
What it means
ArtifactConfigFromAgent parses DecompressionSizeLimit with humanize.ParseBytes into a byte count limiting artifact decompression size. Note the message string says 'DecompressionLimitSize' (field order swapped) even though the config key is DecompressionSizeLimit. An invalid size string produces this wrapped error and aborts config construction.
Source
Thrown at client/config/artifact.go:70
gitTimeout, err := time.ParseDuration(*c.GitTimeout)
if err != nil {
return nil, fmt.Errorf("error parsing GitTimeout: %w", err)
}
hgTimeout, err := time.ParseDuration(*c.HgTimeout)
if err != nil {
return nil, fmt.Errorf("error parsing HgTimeout: %w", err)
}
s3Timeout, err := time.ParseDuration(*c.S3Timeout)
if err != nil {
return nil, fmt.Errorf("error parsing S3Timeout: %w", err)
}
decompressionSizeLimit, err := humanize.ParseBytes(*c.DecompressionSizeLimit)
if err != nil {
return nil, fmt.Errorf("error parsing DecompressionLimitSize: %w", err)
}
return &ArtifactConfig{
HTTPReadTimeout: httpReadTimeout,
HTTPMaxBytes: int64(httpMaxSize),
GCSTimeout: gcsTimeout,
GitTimeout: gitTimeout,
HgTimeout: hgTimeout,
S3Timeout: s3Timeout,
DecompressionLimitFileCount: *c.DecompressionFileCountLimit,
DecompressionLimitSize: int64(decompressionSizeLimit),
DisableArtifactInspection: *c.DisableArtifactInspection,
DisableFilesystemIsolation: *c.DisableFilesystemIsolation,
FilesystemIsolationExtraPaths: slices.Clone(c.FilesystemIsolationExtraPaths),
SetEnvironmentVariables: *c.SetEnvironmentVariables,
}, nil
}View on GitHub (pinned to 482b49bf1a)
Solutions
- Set decompression_size_limit to a valid humanize byte string, e.g. "1GB", "512MiB", with no space between number and unit
- Confirm the rendered agent config contains a non-empty, well-formed value
- Pre-validate with humanize.ParseBytes before calling ArtifactConfigFromAgent for earlier, clearer errors
Example fix
// before decompression_size_limit = "1 GB" // after decompression_size_limit = "1GB"
Defensive patterns
Strategy: validation
Validate before calling
if _, err := humanize.ParseBytes(*c.DecompressionSizeLimit); err != nil {
return fmt.Errorf("invalid decompression_size_limit %q: %w", *c.DecompressionSizeLimit, err)
} Type guard
func validByteSize(s *string) bool { if s == nil { return false }; _, err := humanize.ParseBytes(*s); return err == nil } Try / catch
cfg, err := config.ArtifactConfigFromAgent(agentCfg)
if err != nil {
if strings.Contains(err.Error(), "DecompressionLimitSize") {
return fmt.Errorf("decompression_size_limit must be a byte size like 1GB: %w", err)
}
return err
} Prevention
- Remember the error text says DecompressionLimitSize but the config key is decompression_size_limit
- Write byte sizes without spaces: "1GB", "512MiB"
- Pre-validate with humanize.ParseBytes in config tooling
When it happens
Trigger: Calling ArtifactConfigFromAgent when DecompressionSizeLimit is not a valid humanize byte expression: "1 GB" with a space, "100kilobytes", empty string, or unknown unit suffixes.
Common situations: decompression_size_limit in the Nomad client artifact block typoed or unit-less in a way humanize rejects; automation emitting empty values; confusion between the config key name and the error text leading developers to search for the wrong field.
Related errors
- error parsing HTTPMaxSize: %w
- error parsing GCSTimeout: %w
- error parsing GitTimeout: %w
- error parsing HgTimeout: %w
- error parsing S3Timeout: %w
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/816aa5247af0473c.
Report an issue: GitHub.