gastownhall/beads · error
newProxiedServerUOWProvider: resolve log path: %w
Error message
newProxiedServerUOWProvider: resolve log path: %w
What it means
newManagedProxiedServerUOWProvider resolves the proxied server log path (BEADS_PROXIED_SERVER_LOG env → proxied_server_client_info.json log_path → <root>/server.log) and wraps resolution failures with this message. As with root resolution, the primary failure mode is failing to load the client-info sidecar, which resolveProxiedServerLogPath reads unconditionally before falling back to defaults.
Source
Thrown at cmd/bd/uow_factory.go:503
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)
}
}
return uow.NewDoltServerUOWProvider(
ctx,
rootPath,
topology.database,
logPath,
configPath,
proxy.BackendLocalServer,
"root",
"", // proxy is loopback-only, no auth
doltBin,
topology.proxyPort,View on GitHub (pinned to 71377f2769)
Solutions
- Repair or delete .beads/proxied_server_client_info.json so resolution uses the default log location
- Export BEADS_PROXIED_SERVER_LOG to supply the log path without consulting the sidecar
- Fix read permissions on the sidecar for the user running bd
- Regenerate the sidecar with bd migrate-dolt-mode
Example fix
// before: unreadable sidecar $ ls -l .beads/proxied_server_client_info.json # owned by root, mode 0600 // after sudo chown $USER .beads/proxied_server_client_info.json # or: export BEADS_PROXIED_SERVER_LOG=$HOME/.beads/logs/server.log
Defensive patterns
Strategy: validation
Validate before calling
sidecar := filepath.Join(beadsDir, ".beads", "proxied_server_client_info.json")
if b, err := os.ReadFile(sidecar); err == nil {
var v any
if err := json.Unmarshal(b, &v); err != nil {
return fmt.Errorf("unreadable sidecar %s: %v", sidecar, err)
}
} Prevention
- Validate the sidecar parses after any edit or migration
- Fix .beads ownership/permissions when running bd under different users
- Prefer explicit env vars (BEADS_PROXIED_SERVER_LOG) in CI so resolution never depends on the sidecar
- Regenerate the sidecar with bd migrate-dolt-mode after failed upgrades
When it happens
Trigger: LoadProxiedServerClientInfo fails (corrupt JSON, unreadable file) while the managed provider resolves the log path.
Common situations: Interrupted migration left a partial sidecar; permissions changed; sidecar edited by hand with syntax errors.
Related errors
- newExternalProxiedServerUOWProvider: resolve log path: %w
- ensureProxiedServerConfig: custom config %s: not a regular f
- newExternalProxiedServerUOWProvider: proxied server log (fro
- newProxiedServerUOWProvider: resolve root path: %w
- newProxiedServerUOWProvider: proxied server log (from env or
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/05c4ac7d4a33d9aa.
Report an issue: GitHub.