hyperledger/fabric · error

details for the TXID [%s] not available. Ledger bootstrapped

Error message

details for the TXID [%s] not available. Ledger bootstrapped from a snapshot. First available block = [%d]

What it means

retrieveBlockByTxID guard: the transaction's block is below the first block retained on disk (snapshot-bootstrapped ledger), so historical transaction data cannot be served even though the TXID may be indexed elsewhere.

Source

Thrown at common/ledger/blkstorage/blockfile_mgr.go:547

	}
	if blockNum < mgr.firstPossibleBlockNumberInBlockFiles() {
		return nil, errors.Errorf(
			"cannot serve block [%d]. The ledger is bootstrapped from a snapshot. First available block = [%d]",
			blockNum, mgr.firstPossibleBlockNumberInBlockFiles(),
		)
	}
	loc, err := mgr.index.getBlockLocByBlockNum(blockNum)
	if err != nil {
		return nil, err
	}
	return mgr.fetchBlock(loc)
}

func (mgr *blockfileMgr) retrieveBlockByTxID(txID string) (*common.Block, error) {
	logger.Debugf("retrieveBlockByTxID() - txID = [%s]", txID)
	loc, err := mgr.index.getBlockLocByTxID(txID)
	if err == errNilValue {
		return nil, errors.Errorf(
			"details for the TXID [%s] not available. Ledger bootstrapped from a snapshot. First available block = [%d]",
			txID, mgr.firstPossibleBlockNumberInBlockFiles(),
		)
	}
	if err != nil {
		return nil, err
	}
	return mgr.fetchBlock(loc)
}

func (mgr *blockfileMgr) retrieveTxValidationCodeByTxID(txID string) (peer.TxValidationCode, uint64, error) {
	logger.Debugf("retrieveTxValidationCodeByTxID() - txID = [%s]", txID)
	validationCode, blkNum, err := mgr.index.getTxValidationCodeByTxID(txID)
	if err == errNilValue {
		return peer.TxValidationCode(-1), 0, errors.Errorf(
			"details for the TXID [%s] not available. Ledger bootstrapped from a snapshot. First available block = [%d]",
			txID, mgr.firstPossibleBlockNumberInBlockFiles(),
		)

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Query a peer holding full ledger history for the transaction
  2. Accept that pre-snapshot history is unavailable on this peer by design
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at common/ledger/blkstorage/blockfile_mgr.go:547 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/fe846740f91c3f0d. Report an issue: GitHub.