juicedata/juicefs · error

changelog is not enabled, use `juicefs config %s --changelog

Error message

changelog is not enabled, use `juicefs config %s --changelog` to enable it

What it means

The `juicefs changelog` command streams the metadata engine's changelog, but this only works when changelog recording is enabled on the volume. When the loaded format has ChangeLog == false, the command aborts with a message telling you to enable it via `juicefs config <meta-uri> --changelog`.

Source

Thrown at cmd/changelog.go:60

		Flags: []cli.Flag{
			&cli.Int64Flag{
				Name:  "from",
				Usage: "show changelog from this version (0 means from the latest)",
			},
		},
	}
}

func changelog(ctx *cli.Context) error {
	setup(ctx, 1)
	metaUri := ctx.Args().Get(0)
	removePassword(metaUri)

	m := meta.NewClient(metaUri, nil)
	if format, err := m.Load(true); err != nil {
		return err
	} else if !format.ChangeLog {
		return fmt.Errorf("changelog is not enabled, use `juicefs config %s --changelog` to enable it", metaUri)
	}

	last := ctx.Int64("from")
	return m.ScanChangelog(meta.Background(), last, func(ver int64, entry string) error {
		fmt.Printf("%d: %s\n", ver, entry)
		return nil
	})
}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Enable it first: run `juicefs config <metaUri> --changelog`.
  2. Re-check with `juicefs status <metaUri>` or the volume format that ChangeLog is now true.
  3. If the metadata engine is Redis, note the changelog is stored in a dedicated key; verify no other client disabled it after enabling.

Example fix

# before
juicefs changelog redis://127.0.0.1:6379/1
# after
juicefs config redis://127.0.0.1:6379/1 --changelog
juicefs changelog redis://127.0.0.1:6379/1
Defensive patterns

Strategy: validation

Validate before calling

# enable then stream
metaUri=redis://127.0.0.1:6379/1
juicefs config "$metaUri" --changelog
juicefs status "$metaUri" | grep -i changelog || echo "changelog still disabled"

Try / catch

if ! juicefs changelog "$metaUri" 2>&1 | grep -q 'not enabled'; then
  echo changelog streaming ok
fi

Prevention

When it happens

Trigger: Running `juicefs changelog <meta-uri>` against a volume whose format was created without changelog support (or with it explicitly disabled); enabling changelog only for newer volumes while the target volume predates the feature.

Common situations: Operators try to tail the changelog for CDC/replication on an older volume; a volume was formatted before the changelog feature existed; someone disabled changelog via config and later attempts to read it.

Related errors


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