juicedata/juicefs · warning

Clients below version %s will be rejected after modification

Error message

Clients below version %s will be rejected after modification.

What it means

During 'juicefs config', when the minimum client version check is active (format.CheckVersion() fails), the CLI warns that after applying the modification all connected clients older than format.MinClientVersion will be rejected. It then enumerates active sessions so the operator can see which clients would be kicked.

Source

Thrown at cmd/config.go:495

		}
		if originDirStats && !format.DirStats {
			qs := make(map[string]*meta.Quota)
			err := m.HandleQuota(meta.Background(), meta.QuotaList, "", meta.DirQuotaType, qs, false, false, false)
			if err != nil {
				return errors.Wrap(err, "list quotas")
			}
			if len(qs) != 0 {
				paths := make([]string, 0, len(qs))
				for path := range qs {
					paths = append(paths, path)
				}
				return fmt.Errorf("cannot disable dir stats when there are still %d dir quotas: %v", len(qs), paths)
			}
		}
		if clientVer {
			confirmClientVer := false
			if format.CheckVersion() != nil {
				warn("Clients below version %s will be rejected after modification.", format.MinClientVersion)
				confirmClientVer = true
			}

			// check all clients
			if sessions, err := m.ListSessions(); err == nil {
				warnMsg := ""
				for _, session := range sessions {
					if err := format.CheckCliVersion(version.Parse(session.Version)); err != nil {
						warnMsg += fmt.Sprintf("host %s pid %d client version error: %s\n", session.HostName, session.ProcessID, err)
					}
				}
				if warnMsg != "" {
					fmt.Println(warnMsg)
					confirmClientVer = true
				}
			}
			if confirmClientVer && !yes && !userConfirmed() {
				return fmt.Errorf("Aborted.")

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Upgrade all mounted clients to at least format.MinClientVersion before applying the change ('juicefs config --min-client-version' shows/sets it)
  2. Restart or remount outdated clients with a current juicefs binary
  3. If the version floor is wrong, clear/lower it via 'juicefs config META --min-client-version <old>' first
  4. Proceed with --yes only if kicking old clients is acceptable

Example fix

// before
juicefs config sqlite3://test.db --capacity 100G   # old clients connected
// after (upgrade clients first, then)
juicefs config sqlite3://test.db --capacity 100G --yes
Defensive patterns

Strategy: validation

Validate before calling

sessions, err := m.ListSessions()
// verify all session versions >= format.MinClientVersion before applying config

Try / catch

if strings.Contains(warnOutput, "will be rejected after modification") {
	// upgrade clients first or confirm
}

Prevention

When it happens

Trigger: Running 'juicefs config' on a volume where MinClientVersion enforcement is set (or being raised) and some running clients are older than that version; changing other settings while a version floor is configured.

Common situations: Mixed-version clusters after a partial upgrade; pinning MinClientVersion to require a bugfix while long-running mounts still use older binaries.

Related errors


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