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
- Enable it first: run `juicefs config <metaUri> --changelog`.
- Re-check with `juicefs status <metaUri>` or the volume format that ChangeLog is now true.
- 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
- Enable changelog at volume creation/rollout time if CDC or replication will be used
- Check `juicefs config <metaUri>` output for the changelog flag before scripting around it
- Document that changelog streaming requires an explicit opt-in flag
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
- clone failed: %v
- compact [%d:%s] error: %s
- negative value for %s: %d
- set tier for inode %d tier:%d failed: %w
- set tier for inode %d failed: %w
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/d9cce067af156331.
Report an issue: GitHub.