{"record":{"id":"c966f00724aae994","repo":"juicedata/juicefs","slug":"check-version-s","errorCode":null,"errorMessage":"check version: %s","messagePattern":"check version: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/meta/base.go","lineNumber":727,"sourceCode":"\t}\n\treturn fmt.Errorf(\"message %d is not supported\", mid)\n}\n\nfunc (m *baseMeta) Load(checkVersion bool) (*Format, error) {\n\tbody, err := m.en.doLoad()\n\tif err == nil && len(body) == 0 {\n\t\terr = fmt.Errorf(\"database is not formatted, please run `juicefs format ...` first\")\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar format = new(Format)\n\tif err = json.Unmarshal(body, format); err != nil {\n\t\treturn nil, fmt.Errorf(\"json: %s\", err)\n\t}\n\tif checkVersion {\n\t\tif err = format.CheckVersion(); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"check version: %s\", err)\n\t\t}\n\t}\n\tif format.Tiers == nil {\n\t\tformat.Tiers = object.NewTiers(format.StorageClass)\n\t}\n\tm.setFormat(format)\n\treturn format, nil\n}\n\nfunc (m *baseMeta) newSessionInfo() []byte {\n\thost, err := os.Hostname()\n\tif err != nil {\n\t\tlogger.Warnf(\"Failed to get hostname: %s\", err)\n\t}\n\tips, err := utils.FindLocalIPs(m.conf.NetworkInterfaces...)\n\tif err != nil {\n\t\tlogger.Warnf(\"Failed to get local IP: %s\", err)\n\t}","sourceCodeStart":709,"sourceCodeEnd":745,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/pkg/meta/base.go#L709-L745","documentation":"baseMeta.Load checks the volume format version via format.CheckVersion() when checkVersion is true; if the on-disk format version is outside the range supported by this client, this error wraps that failure. It prevents a client from operating on a volume whose metadata layout it cannot correctly read or write.","triggerScenarios":"Mounting a volume created by a much newer JuiceFS with an older client (format version too high); downgrade scenarios where a newer client bumped the format version; MinClientVersion restrictions with mixed clients.","commonSituations":"Rolling cluster upgrades where an old client mounts after a new client bumped the version; attempts to downgrade JuiceFS; running an old binary against a recently formatted volume.","solutions":["Upgrade the JuiceFS client to a version supporting the volume's format version","Check the volume version (in the format record / `juicefs status`) and match client versions across the cluster","If downgrading is required, export data and re-format with the older version — do not mount older clients directly"],"exampleFix":"// before: old client on new-format volume\n./juicefs-v1.0 mount redis://meta /jfs\n// after: upgrade client\n./juicefs-v1.2 mount redis://meta /jfs","handlingStrategy":"validation","validationCode":"// before mounting, compare client support:\n// juicefs status <meta-url> shows volume version; ensure client supports it","typeGuard":null,"tryCatchPattern":"if _, err := meta.Load(true); err != nil { if strings.Contains(err.Error(), \"check version\") { return fmt.Errorf(\"upgrade client to support this volume: %w\", err) } }","preventionTips":["Upgrade all clients together in clusters","Never downgrade clients below the volume's format version","Check release notes for format-version bumps before rolling upgrades"],"tags":["version-compatibility","metadata"],"backgroundTag":"incompatible-source-type","analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}