{"record":{"id":"af7c7fc1fa54b25d","repo":"hyperledger/fabric","slug":"received-bad-status-v-from-orderer","errorCode":null,"errorMessage":"received bad status %v from orderer","messagePattern":"received bad status (.+?) from orderer","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"common/deliverclient/blocksprovider/block_receiver.go","lineNumber":136,"sourceCode":"\t\t\tbreak RecvLoop\n\t\t}\n\t}\n\n\t// cancel the sending side and wait for the `Start` goroutine to exit\n\tbr.cancelSendFunc()\n\t<-br.recvC\n\n\treturn err\n}\n\nfunc (br *BlockReceiver) processMsg(msg *orderer.DeliverResponse) (uint64, *common.Config, error) {\n\tswitch t := msg.GetType().(type) {\n\tcase *orderer.DeliverResponse_Status:\n\t\tif t.Status == common.Status_SUCCESS {\n\t\t\treturn 0, nil, errors.Errorf(\"received success for a seek that should never complete\")\n\t\t}\n\n\t\treturn 0, nil, errors.Errorf(\"received bad status %v from orderer\", t.Status)\n\tcase *orderer.DeliverResponse_Block:\n\t\tblockNum := t.Block.Header.Number\n\n\t\tif err := br.updatableBlockVerifier.VerifyBlock(t.Block); err != nil {\n\t\t\treturn 0, nil, errors.WithMessagef(err, \"block [%d] from orderer [%s] could not be verified\", blockNum, br.endpoint.String())\n\t\t}\n\n\t\terr := br.blockHandler.HandleBlock(br.channelID, t.Block)\n\t\tif err != nil {\n\t\t\treturn 0, nil, errors.WithMessagef(err, \"block [%d] from orderer [%s] could not be handled\", blockNum, br.endpoint.String())\n\t\t}\n\n\t\tbr.logger.Debugf(\"Handled block %d\", blockNum)\n\n\t\tvar channelConfig *common.Config\n\t\tif protoutil.IsConfigBlock(t.Block) {\n\t\t\tconfigEnv, err := deliverclient.ConfigFromBlock(t.Block)\n\t\t\tif err != nil {","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/common/deliverclient/blocksprovider/block_receiver.go#L118-L154","documentation":"Returned by BlockReceiver.processMsg when the orderer's DeliverResponse carries a status other than SUCCESS (e.g. NOT_FOUND, SERVICE_UNAVAILABLE) for a seek request. It means the orderer refused or could not serve the delivery request for that channel.","triggerScenarios":"Thrown at common/deliverclient/blocksprovider/block_receiver.go:136 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Decode the status code in the error to find the refusal reason (wrong channel, missing block, busy orderer)","Retry against another orderer endpoint after fixing the underlying cause"],"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"}