hyperledger/fabric · error
failed to validate config metadata of ordering config
Error message
failed to validate config metadata of ordering config
What it means
Consenter.IsChannelMember wraps a failure of VerifyConfigMetadata: the etcdraft ConfigMetadata unmarshalled from the orderer config failed validation — bad options (ticks, intervals) or consenter certificates that do not verify against the config's CAs.
Source
Thrown at orderer/consensus/etcdraft/consenter.go:257
if err != nil {
return false, err
}
oc, exists := bundle.OrdererConfig()
if !exists {
return false, errors.New("no orderer config in bundle")
}
configMetadata := &etcdraft.ConfigMetadata{}
if err := proto.Unmarshal(oc.ConsensusMetadata(), configMetadata); err != nil {
return false, err
}
verifyOpts, err := createX509VerifyOptions(oc)
if err != nil {
return false, errors.Wrapf(err, "failed to create x509 verify options from orderer config")
}
if err := VerifyConfigMetadata(configMetadata, verifyOpts); err != nil {
return false, errors.Wrapf(err, "failed to validate config metadata of ordering config")
}
consenters := make(map[uint64]*etcdraft.Consenter)
for i, c := range configMetadata.GetConsenters() {
consenters[uint64(i+1)] = c // the IDs don't matter
}
if _, err := c.detectSelfID(consenters); err != nil {
if err != cluster.ErrNotInChannel {
return false, errors.Wrapf(err, "failed to detect self ID by comparing public keys")
}
return false, nil
}
return true, nil
}
// ReadBlockMetadata attempts to read raft metadata from block metadata, if available.View on GitHub (pinned to 2736b63f8f)
Solutions
- Fix the etcdraft options (HeartbeatTick, ElectionTick, TickInterval, etc.) in the channel config
- Ensure consenter host/port/tls certificates are correct and verifiable
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at orderer/consensus/etcdraft/consenter.go:257 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/e96a88b0cb30c580.
Report an issue: GitHub.