gastownhall/beads · error
applying %s: %w
Error message
applying %s: %w
What it means
promoteExplicitServerConnFlags applies the validated env mutations (BEADS_DOLT_SERVER_HOST/PORT/USER/...) via os.Setenv/os.Unsetenv. If the OS-level env write fails, the already-applied mutations are rolled back via restore() and this error wraps the key and underlying cause. In practice os.Setenv rarely fails, so this usually indicates an out-of-memory or extreme environment-block condition.
Source
Thrown at cmd/bd/init.go:3285
}
_ = os.Unsetenv(key)
}
}
for _, mut := range muts {
if _, seen := saved[mut.key]; !seen {
value, present := os.LookupEnv(mut.key)
saved[mut.key] = savedEnv{value: value, present: present}
}
var applyErr error
if mut.unset {
applyErr = os.Unsetenv(mut.key)
} else {
applyErr = os.Setenv(mut.key, mut.value)
}
if applyErr != nil {
restore()
return noop, fmt.Errorf("applying %s: %w", mut.key, applyErr)
}
}
return restore, nil
}
func initDoltServerTLSFromEnv() bool {
return (&configfile.Config{}).GetDoltServerTLS()
}
func initTimeCloneConfig(serverMode bool, serverHost string, serverPort int, serverSocket, serverUser, dbName string) *configfile.Config {
cfg := configfile.DefaultConfig()
cfg.Backend = configfile.BackendDolt
cfg.DoltDatabase = dbName
if serverMode {
cfg.DoltMode = configfile.DoltModeServer
cfg.DoltServerHost = configfile.DefaultDoltServerHost
cfg.DoltServerUser = configfile.DefaultDoltServerUser
} else {View on GitHub (pinned to 71377f2769)
Solutions
- Retry the command after checking system memory and environment size
- Reduce the environment block size (unset unneeded variables)
- Simplify the invocation (pass fewer promoted flags) to reduce mutation count
- If using a sandbox wrapper, verify it permits os.Setenv for the bd process
Example fix
// before: near-OS-limit environment $ env $(huge-env) bd init --server-host h applying BEADS_DOLT_SERVER_HOST: setenv: cannot allocate memory // after $ env -i PATH=$PATH HOME=$HOME bd init --server-host h
Defensive patterns
Strategy: retry
Try / catch
restore, err := promoteExplicitServerConnFlags(cmd); if err != nil { defer restore(); return fmt.Errorf("flag promotion: %w", err) } Prevention
- Keep the process environment block reasonably sized
- Retry once on transient setenv allocation failures
- Avoid exotic sandbox wrappers around bd when promoting flags
- Monitor system memory in constrained environments
When it happens
Trigger: Applying a validated serverConnEnvMutation where os.Setenv or os.Unsetenv returns an error, aborting flag promotion and restoring prior env state.
Common situations: Memory exhaustion during process setup; very large environment blocks near OS limits; exotic sandboxing runtimes that intercept or forbid env changes.
Related errors
- --server-host cannot be empty; omit the flag to use BEADS_DO
- --server-user cannot be empty; omit the flag to use BEADS_DO
- cannot use both --pull-only and --push-only
- %w (--prefer-local, --prefer-ado, --prefer-newer)
- connect to dolt server for clone: %w
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/82900d743e1a307e.
Report an issue: GitHub.