juicedata/juicefs · error

invalid file size %d, data length %d

Error message

invalid file size %d, data length %d

What it means

Returned by openCacheFile when the cache file on disk is smaller than the data length it claims to hold (negative extra bytes). The file is truncated or corrupt and cannot serve as a valid cache entry.

Source

Thrown at pkg/chunk/disk_cache_file.go:168

	}
	return buf.Bytes()
}

func openCacheFile(name string, length int, level string) (*cacheFile, error) {
	fp, err := os.Open(name)
	if err != nil {
		return nil, err
	}
	fi, err := fp.Stat()
	if err != nil {
		_ = fp.Close()
		return nil, err
	}
	checksumLength := int64(((length-1)/csBlock + 1) * 4)
	extra := fi.Size() - int64(length)
	if extra < 0 {
		_ = fp.Close()
		return nil, fmt.Errorf("invalid file size %d, data length %d", fi.Size(), length)
	}
	footerOff := int64(0)
	switch {
	case extra == 0:
		level = CsNone // data only, no footer
	case extra%4 == 0:
		switch {
		case extra == checksumLength:
		case extra > checksumLength:
			footerOff = int64(length) + checksumLength
		default:
			_ = fp.Close()
			return nil, fmt.Errorf("invalid file size %d, data length %d, checksum length %d", fi.Size(), length, checksumLength)
		}
	default:
		level = CsNone
		footerOff = int64(length)
	}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Delete the truncated cache file so the block is re-cached
  2. Check cache disk health and free space
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at pkg/chunk/disk_cache_file.go:168 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/faf1847088d105d6. Report an issue: GitHub.