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
- Query a peer holding full ledger history for the transaction
- 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.