{"record":{"id":"816aa5247af0473c","repo":"hashicorp/nomad","slug":"error-parsing-decompressionlimitsize-w","errorCode":null,"errorMessage":"error parsing DecompressionLimitSize: %w","messagePattern":"error parsing DecompressionLimitSize: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"client/config/artifact.go","lineNumber":70,"sourceCode":"\n\tgitTimeout, err := time.ParseDuration(*c.GitTimeout)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing GitTimeout: %w\", err)\n\t}\n\n\thgTimeout, err := time.ParseDuration(*c.HgTimeout)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing HgTimeout: %w\", err)\n\t}\n\n\ts3Timeout, err := time.ParseDuration(*c.S3Timeout)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing S3Timeout: %w\", err)\n\t}\n\n\tdecompressionSizeLimit, err := humanize.ParseBytes(*c.DecompressionSizeLimit)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing DecompressionLimitSize: %w\", err)\n\t}\n\n\treturn &ArtifactConfig{\n\t\tHTTPReadTimeout:               httpReadTimeout,\n\t\tHTTPMaxBytes:                  int64(httpMaxSize),\n\t\tGCSTimeout:                    gcsTimeout,\n\t\tGitTimeout:                    gitTimeout,\n\t\tHgTimeout:                     hgTimeout,\n\t\tS3Timeout:                     s3Timeout,\n\t\tDecompressionLimitFileCount:   *c.DecompressionFileCountLimit,\n\t\tDecompressionLimitSize:        int64(decompressionSizeLimit),\n\t\tDisableArtifactInspection:     *c.DisableArtifactInspection,\n\t\tDisableFilesystemIsolation:    *c.DisableFilesystemIsolation,\n\t\tFilesystemIsolationExtraPaths: slices.Clone(c.FilesystemIsolationExtraPaths),\n\t\tSetEnvironmentVariables:       *c.SetEnvironmentVariables,\n\t}, nil\n\n}","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/client/config/artifact.go#L52-L88","documentation":"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.","triggerScenarios":"Calling ArtifactConfigFromAgent when DecompressionSizeLimit is not a valid humanize byte expression: \"1 GB\" with a space, \"100kilobytes\", empty string, or unknown unit suffixes.","commonSituations":"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.","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"],"exampleFix":"// before\ndecompression_size_limit = \"1 GB\"\n// after\ndecompression_size_limit = \"1GB\"","handlingStrategy":"validation","validationCode":"if _, err := humanize.ParseBytes(*c.DecompressionSizeLimit); err != nil {\n    return fmt.Errorf(\"invalid decompression_size_limit %q: %w\", *c.DecompressionSizeLimit, err)\n}","typeGuard":"func validByteSize(s *string) bool { if s == nil { return false }; _, err := humanize.ParseBytes(*s); return err == nil }","tryCatchPattern":"cfg, err := config.ArtifactConfigFromAgent(agentCfg)\nif err != nil {\n    if strings.Contains(err.Error(), \"DecompressionLimitSize\") {\n        return fmt.Errorf(\"decompression_size_limit must be a byte size like 1GB: %w\", err)\n    }\n    return err\n}","preventionTips":["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"],"tags":["config","parsing","bytes","go"],"backgroundTag":"invalid-duration-or-size-config","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}