hyperledger/fabric · error

no values in 'Orderer' group

Error message

no values in 'Orderer' group

What it means

checkConsentersMatchPolicy guard: the Orderer group in the proposed config exists but its Values map is empty, so the 'Orderers' (consenter mapping) value cannot be read. The smartbft config verifier cannot reconstruct the expected block-validation policy from an empty group.

Source

Thrown at orderer/consensus/smartbft/configverifier.go:112

func (cbv *ConfigBlockValidator) checkConsentersMatchPolicy(conf *common.Config) error {
	if conf == nil {
		return fmt.Errorf("empty Config")
	}

	if conf.ChannelGroup == nil {
		return fmt.Errorf("empty channel group")
	}

	if len(conf.ChannelGroup.Groups) == 0 {
		return fmt.Errorf("no groups in channel group")
	}

	if conf.ChannelGroup.Groups["Orderer"] == nil {
		return fmt.Errorf("no 'Orderer' group in channel groups")
	}

	if len(conf.ChannelGroup.Groups["Orderer"].Values) == 0 {
		return fmt.Errorf("no values in 'Orderer' group")
	}

	if conf.ChannelGroup.Groups["Orderer"].Values["Orderers"] == nil {
		return fmt.Errorf("no values in 'Orderer' group")
	}

	ords := &common.Orderers{}
	if err := proto.Unmarshal(conf.ChannelGroup.Groups["Orderer"].Values["Orderers"].Value, ords); err != nil {
		return err
	}

	n := len(ords.ConsenterMapping)
	f := (n - 1) / 3

	var identities []*msp.MSPPrincipal
	var pols []*common.SignaturePolicy
	for i, consenter := range ords.ConsenterMapping {
		if consenter == nil {

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Fix the config update so the Orderer group retains its Orderers value
  2. Regenerate the config update from a complete current config
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at orderer/consensus/smartbft/configverifier.go:112 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/f35f085c16c7ce4a. Report an issue: GitHub.