{"record":{"id":"b06f740e72852ed5","repo":"hyperledger/fabric","slug":"failed-constructing-peer-membership-out-of-respons","errorCode":null,"errorMessage":"failed constructing peer membership out of response","messagePattern":"failed constructing peer membership out of response","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"discovery/client/client.go","lineNumber":404,"sourceCode":"\tfor k, index := range key2Index {\n\t\tmembersRes, err := protoext.ResponseMembershipAt(r, index)\n\t\tif membersRes == nil && err == nil {\n\t\t\treturn errors.Errorf(\"expected QueryResult of either PeerMembershipResult or Error but got %v instead\", r.Results[index])\n\t\t}\n\n\t\tkey := key{\n\t\t\tqueryType: qt,\n\t\t\tk:         k,\n\t\t}\n\n\t\tif err != nil {\n\t\t\tresp[key] = errors.New(err.Content)\n\t\t\tcontinue\n\t\t}\n\n\t\tpeers, err2 := peersForChannel(membersRes, qt)\n\t\tif err2 != nil {\n\t\t\treturn errors.Wrap(err2, \"failed constructing peer membership out of response\")\n\t\t}\n\n\t\tresp[key] = peers\n\t}\n\treturn nil\n}\n\nfunc peersForChannel(membersRes *discovery.PeerMembershipResult, qt protoext.QueryType) ([]*Peer, error) {\n\tvar peers []*Peer\n\tfor org, peersOfCurrentOrg := range membersRes.PeersByOrg {\n\t\tfor _, peer := range peersOfCurrentOrg.Peers {\n\t\t\taliveMsg, err := gprotoext.EnvelopeToGossipMessage(peer.MembershipInfo)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, errors.Wrap(err, \"failed unmarshalling alive message\")\n\t\t\t}\n\t\t\tvar stateInfoMsg *gprotoext.SignedGossipMessage\n\t\t\tif isStateInfoExpected(qt) {\n\t\t\t\tstateInfoMsg, err = gprotoext.EnvelopeToGossipMessage(peer.StateInfo)","sourceCodeStart":386,"sourceCodeEnd":422,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/discovery/client/client.go#L386-L422","documentation":"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).","triggerScenarios":"Thrown at discovery/client/client.go:404 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the wrapped error for the specific conversion failure","Retry against a healthy discovery service"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}