hyperledger/fabric · error
current config has orderer section, but new config does not
Error message
current config has orderer section, but new config does not
What it means
Config-update sanity check in Bundle.ValidateNew: the current channel config has an Orderer group but the proposed new config does not, which would silently delete the orderer section — not permitted.
Source
Thrown at common/channelconfig/bundle.go:85
// ApplicationConfig returns the configtxapplication.SharedConfig for the channel
// and whether the Application config exists.
func (b *Bundle) ApplicationConfig() (Application, bool) {
result := b.channelConfig.ApplicationConfig()
return result, result != nil
}
// ConfigtxValidator returns the configtx.Validator for the channel.
func (b *Bundle) ConfigtxValidator() configtx.Validator {
return b.configtxManager
}
// ValidateNew checks if a new bundle's contained configuration is valid to be derived from the current bundle.
// This allows checks of the nature "Make sure that the consensus type did not change".
func (b *Bundle) ValidateNew(nb Resources) error {
if oc, ok := b.OrdererConfig(); ok {
noc, ok := nb.OrdererConfig()
if !ok {
return errors.New("current config has orderer section, but new config does not")
}
// Prevent consensus-type migration when channel capabilities ConsensusTypeMigration is disabled
if !b.channelConfig.Capabilities().ConsensusTypeMigration() {
if oc.ConsensusType() != noc.ConsensusType() {
return errors.Errorf("attempted to change consensus type from %s to %s",
oc.ConsensusType(), noc.ConsensusType())
}
}
// When we move to capability V3_0 we insist on per Org endpoints for every org
isOldV3 := b.ChannelConfig().Capabilities().ConsensusTypeBFT()
isNewV3 := nb.ChannelConfig().Capabilities().ConsensusTypeBFT()
if !isOldV3 && isNewV3 {
for _, org := range noc.Organizations() {
if len(org.Endpoints()) == 0 {
return errors.Errorf("illegal orderer config update detected: endpoints of org %s are missing", org.Name())
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Include the full Orderer group in the new config being submitted
- If decommissioning orderers is intended, remove them via supported config-update procedures, not by dropping the group
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at common/channelconfig/bundle.go:85 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/34909516d166e0b3.
Report an issue: GitHub.