gastownhall/beads · error
newProxiedServerUOWProvider: proxied server log (from env or
Error message
newProxiedServerUOWProvider: proxied server log (from env or %s): %w
What it means
After resolving a custom log path in the managed proxied server flow, bd validates it with validateProxiedServerLogPath and wraps failures with this error, naming proxied_server_client_info.json as the usual source of the custom path. The path must have an existing, directory parent, and if the log file exists it must be a regular file; anything else (missing parent, parent is a file, log path is a directory or special file, stat error other than NotExist) is rejected.
Source
Thrown at cmd/bd/uow_factory.go:507
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,
topology.proxyIdle,
topology.teamServer,
topology.expectedProjectID,
opts...,View on GitHub (pinned to 71377f2769)
Solutions
- Ensure the parent directory exists: mkdir -p "$(dirname <logpath>)" and that it is a real directory
- Check the target with ls -la; remove/rename if it is a directory or special file rather than a regular file
- Unset BEADS_PROXIED_SERVER_LOG or remove log_path from .beads/proxied_server_client_info.json to use the default <root>/server.log
- Fix permissions/ACLs so the bd user can stat the parent and log path
Example fix
// before: log_path is a directory
{"log_path": "/var/log/bd/server.log/"}
// after
{"log_path": "/var/log/bd/server.log"} # and ensure /var/log/bd exists Defensive patterns
Strategy: validation
Validate before calling
lp := os.Getenv("BEADS_PROXIED_SERVER_LOG")
if lp != "" {
parent := filepath.Dir(lp)
if fi, err := os.Stat(parent); err != nil || !fi.IsDir() {
return fmt.Errorf("parent %s of log %s must be an existing directory", parent, lp)
}
if fi, err := os.Stat(lp); err == nil && !fi.Mode().IsRegular() {
return fmt.Errorf("log %s must be a regular file", lp)
}
} Prevention
- mkdir -p the log directory before setting BEADS_PROXIED_SERVER_LOG
- Never point log_path at directories, sockets, or FIFOs
- Mount log volumes before services start, and check mounts in startup scripts
- Keep custom log paths on filesystems the bd user can stat and write
When it happens
Trigger: Sidecar log_path or BEADS_PROXIED_SERVER_LOG names a path whose parent directory is absent or is itself a file; the log path exists as a directory/FIFO/socket; stat fails with EACCES or similar.
Common situations: Custom log path under a mount that is not mounted; log_path set to a directory by mistake; rotated log replaced by a directory; restrictive ACLs on the log directory.
Related errors
- newExternalProxiedServerUOWProvider: proxied server log (fro
- newExternalProxiedServerUOWProvider: resolve log path: %w
- newProxiedServerUOWProvider: resolve log path: %w
- no store is open for this workspace
- not found
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/58fb6fb3eeb596ca.
Report an issue: GitHub.