Program: 17295
Project: 17295
Buggy source:
public static TaskSplitMetaInfo[] readSplitMetaInfo(Configuration conf,FileSystem fs) throws IOException {
  long maxMetaInfoSize=conf.getLong(MRJobConfig.SPLIT_METAINFO_MAXSIZE,MRJobConfig.DEFAULT_SPLIT_METAINFO_MAXSIZE);
  Path metaSplitFile=new Path(conf.get(TezJobConfig.TASK_LOCAL_RESOURCE_DIR),MRJobConfig.JOB_SPLIT_METAINFO);
  String jobSplitFile=MRJobConfig.JOB_SPLIT;
  File file=new File(metaSplitFile.toUri().getPath()).getAbsoluteFile();
  if (LOG.isDebugEnabled()) {
    LOG.debug("String_Node_Str" + file.getAbsolutePath() + "String_Node_Str"+ FileSystem.getDefaultUri(conf));
  }
  FileStatus fStatus=fs.getFileStatus(metaSplitFile);
  if (maxMetaInfoSize > 0 && fStatus.getLen() > maxMetaInfoSize) {
    throw new IOException("String_Node_Str" + maxMetaInfoSize + "String_Node_Str");
  }
  FSDataInputStream in=fs.open(metaSplitFile);
  byte[] header=new byte[JobSplit.META_SPLIT_FILE_HEADER.length];
  in.readFully(header);
  if (!Arrays.equals(JobSplit.META_SPLIT_FILE_HEADER,header)) {
    throw new IOException("String_Node_Str");
  }
  int vers=WritableUtils.readVInt(in);
  if (vers != JobSplit.META_SPLIT_VERSION) {
    in.close();
    throw new IOException("String_Node_Str" + vers);
  }
  int numSplits=WritableUtils.readVInt(in);
  JobSplit.TaskSplitMetaInfo[] allSplitMetaInfo=new JobSplit.TaskSplitMetaInfo[numSplits];
  for (int i=0; i < numSplits; i++) {
    JobSplit.SplitMetaInfo splitMetaInfo=new JobSplit.SplitMetaInfo();
    splitMetaInfo.readFields(in);
    JobSplit.TaskSplitIndex splitIndex=new JobSplit.TaskSplitIndex(new Path(conf.get(TezJobConfig.TASK_LOCAL_RESOURCE_DIR),jobSplitFile).toUri().toString(),splitMetaInfo.getStartOffset());
    allSplitMetaInfo[i]=new JobSplit.TaskSplitMetaInfo(splitIndex,splitMetaInfo.getLocations(),splitMetaInfo.getInputDataLength());
  }
  in.close();
  return allSplitMetaInfo;
}

Fixed version (ground truth):
public static TaskSplitMetaInfo[] readSplitMetaInfo(Configuration conf,FileSystem fs) throws IOException {
  long maxMetaInfoSize=conf.getLong(MRJobConfig.SPLIT_METAINFO_MAXSIZE,MRJobConfig.DEFAULT_SPLIT_METAINFO_MAXSIZE);
  String basePath=conf.get(TezJobConfig.TASK_LOCAL_RESOURCE_DIR,"String_Node_Str");
  LOG.info("String_Node_Str" + basePath);
  Path metaSplitFile=new Path(basePath,MRJobConfig.JOB_SPLIT_METAINFO);
  String jobSplitFile=MRJobConfig.JOB_SPLIT;
  File file=new File(metaSplitFile.toUri().getPath()).getAbsoluteFile();
  if (LOG.isDebugEnabled()) {
    LOG.debug("String_Node_Str" + file.getAbsolutePath() + "String_Node_Str"+ FileSystem.getDefaultUri(conf));
  }
  FileStatus fStatus=fs.getFileStatus(metaSplitFile);
  if (maxMetaInfoSize > 0 && fStatus.getLen() > maxMetaInfoSize) {
    throw new IOException("String_Node_Str" + maxMetaInfoSize + "String_Node_Str");
  }
  FSDataInputStream in=fs.open(metaSplitFile);
  byte[] header=new byte[JobSplit.META_SPLIT_FILE_HEADER.length];
  in.readFully(header);
  if (!Arrays.equals(JobSplit.META_SPLIT_FILE_HEADER,header)) {
    throw new IOException("String_Node_Str");
  }
  int vers=WritableUtils.readVInt(in);
  if (vers != JobSplit.META_SPLIT_VERSION) {
    in.close();
    throw new IOException("String_Node_Str" + vers);
  }
  int numSplits=WritableUtils.readVInt(in);
  JobSplit.TaskSplitMetaInfo[] allSplitMetaInfo=new JobSplit.TaskSplitMetaInfo[numSplits];
  for (int i=0; i < numSplits; i++) {
    JobSplit.SplitMetaInfo splitMetaInfo=new JobSplit.SplitMetaInfo();
    splitMetaInfo.readFields(in);
    JobSplit.TaskSplitIndex splitIndex=new JobSplit.TaskSplitIndex(new Path(basePath,jobSplitFile).toUri().toString(),splitMetaInfo.getStartOffset());
    allSplitMetaInfo[i]=new JobSplit.TaskSplitMetaInfo(splitIndex,splitMetaInfo.getLocations(),splitMetaInfo.getInputDataLength());
  }
  in.close();
  return allSplitMetaInfo;
}