hyperledger/fabric · error
failed to find a consenter for consensus type: %s
Error message
failed to find a consenter for consensus type: %s
What it means
initLedgerResourcesClusterConsenter guard: the consensus type in the channel's orderer config has no matching entry in the registrar's consenters map, so no cluster consenter can be built for this channel. Same root cause as the chainsupport variant: unsupported/unregistered consensus type on this binary.
Source
Thrown at orderer/common/multichannel/registrar.go:294
}
}
}
func (r *Registrar) initLedgerResourcesClusterConsenter(configBlock *cb.Block) (*ledgerResources, consensus.ClusterConsenter, error) {
configEnv, err := protoutil.ExtractEnvelope(configBlock, 0)
if err != nil {
return nil, nil, errors.WithMessagef(err, "failed extracting config envelope from block")
}
ledgerRes, err := r.newLedgerResources(configEnv)
if err != nil {
return nil, nil, errors.WithMessagef(err, "failed creating ledger resources")
}
ordererConfig, _ := ledgerRes.OrdererConfig()
consenter, foundConsenter := r.consenters[ordererConfig.ConsensusType()]
if !foundConsenter {
return nil, nil, errors.Errorf("failed to find a consenter for consensus type: %s", ordererConfig.ConsensusType())
}
clusterConsenter, ok := consenter.(consensus.ClusterConsenter)
if !ok {
return nil, nil, errors.New("failed cast: clusterConsenter is not a consensus.ClusterConsenter")
}
return ledgerRes, clusterConsenter, nil
}
// BroadcastChannelSupport returns the message channel header, whether the message is a config update
// and the channel resources for a message or an error if the message is not a message which can
// be processed directly (like CONFIG and ORDERER_TRANSACTION messages)
func (r *Registrar) BroadcastChannelSupport(msg *cb.Envelope) (*cb.ChannelHeader, bool, *ChainSupport, error) {
chdr, err := protoutil.ChannelHeader(msg)
if err != nil {
return nil, false, nil, errors.WithMessage(err, "could not determine channel ID")
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Deploy an orderer build that registers the channel's consensus type
- Migrate the channel to a supported consensus type
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at orderer/common/multichannel/registrar.go:294 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/6fff508a6da3c028.
Report an issue: GitHub.