{"record":{"id":"4cf436f7ee65b202","repo":"hyperledger/fabric","slug":"channel-s-doesn-t-exist-4cf436","errorCode":null,"errorMessage":"channel %s doesn't exist","messagePattern":"channel (.+?) doesn't exist","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"orderer/consensus/etcdraft/dispatcher.go","lineNumber":45,"sourceCode":"\n// ReceiverGetter obtains instances of MessageReceiver given a channel ID\ntype ReceiverGetter interface {\n\t// ReceiverByChain returns the MessageReceiver if it exists, or nil if it doesn't\n\tReceiverByChain(channelID string) MessageReceiver\n}\n\n// Dispatcher dispatches Submit and Step requests to the designated per chain instances\ntype Dispatcher struct {\n\tLogger        *flogging.FabricLogger\n\tChainSelector ReceiverGetter\n}\n\n// OnConsensus notifies the Dispatcher for a reception of a StepRequest from a given sender on a given channel\nfunc (d *Dispatcher) OnConsensus(channel string, sender uint64, request *orderer.ConsensusRequest) error {\n\treceiver := d.ChainSelector.ReceiverByChain(channel)\n\tif receiver == nil {\n\t\td.Logger.Warningf(\"An attempt to send a consensus request to a non existing channel (%s) was made by %d\", channel, sender)\n\t\treturn errors.Errorf(\"channel %s doesn't exist\", channel)\n\t}\n\treturn receiver.Consensus(request, sender)\n}\n\n// OnSubmit notifies the Dispatcher for a reception of a SubmitRequest from a given sender on a given channel\nfunc (d *Dispatcher) OnSubmit(channel string, sender uint64, request *orderer.SubmitRequest) error {\n\treceiver := d.ChainSelector.ReceiverByChain(channel)\n\tif receiver == nil {\n\t\td.Logger.Warningf(\"An attempt to submit a transaction to a non existing channel (%s) was made by %d\", channel, sender)\n\t\treturn errors.Errorf(\"channel %s doesn't exist\", channel)\n\t}\n\treturn receiver.Submit(request, sender)\n}\n","sourceCodeStart":27,"sourceCodeEnd":59,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/orderer/consensus/etcdraft/dispatcher.go#L27-L59","documentation":"Dispatcher guard: ReceiverByChain returned no MessageReceiver for the named channel, so an incoming consensus (Step/Submit) message has no chain to dispatch to. The local node is not running a chain for that channel (not joined, evicted, or channel name mismatch).","triggerScenarios":"Thrown at orderer/consensus/etcdraft/dispatcher.go:45 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Confirm this orderer has joined the channel","Wait for the chain to finish onboarding before sending consensus traffic","Check the requesting node's channel configuration"],"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"}