hyperledger/fabric · error

unexpected delivey service policy: `%s`

Error message

unexpected delivey service policy: `%s`

What it means

Returned by StartDeliverForChannel when the consensus type is BFT and DeliverServiceConfig.Policy is neither 'cluster' nor 'simple'. The delivery service cannot choose a block-deliverer construction strategy, so channel delivery startup aborts.

Source

Thrown at core/deliverservice/deliveryclient.go:140

		return errors.WithMessagef(err, "failed to create block deliverer for channel `%s`", chainID)
	}
	oc, ok := bundle.OrdererConfig()
	if !ok {
		// This should never happen because it is checked in peer.createChannel()
		return errors.Errorf("failed to create block deliverer for channel `%s`, missing OrdererConfig", chainID)
	}

	switch ct := oc.ConsensusType(); ct {
	case "etcdraft":
		d.blockDeliverer, err = d.createBlockDelivererCFT(chainID, ledgerInfo)
	case "BFT":
		switch d.conf.DeliverServiceConfig.Policy {
		case "cluster":
			d.blockDeliverer, err = d.createBlockDelivererBFT(chainID, ledgerInfo)
		case "simple":
			d.blockDeliverer, err = d.createBlockDelivererCFT(chainID, ledgerInfo)
		default:
			err = errors.Errorf("unexpected delivey service policy: `%s`", d.conf.DeliverServiceConfig.Policy)
		}
	default:
		err = errors.Errorf("unexpected consensus type: `%s`", ct)
	}

	if err != nil {
		return err
	}

	if !d.conf.DeliverServiceConfig.BlockGossipEnabled {
		logger.Infow("This peer will retrieve blocks from ordering service (will not disseminate them to other peers in the organization)", "channel", chainID)
	} else {
		logger.Infow("This peer will retrieve blocks from ordering service and disseminate to other peers in the organization", "channel", chainID)
	}

	d.channelID = chainID

	go func() {

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Set peer.deliveryclient.policy to 'cluster' or 'simple' in the peer configuration
  2. Validate the policy value at config load time
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/deliverservice/deliveryclient.go:140 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04). Data as JSON: /api/errors/e81a05822d95d078. Report an issue: GitHub.