gastownhall/beads · error
prime.max-memory-chars must be a non-negative integer (0 = u
Error message
prime.max-memory-chars must be a non-negative integer (0 = unlimited), got %q
What it means
When setting prime.max-memory-chars, validateYamlConfigValue parses the value with strconv.Atoi; a non-integer string fails and returns this error. The value caps primed memory content in characters, with 0 meaning unlimited.
Source
Thrown at internal/config/yaml_config.go:914
return fmt.Errorf("dolt.debug must be \"true\" or \"false\", got %q", value)
}
case "dolt.mode":
lower := strings.ToLower(value)
if lower != "server" && lower != "embedded" {
return fmt.Errorf("dolt.mode must be \"server\" or \"embedded\", got %q", value)
}
case "prime.max-memories":
n, err := strconv.Atoi(value)
if err != nil {
return fmt.Errorf("prime.max-memories must be a non-negative integer (0 = unlimited), got %q", value)
}
if n < 0 {
return fmt.Errorf("prime.max-memories must be a non-negative integer (0 = unlimited), got %q", value)
}
case "prime.max-memory-chars":
n, err := strconv.Atoi(value)
if err != nil {
return fmt.Errorf("prime.max-memory-chars must be a non-negative integer (0 = unlimited), got %q", value)
}
if n < 0 {
return fmt.Errorf("prime.max-memory-chars must be a non-negative integer (0 = unlimited), got %q", value)
}
}
return nil
}
View on GitHub (pinned to 71377f2769)
Solutions
- Pass a plain non-negative integer, e.g. `bd config set prime.max-memory-chars 20000`
- Use 0 for unlimited
- Convert unit suffixes to full integers before setting
Example fix
// before
SetYamlConfig("prime.max-memory-chars", "20k")
// after
SetYamlConfig("prime.max-memory-chars", "20000") Defensive patterns
Strategy: validation
Validate before calling
n, err := strconv.Atoi(strings.TrimSpace(value))
if err != nil || n < 0 {
return fmt.Errorf("prime.max-memory-chars must be a non-negative integer, got %q", value)
} Try / catch
if err := bd.SetYamlConfig("prime.max-memory-chars", v); err != nil {
log.Printf("rejected: %v", err)
return err
} Prevention
- Convert suffixes (k, M) to full integers before setting
- Use 0 for unlimited rather than symbolic strings
- Validate all numeric config from untrusted inputs
When it happens
Trigger: `bd config set prime.max-memory-chars "10k"` or any non-integer string via SetYamlConfig/SetYamlConfigInDir/SetUserYamlConfig (Atoi error branch at yaml_config.go:914).
Common situations: Values with suffixes like "20000k", decimals, or quoted/whitespace-polluted shell values.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- prime.max-memories must be a non-negative integer (0 = unlim
- server: NewDoltServer: doltBinExec is required
- server: NewDoltServer: rootDir is required
- server: NewDoltServer: configPath is required
- ErrPrefixMismatch
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/c5a17b99b4b27f23.
Report an issue: GitHub.