juicedata/juicefs · error

json: %s

Error message

json: %s

What it means

Returned by kvMeta.doInit when the stored volume setting value cannot be JSON-unmarshalled into a Format. The persisted format record is corrupted or was written by an incompatible version, so the client refuses to operate on it.

Source

Thrown at pkg/meta/tkv.go:513

			}
			return limit < 0 || c < limit
		})
		return nil
	}, 0)
	return keys, vals, err
}

func (m *kvMeta) doInit(format *Format, force bool) error {
	body, err := m.get(m.fmtKey("setting"))
	if err != nil {
		return err
	}

	if body != nil {
		var old Format
		err = json.Unmarshal(body, &old)
		if err != nil {
			return fmt.Errorf("json: %s", err)
		}
		if !old.DirStats && format.DirStats {
			// remove dir stats as they are outdated
			var keys [][]byte
			prefix := m.fmtKey("U")
			err := m.client.txn(Background(), func(tx *kvTxn) error {
				tx.scan(prefix, nextKey(prefix), true, func(k, v []byte) bool {
					if len(k) == 9 {
						keys = append(keys, k)
					}
					return true
				})
				return nil
			}, 0)
			if err != nil {
				return errors.Wrap(err, "scan dir stats")
			}
			err = m.txn(Background(), func(tx *kvTxn) error {

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Check for mixed client versions writing the setting key
  2. Restore the format record from backup or re-format if the volume is expendable
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/meta/tkv.go:513 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/23c913167ae7e368. Report an issue: GitHub.