hyperledger/fabric · error

expected QueryResult of either PeerMembershipResult or Error

Error message

expected QueryResult of either PeerMembershipResult or Error but got %v instead

What it means

mapPeerMembership indexed a discovery response result that is neither a PeerMembershipResult nor an Error — an unexpected QueryResult variant for a membership query, usually a client/peer version mismatch.

Source

Thrown at discovery/client/client.go:389

			queryType: protoext.ConfigQueryType,
			k:         ch,
		}

		if err != nil {
			resp[key] = errors.New(err.Content)
			continue
		}

		resp[key] = config
	}
	return nil
}

func (resp response) mapPeerMembership(key2Index map[string]int, r *discovery.Response, qt protoext.QueryType) error {
	for k, index := range key2Index {
		membersRes, err := protoext.ResponseMembershipAt(r, index)
		if membersRes == nil && err == nil {
			return errors.Errorf("expected QueryResult of either PeerMembershipResult or Error but got %v instead", r.Results[index])
		}

		key := key{
			queryType: qt,
			k:         k,
		}

		if err != nil {
			resp[key] = errors.New(err.Content)
			continue
		}

		peers, err2 := peersForChannel(membersRes, qt)
		if err2 != nil {
			return errors.Wrap(err2, "failed constructing peer membership out of response")
		}

		resp[key] = peers

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Align discovery client and peer versions
  2. Handle the unexpected result type explicitly
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at discovery/client/client.go:389 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04). Data as JSON: /api/errors/b566e52a3c598221. Report an issue: GitHub.