{"record":{"id":"ba6281c169bf3faa","repo":"hyperledger/fabric","slug":"bad-config-metadata-option-requestbatchmaxinterval","errorCode":null,"errorMessage":"bad config metadata option RequestBatchMaxInterval","messagePattern":"bad config metadata option RequestBatchMaxInterval","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"orderer/consensus/smartbft/util/util.go","lineNumber":30,"sourceCode":"\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}\n\tif config.ViewChangeResendInterval, err = time.ParseDuration(options.ViewChangeResendInterval); err != nil {\n\t\treturn config, errors.Wrap(err, \"bad config metadata option ViewChangeResendInterval\")\n\t}\n\tif config.ViewChangeTimeout, err = time.ParseDuration(options.ViewChangeTimeout); err != nil {\n\t\treturn config, errors.Wrap(err, \"bad config metadata option ViewChangeTimeout\")\n\t}","sourceCodeStart":12,"sourceCodeEnd":48,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/orderer/consensus/smartbft/util/util.go#L12-L48","documentation":"ConfigFromMetadataOptions wraps a time.ParseDuration failure on the smartbft Options.RequestBatchMaxInterval string. The value in the consensus metadata is not a valid Go duration (bad format, empty where required, or non-numeric).","triggerScenarios":"Thrown at orderer/consensus/smartbft/util/util.go:30 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set RequestBatchMaxInterval to a valid duration string (e.g. '50ms')","Validate options before submitting the channel config update"],"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"}