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

  1. Fix the etcdraft options (HeartbeatTick, ElectionTick, TickInterval, etc.) in the channel config
  2. 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.