hyperledger/fabric · error

failed constructing peer membership out of response

Error message

failed constructing peer membership out of response

What it means

mapPeerMembership got a valid PeerMembershipResult but peersForChannel failed to convert it into the client's peer membership structure (e.g. malformed alive/dead membership or identity data inside the result).

Source

Thrown at discovery/client/client.go:404

	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
	}
	return nil
}

func peersForChannel(membersRes *discovery.PeerMembershipResult, qt protoext.QueryType) ([]*Peer, error) {
	var peers []*Peer
	for org, peersOfCurrentOrg := range membersRes.PeersByOrg {
		for _, peer := range peersOfCurrentOrg.Peers {
			aliveMsg, err := gprotoext.EnvelopeToGossipMessage(peer.MembershipInfo)
			if err != nil {
				return nil, errors.Wrap(err, "failed unmarshalling alive message")
			}
			var stateInfoMsg *gprotoext.SignedGossipMessage
			if isStateInfoExpected(qt) {
				stateInfoMsg, err = gprotoext.EnvelopeToGossipMessage(peer.StateInfo)

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Check the wrapped error for the specific conversion failure
  2. Retry against a healthy discovery service
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at discovery/client/client.go:404 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/b06f740e72852ed5. Report an issue: GitHub.