{"record":{"id":"dc4c648d416f9add","repo":"apache/hadoop","slug":"can-t-find-minimum-sources-required-by-reconstruct","errorCode":null,"errorMessage":"Can't find minimum sources required by reconstruction, block id: {}","messagePattern":"Can't find minimum sources required by reconstruction, block id: (.+?)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedReader.java","lineNumber":164,"sourceCode":"    // list of DNs for next iteration read.\n    successList = new int[minRequiredSources];\n\n    StripedBlockReader reader;\n    int nSuccess = 0;\n    for (int i = 0; i < sources.length && nSuccess < minRequiredSources; i++) {\n      reader = createReader(i, 0);\n      readers.add(reader);\n      if (reader.getBlockReader() != null) {\n        initOrVerifyChecksum(reader);\n        successList[nSuccess++] = i;\n      }\n    }\n\n    if (nSuccess < minRequiredSources) {\n      String error = \"Can't find minimum sources required by \"\n          + \"reconstruction, block id: \"\n          + reconstructor.getBlockGroup().getBlockId();\n      throw new IOException(error);\n    }\n  }\n\n  StripedBlockReader createReader(int idxInSources, long offsetInBlock) {\n    return new StripedBlockReader(this, datanode,\n        conf, liveIndices[idxInSources],\n        reconstructor.getBlock(liveIndices[idxInSources]),\n        sources[idxInSources], offsetInBlock);\n  }\n\n  private void initBufferSize() {\n    int bytesPerChecksum = checksum.getBytesPerChecksum();\n    // The bufferSize is flat to divide bytesPerChecksum\n    int readBufferSize = stripedReadBufferSize;\n    bufferSize = readBufferSize < bytesPerChecksum ? bytesPerChecksum :\n        readBufferSize - readBufferSize % bytesPerChecksum;\n  }\n","sourceCodeStart":146,"sourceCodeEnd":182,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedReader.java#L146-L182","documentation":"Error \"Can't find minimum sources required by reconstruction, block id: {}\" thrown in apache/hadoop.","triggerScenarios":"Erasure-coding read when fewer live source DataNodes than the minimum required by the EC policy hold the block's stripes, e.g. after multiple DataNode or disk failures.","commonSituations":"See trigger scenarios.","solutions":["Ensure at least the minimum number of source DataNodes required by the erasure coding policy are live and serving the block's stripe.","Run 'hdfs fsck' on the file to check the block state; recover or re-replicate missing internal blocks.","Check network and disk health on the DataNodes holding the stripe and bring them back online."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}