{"record":{"id":"fe846740f91c3f0d","repo":"hyperledger/fabric","slug":"details-for-the-txid-s-not-available-ledger-bo","errorCode":null,"errorMessage":"details for the TXID [%s] not available. Ledger bootstrapped from a snapshot. First available block = [%d]","messagePattern":"details for the TXID \\[(.+?)\\] not available\\. Ledger bootstrapped from a snapshot\\. First available block = \\[(.+?)\\]","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"common/ledger/blkstorage/blockfile_mgr.go","lineNumber":547,"sourceCode":"\t}\n\tif blockNum < mgr.firstPossibleBlockNumberInBlockFiles() {\n\t\treturn nil, errors.Errorf(\n\t\t\t\"cannot serve block [%d]. The ledger is bootstrapped from a snapshot. First available block = [%d]\",\n\t\t\tblockNum, mgr.firstPossibleBlockNumberInBlockFiles(),\n\t\t)\n\t}\n\tloc, err := mgr.index.getBlockLocByBlockNum(blockNum)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn mgr.fetchBlock(loc)\n}\n\nfunc (mgr *blockfileMgr) retrieveBlockByTxID(txID string) (*common.Block, error) {\n\tlogger.Debugf(\"retrieveBlockByTxID() - txID = [%s]\", txID)\n\tloc, err := mgr.index.getBlockLocByTxID(txID)\n\tif err == errNilValue {\n\t\treturn nil, errors.Errorf(\n\t\t\t\"details for the TXID [%s] not available. Ledger bootstrapped from a snapshot. First available block = [%d]\",\n\t\t\ttxID, mgr.firstPossibleBlockNumberInBlockFiles(),\n\t\t)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn mgr.fetchBlock(loc)\n}\n\nfunc (mgr *blockfileMgr) retrieveTxValidationCodeByTxID(txID string) (peer.TxValidationCode, uint64, error) {\n\tlogger.Debugf(\"retrieveTxValidationCodeByTxID() - txID = [%s]\", txID)\n\tvalidationCode, blkNum, err := mgr.index.getTxValidationCodeByTxID(txID)\n\tif err == errNilValue {\n\t\treturn peer.TxValidationCode(-1), 0, errors.Errorf(\n\t\t\t\"details for the TXID [%s] not available. Ledger bootstrapped from a snapshot. First available block = [%d]\",\n\t\t\ttxID, mgr.firstPossibleBlockNumberInBlockFiles(),\n\t\t)","sourceCodeStart":529,"sourceCodeEnd":565,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/common/ledger/blkstorage/blockfile_mgr.go#L529-L565","documentation":"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.","triggerScenarios":"Thrown at common/ledger/blkstorage/blockfile_mgr.go:547 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Query a peer holding full ledger history for the transaction","Accept that pre-snapshot history is unavailable on this peer by design"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}