juicedata/juicefs · error

fail 3 times in %s, give up

Error message

fail 3 times in %s, give up

What it means

Returned by launchMount when three consecutive attempts to spawn the mount helper process all failed within ten seconds. It gives up rather than looping forever, typically because the re-exec'd mount child dies immediately each time.

Source

Thrown at cmd/mount_unix.go:1003

	if c.Bool("disable-transparent-hugepage") {
		utils.DisableTHP()
	}

	if canShutdownGracefully(mp, conf) {
		shutdownGraceful(mp)
	}
	os.Setenv("_FUSE_FD_COMM", serverAddress)
	serveFuseFD(serverAddress)
	defer os.Remove(serverAddress)

	path, err := os.Executable()
	if err != nil {
		return fmt.Errorf("find executable: %s", err)
	}
	start := time.Now()
	for attempt := 0; ; attempt++ {
		if attempt == 3 && time.Since(start) < time.Second*10 {
			return fmt.Errorf("fail 3 times in %s, give up", time.Since(start))
		}
		// For volcengine VKE serverless container, no umount before mount when
		// `JFS_NO_UMOUNT` environment provided
		noUmount := os.Getenv("JFS_NO_UMOUNT")
		if fuseFd == 0 && (attempt > 0 || noUmount == "0") {
			_ = doUmount(mp, true)
		}
		if runtime.GOOS == "linux" {
			if !utils.Exists(serverAddress) {
				serveFuseFD(serverAddress)
			}
		}

		mountPid = 0
		cmd := exec.Command(path, os.Args[1:]...)
		cmd.Stdin = os.Stdin
		cmd.Stdout = os.Stdout
		cmd.Stderr = os.Stderr

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Check the mount log for why the child mount process exits immediately
  2. Verify the executable and FUSE device (/dev/fuse) are available
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at cmd/mount_unix.go:1003 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/ffcc61639f81e32d. Report an issue: GitHub.