juicedata/juicefs · error

error checking pprof alive

Error message

error checking pprof alive: %v

What it means

Returned by checkPort during `juicefs debug` when the probe GET to the pprof cmdline endpoint fails entirely (connection refused/timeout). It means the pprof service on the discovered port is not reachable, so the port either is wrong or the service died.

Solutions

  1. Verify the mount process still runs and the agent exported the pprof port
  2. Check firewall/localhost access to the pprof port
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at cmd/debug.go:255 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/52be934f2e942635. Report an issue: GitHub.

Appendix: source

Thrown at cmd/debug.go:255

	defer func(body io.ReadCloser) {
		if err := body.Close(); err != nil {
			logger.Errorf("error closing body: %v", err)
		}
	}(resp.Body)
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, fmt.Errorf("error reading response: %v", err)
	}

	return body, nil
}

// check pprof service status
func checkPort(port int, amp string) error {
	url := fmt.Sprintf("http://localhost:%d/debug/pprof/cmdline?debug=1", port)
	resp, err := getRequest(url, 3*time.Second)
	if err != nil {
		return fmt.Errorf("error checking pprof alive: %v", err)
	}
	resp = bytes.ReplaceAll(resp, []byte{0}, []byte{' '})
	fields := strings.Fields(string(resp))
	flag := false
	for _, field := range fields {
		if amp == field {
			flag = true
		}
	}
	if !flag {
		return fmt.Errorf("mount point mismatch: \n%s\n%s", resp, amp)
	}
	return nil
}

type metricItem struct {
	name, url string
}

View on GitHub (pinned to c9a67b23e8)