juicedata/juicefs · error

no available cache dir

Error message

no available cache dir

What it means

Returned by cacheManager.load when no cache store is currently available — every configured cache directory failed health checks or is in a backoff state, so there is nowhere to read a cached block from. Reads then fail at the cache layer and fall back to object storage by the caller's design.

Solutions

  1. Check cache dir free space, permissions, and errors in the mount log
  2. Ensure --cache-dir points to a writable, healthy directory and enough free space remains (free-space ratio)
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at pkg/chunk/cache_manager.go:264 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/b8f95cf9b7e93650. Report an issue: GitHub.

Appendix: source

Thrown at pkg/chunk/cache_manager.go:264

}

func (m *cacheManager) cache(key string, p *Page, force, dropCache bool) {
	store := m.getStore(key)
	if store != nil {
		store.cache(key, p, force, dropCache)
	}
}

type ReadCloser interface {
	// io.Reader
	io.ReaderAt
	io.Closer
}

func (m *cacheManager) load(key string) (ReadCloser, error) {
	store := m.getStore(key)
	if store == nil {
		return nil, errors.New("no available cache dir")
	}
	r, err := store.load(key)
	if err == errNotCached {
		legacy := m.getStoreLegacy(key)
		if legacy != store && legacy != nil {
			r, err = legacy.load(key)
		}
	}
	return r, err
}

func (m *cacheManager) exist(key string) (string, bool) {
	store := m.getStore(key)
	if store == nil {
		return "", false
	}
	loc := store.dir
	existed, err := store.exist(key)

View on GitHub (pinned to c9a67b23e8)