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
- Check ledger/blkstorage health and retry joining or starting delivery
- 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.