hyperledger/fabric · error
ErrSystemChannelNotSupported
ErrSystemChannelNotSupported
Error message
system channel not supported
What it means
ErrSystemChannelNotSupported is returned by ValidateJoinBlock when the supplied config block contains a Consortiums section, i.e. it is a system-channel genesis block. Channel participation only accepts application channel config blocks, and joining with a system-channel block is rejected with this error.
Source
Thrown at orderer/common/types/errors.go:17
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package types
import "github.com/pkg/errors"
// ErrSystemChannelExists is returned when trying to join or remove an application channel when the system channel exists.
//
// Deprecated: system channel no longer supported
var ErrSystemChannelExists = errors.New("system channel exists")
// ErrSystemChannelNotSupported is returned when trying to join with a system channel config block.
var ErrSystemChannelNotSupported = errors.New("system channel not supported")
// ErrChannelAlreadyExists is returned when trying to join a app channel that already exists (when the system channel does not
// exist), or when trying to join the system channel when it already exists.
var ErrChannelAlreadyExists = errors.New("channel already exists")
// ErrAppChannelsAlreadyExists is returned when trying to join a system channel (that does not exist) when application channels
// already exist.
var ErrAppChannelsAlreadyExists = errors.New("application channels already exist")
// ErrChannelNotExist is returned when trying to remove or list a channel that does not exist
var ErrChannelNotExist = errors.New("channel does not exist")
// ErrChannelPendingRemoval is returned when trying to remove or list a channel that is being removed.
var ErrChannelPendingRemoval = errors.New("channel pending removal")
// ErrChannelRemovalFailure is returned when a removal attempt failure has been recorded.
var ErrChannelRemovalFailure = errors.New("channel removal failure")
View on GitHub (pinned to 2736b63f8f)
Solutions
- Generate an application-channel genesis block: 'configtxgen -profile <AppProfile> -channelID <channel> -outputBlock <file>'
- Ensure the configtx.yaml profile used does not include Consortiums (app-channel profiles reference consortium, not define it)
- Retry the join with the app-channel block
Example fix
// before configtxgen -profile SampleSingleMSPKafka -outputBlock sys.block -channelID test-system-channel osnadmin channel join --channelID mychannel --config-block sys.block # not supported // after configtxgen -profile TwoOrgsChannel -outputBlock app.block -channelID mychannel osnadmin channel join --channelID mychannel --config-block app.block
Defensive patterns
Strategy: validation
Validate before calling
bundle, err := channelconfig.NewBundleFromEnvelope(env, bccsp)
if err == nil {
if _, isSys := bundle.ConsortiumsConfig(); isSys {
return errors.New("join block must be an app-channel config block")
}
} Try / catch
if errors.Is(err, types.ErrSystemChannelNotSupported) {
// regenerate the block from an app-channel profile
} Prevention
- Generate join blocks only from app-channel profiles (no Consortiums)
- Never reuse the legacy system channel genesis block for osnadmin joins
- Inspect blocks with configtxgen -inspectBlock before joining
When it happens
Trigger: POST /participation/v1/channels with a genesis block generated from a system-channel profile; ValidateJoinBlock detects bundle.ConsortiumsConfig() exists and wraps this error.
Common situations: Using 'configtxgen -profile SampleSystemChannel' (or legacy two-system-channel setups) output as the --config-block for osnadmin join; copying the old system channel genesis block out of habit during migration.
Related errors
- empty block data
- the block isn't a system channel block because it lacks Cons
- ErrSystemChannelExists
- ErrAppChannelsAlreadyExists
- failed extracting envelope from block
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/bef71ae81d849e15.
Report an issue: GitHub.