{"record":{"id":"eec930eb21cebd70","repo":"hyperledger/fabric","slug":"config-metadata-options-field-is-nil","errorCode":null,"errorMessage":"config metadata options field is nil","messagePattern":"config metadata options field is nil","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"orderer/consensus/smartbft/util/util.go","lineNumber":24,"sourceCode":"\npackage util\n\nimport (\n\t\"time\"\n\n\t\"github.com/hyperledger-labs/SmartBFT/pkg/types\"\n\t\"github.com/hyperledger/fabric-protos-go-apiv2/orderer/smartbft\"\n\t\"github.com/pkg/errors\"\n)\n\nfunc ConfigFromMetadataOptions(selfID uint64, options *smartbft.Options) (types.Configuration, error) {\n\tvar err error\n\n\tconfig := types.DefaultConfig\n\tconfig.SelfID = selfID\n\n\tif options == nil {\n\t\treturn config, errors.New(\"config metadata options field is nil\")\n\t}\n\n\tconfig.RequestBatchMaxCount = options.RequestBatchMaxCount\n\tconfig.RequestBatchMaxBytes = options.RequestBatchMaxBytes\n\tif config.RequestBatchMaxInterval, err = time.ParseDuration(options.RequestBatchMaxInterval); err != nil {\n\t\treturn config, errors.Wrap(err, \"bad config metadata option RequestBatchMaxInterval\")\n\t}\n\tconfig.IncomingMessageBufferSize = options.IncomingMessageBufferSize\n\tconfig.RequestPoolSize = options.RequestPoolSize\n\tif config.RequestForwardTimeout, err = time.ParseDuration(options.RequestForwardTimeout); err != nil {\n\t\treturn config, errors.Wrap(err, \"bad config metadata option RequestForwardTimeout\")\n\t}\n\tif config.RequestComplainTimeout, err = time.ParseDuration(options.RequestComplainTimeout); err != nil {\n\t\treturn config, errors.Wrap(err, \"bad config metadata option RequestComplainTimeout\")\n\t}\n\tif config.RequestAutoRemoveTimeout, err = time.ParseDuration(options.RequestAutoRemoveTimeout); err != nil {\n\t\treturn config, errors.Wrap(err, \"bad config metadata option RequestAutoRemoveTimeout\")\n\t}","sourceCodeStart":6,"sourceCodeEnd":42,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/orderer/consensus/smartbft/util/util.go#L6-L42","documentation":"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.","triggerScenarios":"Thrown at orderer/consensus/smartbft/util/util.go:24 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a fully populated Options block in the channel's consensus metadata","Regenerate the channel config with proper smartbft options"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}