gastownhall/beads · error
newProxiedServerUOWProvider: resolve root path: %w
Error message
newProxiedServerUOWProvider: resolve root path: %w
What it means
The managed variant newManagedProxiedServerUOWProvider (cmd/bd/uow_factory.go) also resolves the proxied server root via resolveProxiedServerRootPath (env → proxied_server_client_info.json sidecar → default Dolt dir) and wraps resolution errors with this message. Unlike the validation error that follows, this fires during resolution itself: most commonly when the client-info sidecar exists but cannot be loaded/parsed, since the resolver reads it to find root_path.
Source
Thrown at cmd/bd/uow_factory.go:490
// it: an env/sidecar override that is explicitly named but broken
// should fail loudly here rather than surface as a confusing spawn
// failure downstream. See internal/doltversion for the resolution
// precedence (env > sidecar > PATH) and probe hardening (timeout,
// output cap, pre-exec validation).
//
// The error label names this function rather than the proxied-server
// entry point: since upstream's server-mode path (bd serve ->
// newSQLServerUOWProvider) also lands here, a hardcoded
// "newProxiedServerUOWProvider" would mislabel a `bd serve` failure as a
// proxied-server one.
doltBin, err := resolveAndProbeDolt(ctx, "newManagedProxiedServerUOWProvider", quietFlag)
if err != nil {
return nil, err
}
rootPath, err := resolveProxiedServerRootPath(beadsDir)
if err != nil {
return nil, fmt.Errorf("newProxiedServerUOWProvider: resolve root path: %w", err)
}
if err := validateProxiedServerRootPath(rootPath); err != nil {
return nil, fmt.Errorf("newProxiedServerUOWProvider: proxied server root (from env or %s): %w", configfile.ProxiedServerClientInfoFileName, err)
}
configPath, err := ensureProxiedServerConfig(beadsDir)
if err != nil {
return nil, err
}
logPath, isCustomLog, err := resolveProxiedServerLogPath(beadsDir)
if err != nil {
return nil, fmt.Errorf("newProxiedServerUOWProvider: resolve log path: %w", err)
}
if isCustomLog {
if err := validateProxiedServerLogPath(logPath); err != nil {
return nil, fmt.Errorf("newProxiedServerUOWProvider: proxied server log (from env or %s): %w", configfile.ProxiedServerClientInfoFileName, err)
}View on GitHub (pinned to 71377f2769)
Solutions
- Inspect and repair .beads/proxied_server_client_info.json, or delete it so resolution falls back to the default Dolt dir
- Set BEADS_PROXIED_SERVER_ROOT_PATH explicitly to bypass sidecar-based root resolution
- Fix file permissions on the sidecar and .beads directory for the running user
- Re-run bd migrate-dolt-mode to regenerate a valid sidecar
Example fix
// before: corrupt sidecar blocks resolution
{"root_path": "/var/lib/beads", "log_path":
// after: remove or repair
rm .beads/proxied_server_client_info.json
# or: export BEADS_PROXIED_SERVER_ROOT_PATH=/var/lib/beads/shared-server/dolt Defensive patterns
Strategy: validation
Validate before calling
b, err := os.ReadFile(filepath.Join(beadsDir, ".beads", "proxied_server_client_info.json"))
if err == nil {
var v map[string]any
if err := json.Unmarshal(b, &v); err != nil {
return fmt.Errorf("client info sidecar invalid: %v", err)
}
} Prevention
- Treat proxied_server_client_info.json as generated output; regenerate rather than repair by hand
- Keep a pre-migration copy of .beads so a failed migration can be rolled back
- Set BEADS_PROXIED_SERVER_ROOT_PATH in scripted environments to avoid sidecar parsing entirely
- Ensure the bd process user can read every file in .beads
When it happens
Trigger: LoadProxiedServerClientInfo fails because .beads/proxied_server_client_info.json is corrupt JSON, unreadable, or unparsable while resolving the root for the managed proxied server.
Common situations: Truncated sidecar after an interrupted bd migrate-dolt-mode run; sidecar hand-edited with invalid JSON; sidecar permissions exclude the current user.
Related errors
- ensureProxiedServerConfig: custom config %s: not a regular f
- newExternalProxiedServerUOWProvider: resolve log path: %w
- newProxiedServerUOWProvider: resolve log path: %w
- server: NewDoltServer: doltBinExec is required
- server: NewDoltServer: rootDir is required
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/1d04290d7d2277a9.
Report an issue: GitHub.