juicedata/juicefs · warning

message %d is not supported

Error message

message %d is not supported

What it means

baseMeta.onMsg dispatches internal control messages by ID to registered callbacks; when no callback is registered for the given message ID, this error is returned. It means this client build does not support the received message type, often due to mixed client versions or disabled features.

Source

Thrown at pkg/meta/base.go:710

			}
		}
	}
}

func (r *baseMeta) OnMsg(mtype uint32, cb MsgCallback) {
	r.msgCallbacks.Lock()
	defer r.msgCallbacks.Unlock()
	r.msgCallbacks.callbacks[mtype] = cb
}

func (r *baseMeta) newMsg(mid uint32, args ...interface{}) error {
	r.msgCallbacks.Lock()
	cb, ok := r.msgCallbacks.callbacks[mid]
	r.msgCallbacks.Unlock()
	if ok {
		return cb(args...)
	}
	return fmt.Errorf("message %d is not supported", mid)
}

func (m *baseMeta) Load(checkVersion bool) (*Format, error) {
	body, err := m.en.doLoad()
	if err == nil && len(body) == 0 {
		err = fmt.Errorf("database is not formatted, please run `juicefs format ...` first")
	}
	if err != nil {
		return nil, err
	}
	var format = new(Format)
	if err = json.Unmarshal(body, format); err != nil {
		return nil, fmt.Errorf("json: %s", err)
	}
	if checkVersion {
		if err = format.CheckVersion(); err != nil {
			return nil, fmt.Errorf("check version: %s", err)
		}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Upgrade all clients to a uniform, recent JuiceFS version
  2. Check which message ID is unsupported and whether the sending client's feature set should be disabled
  3. Ensure no session with mismatched feature flags is connected to the same metadata engine
Defensive patterns

Strategy: retry

Try / catch

if err := onMsg(mid, args); err != nil { if strings.Contains(err.Error(), "is not supported") { log.Warnf("ignoring unsupported msg %d from peer", mid) } }

Prevention

When it happens

Trigger: A message with an unregistered mid arrives while the client is connected (e.g. another newer client broadcast a message type this one doesn't know); a feature-gated message (behind build tags or version check) is delivered to a client lacking support.

Common situations: Mixed-version clusters where newer clients send messages older clients don't recognize; clients built without certain feature tags receiving messages from feature-enabled nodes.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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