{"record":{"id":"a63564f6def09c3c","repo":"hyperledger/fabric","slug":"nil-channel-group","errorCode":null,"errorMessage":"nil channel group","messagePattern":"nil channel group","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"common/configtx/validator.go","lineNumber":108,"sourceCode":"\t}\n\n\t// Illegal characters\n\tmatched := re.FindString(channelID)\n\tif len(matched) != len(channelID) {\n\t\treturn errors.Errorf(\"'%s' contains illegal characters\", channelID)\n\t}\n\n\treturn nil\n}\n\n// NewValidatorImpl constructs a new implementation of the Validator interface.\nfunc NewValidatorImpl(channelID string, config *cb.Config, namespace string, pm policies.Manager) (*ValidatorImpl, error) {\n\tif config == nil {\n\t\treturn nil, errors.Errorf(\"nil config parameter\")\n\t}\n\n\tif config.ChannelGroup == nil {\n\t\treturn nil, errors.Errorf(\"nil channel group\")\n\t}\n\n\tif err := ValidateChannelID(channelID); err != nil {\n\t\treturn nil, errors.Errorf(\"bad channel ID: %s\", err)\n\t}\n\n\tconfigMap, err := mapConfig(config.ChannelGroup, namespace)\n\tif err != nil {\n\t\treturn nil, errors.Errorf(\"error converting config to map: %s\", err)\n\t}\n\n\treturn &ValidatorImpl{\n\t\tnamespace:   namespace,\n\t\tpm:          pm,\n\t\tsequence:    config.Sequence,\n\t\tconfigMap:   configMap,\n\t\tchannelID:   channelID,\n\t\tconfigProto: config,","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/common/configtx/validator.go#L90-L126","documentation":"Returned by NewValidatorImpl when the config is non-nil but its ChannelGroup is nil. The channel group is the root of the config tree; without it there is nothing to validate, so construction of the validator aborts.","triggerScenarios":"Thrown at common/configtx/validator.go:108 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the config was built with a populated channel group","Rebuild the config from a valid profile or config envelope"],"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"}