{"record":{"id":"4fc63a9601269c0c","repo":"hyperledger/fabric","slug":"transaction-d-in-block-d-has-skipped-validation-4fc63a","errorCode":null,"errorMessage":"transaction %d in block %d has skipped validation","messagePattern":"transaction (.+?) in block (.+?) has skipped validation","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/committer/txvalidator/v20/validator.go","lineNumber":272,"sourceCode":"\t}\n\n\t// Initialize metadata structure\n\tprotoutil.InitBlockMetadata(block)\n\n\tblock.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER] = txsfltr\n\n\telapsedValidation := time.Since(startValidation) / time.Millisecond // duration in ms\n\tlogger.Infof(\"[%s] Validated block [%d] in %dms\", v.ChannelID, block.Header.Number, elapsedValidation)\n\n\treturn nil\n}\n\n// allValidated returns error if some of the validation flags have not been set\n// during validation\nfunc (v *TxValidator) allValidated(txsfltr txflags.ValidationFlags, block *common.Block) error {\n\tfor id, f := range txsfltr {\n\t\tif peer.TxValidationCode(f) == peer.TxValidationCode_NOT_VALIDATED {\n\t\t\treturn errors.Errorf(\"transaction %d in block %d has skipped validation\", id, block.Header.Number)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc markTXIdDuplicates(txids []string, txsfltr txflags.ValidationFlags) {\n\ttxidMap := make(map[string]struct{})\n\n\tfor id, txid := range txids {\n\t\tif txid == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t_, in := txidMap[txid]\n\t\tif in {\n\t\t\tlogger.Error(\"Duplicate txid\", txid, \"found, skipping\")\n\t\t\ttxsfltr.SetFlag(id, peer.TxValidationCode_DUPLICATE_TXID)","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/core/committer/txvalidator/v20/validator.go#L254-L290","documentation":"allValidated post-check: after block validation some transaction validation-code flags were never set, meaning those transactions were skipped without a verdict — an internal validator inconsistency rather than a per-transaction failure.","triggerScenarios":"Thrown at core/committer/txvalidator/v20/validator.go:272 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check peer logs for which tx indexes were skipped and why (e.g. MVCC validation or plugin errors)","Restart/redeploy the peer if the validator itself is misconfigured (e.g. missing validation plugin)"],"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"}