{"record":{"id":"43f52f22735b6770","repo":"hyperledger/fabric","slug":"unexpected-consensus-type-s","errorCode":null,"errorMessage":"unexpected consensus type: `%s`","messagePattern":"unexpected consensus type: `(.+?)`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/deliverservice/deliveryclient.go","lineNumber":143,"sourceCode":"\tif !ok {\n\t\t// This should never happen because it is checked in peer.createChannel()\n\t\treturn errors.Errorf(\"failed to create block deliverer for channel `%s`, missing OrdererConfig\", chainID)\n\t}\n\n\tswitch ct := oc.ConsensusType(); ct {\n\tcase \"etcdraft\":\n\t\td.blockDeliverer, err = d.createBlockDelivererCFT(chainID, ledgerInfo)\n\tcase \"BFT\":\n\t\tswitch d.conf.DeliverServiceConfig.Policy {\n\t\tcase \"cluster\":\n\t\t\td.blockDeliverer, err = d.createBlockDelivererBFT(chainID, ledgerInfo)\n\t\tcase \"simple\":\n\t\t\td.blockDeliverer, err = d.createBlockDelivererCFT(chainID, ledgerInfo)\n\t\tdefault:\n\t\t\terr = errors.Errorf(\"unexpected delivey service policy: `%s`\", d.conf.DeliverServiceConfig.Policy)\n\t\t}\n\tdefault:\n\t\terr = errors.Errorf(\"unexpected consensus type: `%s`\", ct)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !d.conf.DeliverServiceConfig.BlockGossipEnabled {\n\t\tlogger.Infow(\"This peer will retrieve blocks from ordering service (will not disseminate them to other peers in the organization)\", \"channel\", chainID)\n\t} else {\n\t\tlogger.Infow(\"This peer will retrieve blocks from ordering service and disseminate to other peers in the organization\", \"channel\", chainID)\n\t}\n\n\td.channelID = chainID\n\n\tgo func() {\n\t\td.blockDeliverer.DeliverBlocks()\n\t\tfinalizer()\n\t}()","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/core/deliverservice/deliveryclient.go#L125-L161","documentation":"Returned by StartDeliverForChannel when the orderer config's consensus type is neither 'etcdraft' nor 'BFT'. The delivery service has no block deliverer implementation for that consensus type, so it refuses to start for the channel.","triggerScenarios":"Thrown at core/deliverservice/deliveryclient.go:143 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a supported consensus type (etcdraft or BFT) in the channel configuration","Update the peer to a version supporting this consensus type"],"exampleFix":null,"handlingStrategy":"validation","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"}