{"record":{"id":"663654e0e81f1ebf","repo":"hyperledger/fabric","slug":"channel-does-not-exist","errorCode":null,"errorMessage":"channel does not exist","messagePattern":"channel does not exist","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"orderer/common/msgprocessor/msgprocessor.go","lineNumber":28,"sourceCode":"\nimport (\n\t\"errors\"\n\n\t\"github.com/hyperledger/fabric-lib-go/common/flogging\"\n\tcb \"github.com/hyperledger/fabric-protos-go-apiv2/common\"\n)\n\nconst (\n\t// These should eventually be derived from the channel support once enabled\n\tmsgVersion = int32(0)\n\tepoch      = 0\n)\n\nvar logger = flogging.MustGetLogger(\"orderer.common.msgprocessor\")\n\n// ErrChannelDoesNotExist is returned by the system channel for transactions which\n// are not for the system channel ID and are not attempting to create a new channel\nvar ErrChannelDoesNotExist = errors.New(\"channel does not exist\")\n\n// ErrPermissionDenied is returned by errors which are caused by transactions\n// which are not permitted due to an authorization failure.\nvar ErrPermissionDenied = errors.New(\"permission denied\")\n\n// ErrMaintenanceMode is returned when transactions are rejected because the orderer is in \"maintenance mode\",\n// as defined by ConsensusType.State != NORMAL. This typically happens during consensus-type migration.\nvar ErrMaintenanceMode = errors.New(\"maintenance mode\")\n\n// Classification represents the possible message types for the system.\ntype Classification int\n\nconst (\n\t// NormalMsg is the class of standard (endorser or otherwise non-config) messages.\n\t// Messages of this type should be processed by ProcessNormalMsg.\n\tNormalMsg Classification = iota\n\n\t// ConfigUpdateMsg indicates messages of type CONFIG_UPDATE.","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/orderer/common/msgprocessor/msgprocessor.go#L10-L46","documentation":"ErrChannelDoesNotExist is a sentinel error returned by the system channel's msgprocessor when an incoming transaction targets a channel ID that is neither the system channel itself nor a channel-creation attempt. broadcast.ClassifyError maps it to HTTP-like status NOT_FOUND so the client knows the channel is unknown to this orderer.","triggerScenarios":"Submitting an envelope via the orderer broadcast API whose channel header channel_id does not match the system channel ID and which is not a valid channel-creation transaction (see also: application channels in later Fabric versions).","commonSituations":"Typos in the channel name in peer CLI commands or SDK config; sending application transactions to an orderer that only runs the system channel; client pointed at the wrong orderer organization.","solutions":["Verify the channel_id in the envelope matches an existing channel on that orderer (system channel name or a valid create request).","Fix the channel name typo in the CLI/SDK configuration and re-submit.","Join the target application channel to the orderer (or use the correct orderer for that channel) before broadcasting."],"exampleFix":"// before\nchannelName := \"mychanel\" // typo\n// after\nchannelName := \"mychannel\"","handlingStrategy":"try-catch","validationCode":"if channelID != systemChannelID && !isChannelCreateRequest(env) {\n    return fmt.Errorf(\"channel %q does not exist on this orderer\", channelID)\n}","typeGuard":null,"tryCatchPattern":"err := broadcastClient.Send(env)\nif errors.Cause(err) == statusError(cb.Status_NOT_FOUND) {\n    // channel unknown to this orderer: check channel name / orderer endpoint\n}","preventionTips":["Verify the channel name against the running network before broadcasting.","Point clients at the orderer that serves the target channel.","Distinguish channel-creation envelopes from normal transactions in client code."],"tags":["hyperledger-fabric","orderer","broadcast"],"backgroundTag":"channel-not-found","analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}