hyperledger/fabric · error

cannot get ledger height

Error message

cannot get ledger height

What it means

Returned by createBlockDelivererCFT when LedgerInfo.LedgerHeight() fails while provisioning the CFT block deliverer. The starting seek height is mandatory for resuming delivery, so a ledger-height query failure aborts deliverer creation.

Source

Thrown at core/deliverservice/deliveryclient.go:168

	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() {
		d.blockDeliverer.DeliverBlocks()
		finalizer()
	}()
	return nil
}

func (d *deliverServiceImpl) createBlockDelivererCFT(chainID string, ledgerInfo blocksprovider.LedgerInfo) (*blocksprovider.Deliverer, error) {
	height, err := ledgerInfo.LedgerHeight()
	if err != nil {
		return nil, errors.Wrapf(err, "cannot get ledger height")
	}
	currentBlockHash, err := ledgerInfo.GetCurrentBlockHash()
	if err != nil {
		return nil, errors.Wrapf(err, "cannot get current block hash")
	}
	if height == 0 {
		return nil, errors.New("cannot create a block deliverer because height=0")
	}
	ubv, err := deliverclient.NewBlockVerificationAssistantFromConfig(
		d.conf.ChannelConfig, height-1, currentBlockHash, chainID, d.conf.CryptoProvider, flogging.MustGetLogger("common.deliverclient.blockverification"),
	)
	if err != nil {
		return nil, err
	}
	logger.Debugf("Created an updatable block verifier from ChannelConfig, height: %d,`%+v`", height, ubv)

	logger.Infof("Creating a CFT (crash fault tolerant) BlockDeliverer for channel `%s`", chainID)
	dc := &blocksprovider.Deliverer{

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Check ledger/blkstorage health and retry joining or starting delivery
  2. Inspect the wrapped error for the underlying ledger failure
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at core/deliverservice/deliveryclient.go:168 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/a099bb78b96a5c00. Report an issue: GitHub.