juicedata/juicefs · error

failed to write metric %s: %v

Error message

failed to write metric %s: %v

What it means

Returned by reqAndSaveMetric when the fetched pprof metric payload cannot be flushed/written into the output file under the debug collection directory. It wraps the buffered writer error, typically a full disk or removed directory.

Source

Thrown at cmd/debug.go:293

func reqAndSaveMetric(name string, metric metricItem, outDir string, timeout time.Duration) error {
	resp, err := getRequest(metric.url, timeout)
	if err != nil {
		return fmt.Errorf("error getting metric: %v", err)
	}
	retPath := filepath.Join(outDir, fmt.Sprintf("juicefs.%s", metric.name))
	retFile, err := os.Create(retPath)
	if err != nil {
		logger.Fatalf("error creating metric file %s: %v", retPath, err)
	}
	defer closeFile(retFile)

	if name == "cmdline" {
		resp = bytes.ReplaceAll(resp, []byte{0}, []byte{' '})
	}

	writer := bufio.NewWriter(retFile)
	if _, err := writer.Write(resp); err != nil {
		return fmt.Errorf("failed to write metric %s: %v", name, err)
	}
	return writer.Flush()
}

func checkAgent(cmd string) bool {
	for _, field := range strings.Fields(cmd) {
		if field == "--no-agent" {
			return false
		}
	}
	return true
}

func geneZipFile(srcPath, destPath string) error {
	zipFile, err := os.Create(destPath)
	if err != nil {
		return err
	}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Check free space and write permissions in the --out-dir used by juicefs debug
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at cmd/debug.go:293 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/6fce741f272449cc. Report an issue: GitHub.