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
- Check the wrapped error for the specific conversion failure
- 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.