gastownhall/beads · error

--proxied-server-root-path %v

Error message

--proxied-server-root-path %v

What it means

`validateProxiedServerRootPath` performs additional semantic checks on the root path beyond absoluteness (e.g. existence/type of the directory); when it fails, init wraps its message with the `--proxied-server-root-path` prefix. This surfaces path-level problems (wrong kind of file, unusable directory) at init time rather than when the server later starts.

Source

Thrown at cmd/bd/init.go:477

			if !initProxiedServer {
				return fmt.Errorf("--proxied-server-log-path requires --proxied-server")
			}
			if !filepath.IsAbs(serverLogPath) {
				return fmt.Errorf("--proxied-server-log-path must be an absolute path, got %q", serverLogPath)
			}
			if err := validateProxiedServerLogPath(serverLogPath); err != nil {
				return fmt.Errorf("--proxied-server-log-path %v", err)
			}
		}
		if serverRootPath != "" {
			if !initProxiedServer {
				return fmt.Errorf("--proxied-server-root-path requires --proxied-server")
			}
			if !filepath.IsAbs(serverRootPath) {
				return fmt.Errorf("--proxied-server-root-path must be an absolute path, got %q", serverRootPath)
			}
			if err := validateProxiedServerRootPath(serverRootPath); err != nil {
				return fmt.Errorf("--proxied-server-root-path %v", err)
			}
		}
		if serverProxyPort != 0 {
			if !initProxiedServer {
				return fmt.Errorf("--proxied-server-port requires --proxied-server")
			}
			if serverProxyPort < 1 || serverProxyPort > 65535 {
				return fmt.Errorf("--proxied-server-port must be between 1 and 65535, got %d", serverProxyPort)
			}
		}
		if idleTimeoutSet {
			if !initProxiedServer {
				return fmt.Errorf("--proxied-server-idle-timeout requires --proxied-server")
			}
			if serverProxyIdleTimeout < 0 {
				return fmt.Errorf("--proxied-server-idle-timeout must be 0 (never) or a positive duration, got %s", serverProxyIdleTimeout)
			}
			if serverProxyIdleTimeout == 0 {

View on GitHub (pinned to 71377f2769)

Solutions

  1. Read the wrapped message after the prefix — it names the specific validation failure — and correct the path accordingly.
  2. Ensure the path refers to the expected directory (create it if the validator requires it to exist).
  3. Point `--proxied-server-root-path` at a fresh, dedicated directory for the dolt data root.

Example fix

// before
bd init --proxied-server --proxied-server-root-path /etc/hosts   // exists, but not a directory
// after
mkdir -p /var/lib/beads/dolt-root
bd init --proxied-server --proxied-server-root-path /var/lib/beads/dolt-root
Defensive patterns

Strategy: validation

Validate before calling

#!/usr/bin/env bash
ROOT="/var/lib/beads/dolt-root"
if [ -e "$ROOT" ] && [ ! -d "$ROOT" ]; then
  echo "$ROOT exists but is not a directory" >&2; exit 2
fi
mkdir -p "$ROOT"

Type guard

func usableRootPath(p string) bool { return filepath.IsAbs(p) && isDir(p) }

Try / catch

if out, err := exec.Command("bd", "init", args...).CombinedOutput(); err != nil {
    if strings.Contains(string(out), "--proxied-server-root-path") && !strings.Contains(string(out), "absolute") {
        // parse wrapped message for the specific path problem and fix the path
    }
}

Prevention

When it happens

Trigger: Running `bd init --proxied-server --proxied-server-root-path <abs path>` where the path passes filepath.IsAbs but fails validateProxiedServerRootPath — e.g. the path exists but is not a suitable root directory for the managed dolt sql-server.

Common situations: Pointing root-path at an existing regular file instead of a directory; typos in an absolute path pointing at a nonexistent location the validator expects to be prepared; stale paths left over from a moved data volume.

Related errors


AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30). Data as JSON: /api/errors/9c98e5f6a41a5970. Report an issue: GitHub.