{"record":{"id":"ae51ab833987cfdd","repo":"hyperledger/fabric","slug":"message-is-of-type-that-is-no-longer-supported","errorCode":null,"errorMessage":"message is of type that is no longer supported","messagePattern":"message is of type that is no longer supported","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"orderer/common/multichannel/registrar.go","lineNumber":328,"sourceCode":"\tif err != nil {\n\t\treturn nil, false, nil, errors.WithMessage(err, \"could not determine channel ID\")\n\t}\n\n\tcs := r.GetChain(chdr.ChannelId)\n\t// Used to be new channel creation with the system channel, but now channels are created with the channel\n\t// participation API only, so it is just a wrong channel name.\n\tif cs == nil {\n\t\treturn chdr, false, nil, types.ErrChannelNotExist\n\t}\n\n\tisConfig := false\n\tswitch cs.ClassifyMsg(chdr) {\n\tcase msgprocessor.ConfigUpdateMsg:\n\t\tisConfig = true\n\tcase msgprocessor.ConfigMsg:\n\t\treturn chdr, false, nil, errors.New(\"message is of type that cannot be processed directly\")\n\tcase msgprocessor.UnsupportedMsg:\n\t\treturn chdr, false, nil, errors.New(\"message is of type that is no longer supported\")\n\tdefault:\n\t}\n\n\treturn chdr, isConfig, cs, nil\n}\n\n// GetConsensusChain retrieves the consensus.Chain of the channel, if it exists.\nfunc (r *Registrar) GetConsensusChain(chainID string) consensus.Chain {\n\tr.lock.RLock()\n\tdefer r.lock.RUnlock()\n\n\tcs, exists := r.chains[chainID]\n\tif !exists {\n\t\treturn nil\n\t}\n\n\treturn cs.Chain\n}","sourceCodeStart":310,"sourceCodeEnd":346,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/orderer/common/multichannel/registrar.go#L310-L346","documentation":"BroadcastChannelSupport guard: the message classified as ConfigMsg — the old-style channel-creation/config message used with the removed system channel. Since channels are now created only via the channel participation API, this message type is explicitly rejected as no longer supported.","triggerScenarios":"Thrown at orderer/common/multichannel/registrar.go:328 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Create channels with osnadmin and the channel participation API instead","Send config updates as CONFIG_UPDATE envelopes through the standard flow"],"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"}