juicedata/juicefs · error

load setting: %v

Error message

load setting: %v

What it means

`juicefs status <meta-url>` first loads the volume format (settings record) from the metadata engine. If Meta.Load fails — the volume record is missing, unreadable, or the metadata backend is unreachable — Status wraps the failure as 'load setting'. No status output can be produced without the format.

Source

Thrown at pkg/meta/status.go:54

	PendingDeletedFileCount  int64 `json:",omitempty"`
	PendingDeletedFileSize   int64 `json:",omitempty"`
	TrashSliceCount          int64 `json:",omitempty"`
	TrashSliceSize           int64 `json:",omitempty"`
	PendingDeletedSliceCount int64 `json:",omitempty"`
	PendingDeletedSliceSize  int64 `json:",omitempty"`
}

type Sections struct {
	Setting  *Format
	Sessions []*Session
	Stat     *Statistic
}

// Status retrieves the status of the filesystem
func Status(ctx context.Context, m Meta, trash bool, sections *Sections) error {
	format, err := m.Load(true)
	if err != nil {
		return fmt.Errorf("load setting: %v", err)
	}
	format.RemoveSecret()

	sessions, err := m.ListSessions()
	if err != nil {
		return fmt.Errorf("list sessions: %v", err)
	}

	stat := &Statistic{}
	var totalSpace uint64
	if err = m.StatFS(Background(), RootInode, &totalSpace, &stat.AvailableSpace, &stat.UsedInodes, &stat.AvailableInodes); err != syscall.Errno(0) {
		return fmt.Errorf("stat fs: %v", err)
	}
	stat.UsedSpace = totalSpace - stat.AvailableSpace

	if trash {
		progress := utils.NewProgress(false)
		defer progress.Done()

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Read the wrapped inner error: connection refused → server down; 'setting format not found' → wrong meta URL or unformatted volume.
  2. Confirm you are passing the same META-URL used at `juicefs format` time (status expects a meta URL, not a mount point).
  3. Check metadata backend health and credentials (redis-cli ping / mysql client connect).
  4. If metadata is genuinely lost, the volume cannot be inspected; restore from metadata backup (`juicefs dump` artifacts) before retrying.

Example fix

// before (mount point passed instead of meta URL)
juicefs status /mnt/jfs
// after
juicefs status "redis://127.0.0.1:6379/1"
Defensive patterns

Strategy: validation

Validate before calling

// shell
redis-cli -u "$META_URL" PING || echo "metadata backend unreachable"
redis-cli -u "$META_URL" EXISTS setting || echo "volume not formatted at this meta URL"

Try / catch

if err := execStatus(metaURL); err != nil && strings.Contains(err.Error(), "load setting") {
    log.Fatalf("wrong meta URL or volume not formatted: %v", err)
}

Prevention

When it happens

Trigger: Running `juicefs status META-URL` where Load(true) errors: wrong meta URL pointing at an empty/nonexistent volume, wrong credentials, network failure to Redis/MySQL, or a corrupted/erased metadata store.

Common situations: Typo in the meta URL or pointing at a fresh Redis DB where the volume was never formatted; Redis AUTH/ACL misconfiguration; trying to inspect a volume whose metadata was deleted; typo'd bucket/vol name assumption — status takes a meta URL, not a mount point.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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