hyperledger/fabric · error
config metadata options field is nil
Error message
config metadata options field is nil
What it means
ConfigFromMetadataOptions guard: the Options field of the smartbft consensus metadata is nil, so there are no BFT options to map into the SmartBFT configuration. Defaults would silently misconfigure the node, so a nil options field is rejected.
Source
Thrown at orderer/consensus/smartbft/util/util.go:24
package util
import (
"time"
"github.com/hyperledger-labs/SmartBFT/pkg/types"
"github.com/hyperledger/fabric-protos-go-apiv2/orderer/smartbft"
"github.com/pkg/errors"
)
func ConfigFromMetadataOptions(selfID uint64, options *smartbft.Options) (types.Configuration, error) {
var err error
config := types.DefaultConfig
config.SelfID = selfID
if options == nil {
return config, errors.New("config metadata options field is nil")
}
config.RequestBatchMaxCount = options.RequestBatchMaxCount
config.RequestBatchMaxBytes = options.RequestBatchMaxBytes
if config.RequestBatchMaxInterval, err = time.ParseDuration(options.RequestBatchMaxInterval); err != nil {
return config, errors.Wrap(err, "bad config metadata option RequestBatchMaxInterval")
}
config.IncomingMessageBufferSize = options.IncomingMessageBufferSize
config.RequestPoolSize = options.RequestPoolSize
if config.RequestForwardTimeout, err = time.ParseDuration(options.RequestForwardTimeout); err != nil {
return config, errors.Wrap(err, "bad config metadata option RequestForwardTimeout")
}
if config.RequestComplainTimeout, err = time.ParseDuration(options.RequestComplainTimeout); err != nil {
return config, errors.Wrap(err, "bad config metadata option RequestComplainTimeout")
}
if config.RequestAutoRemoveTimeout, err = time.ParseDuration(options.RequestAutoRemoveTimeout); err != nil {
return config, errors.Wrap(err, "bad config metadata option RequestAutoRemoveTimeout")
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Provide a fully populated Options block in the channel's consensus metadata
- Regenerate the channel config with proper smartbft options
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at orderer/consensus/smartbft/util/util.go:24 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/eec930eb21cebd70.
Report an issue: GitHub.