Program: 31817
Project: 31817
Buggy source:
/** 
 * Return first two lines split string array. This is used to detect data schema and check if data schema is the same as data.
 */
public static String[][] takeFirstTwoLines(String dataSetRawPath,String delimiter,SourceType source) throws IOException {
  if (dataSetRawPath == null || delimiter == null || source == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  String firstValidFile=null;
  FileSystem fs=ShifuFileUtils.getFileSystemBySourceType(source);
  FileStatus[] globStatus=fs.globStatus(new Path(dataSetRawPath),HIDDEN_FILE_FILTER);
  if (globStatus == null || globStatus.length == 0) {
    throw new IllegalArgumentException("String_Node_Str" + dataSetRawPath);
  }
 else {
    FileStatus[] listStatus=fs.listStatus(globStatus[0].getPath(),HIDDEN_FILE_FILTER);
    if (listStatus == null || listStatus.length == 0) {
      throw new IllegalArgumentException("String_Node_Str" + globStatus[0].getPath());
    }
    Arrays.sort(listStatus,new Comparator<FileStatus>(){
      @Override public int compare(      FileStatus o1,      FileStatus o2){
        return o1.getPath().toString().compareTo(o2.getPath().toString());
      }
    }
);
    firstValidFile=findFirstNonEmptyFile(listStatus);
  }
  log.info("String_Node_Str",firstValidFile);
  BufferedReader reader=null;
  try {
    reader=ShifuFileUtils.getReader(firstValidFile,source);
    String firstLine=reader.readLine();
    String[] firstArray=null;
    if (firstLine != null && firstLine.length() > 0) {
      List<String> list=new ArrayList<String>();
      for (      String unit : Splitter.on(delimiter).split(firstLine)) {
        list.add(unit);
      }
      firstArray=list.toArray(new String[0]);
    }
    String secondLine=reader.readLine();
    String[] secondArray=null;
    if (secondLine != null && secondLine.length() > 0) {
      List<String> list=new ArrayList<String>();
      for (      String unit : Splitter.on(delimiter).split(secondLine)) {
        list.add(unit);
      }
      secondArray=list.toArray(new String[0]);
    }
    String[][] results=new String[2][];
    results[0]=firstArray;
    results[1]=secondArray;
    return results;
  }
  finally {
    IOUtils.closeQuietly(reader);
  }
}

Fixed version (ground truth):
/** 
 * Return first two lines split string array. This is used to detect data schema and check if data schema is the same as data.
 */
public static String[][] takeFirstTwoLines(String dataSetRawPath,String delimiter,SourceType source) throws IOException {
  if (dataSetRawPath == null || delimiter == null || source == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  String firstValidFile=null;
  FileSystem fs=ShifuFileUtils.getFileSystemBySourceType(source);
  FileStatus[] globStatus=fs.globStatus(new Path(dataSetRawPath),HIDDEN_FILE_FILTER);
  if (globStatus == null || globStatus.length == 0) {
    throw new IllegalArgumentException("String_Node_Str" + dataSetRawPath);
  }
 else {
    for (    FileStatus fileStatus : globStatus) {
      RemoteIterator<LocatedFileStatus> iterator=fs.listFiles(fileStatus.getPath(),true);
      while (iterator.hasNext()) {
        LocatedFileStatus lfs=iterator.next();
        String name=lfs.getPath().getName();
        if (name.startsWith("String_Node_Str") || name.startsWith("String_Node_Str")) {
          continue;
        }
        if (lfs.getLen() > 1024L) {
          firstValidFile=lfs.getPath().toString();
          break;
        }
      }
      if (StringUtils.isNotBlank(firstValidFile)) {
        break;
      }
    }
  }
  log.info("String_Node_Str",firstValidFile);
  BufferedReader reader=null;
  try {
    reader=ShifuFileUtils.getReader(firstValidFile,source);
    String firstLine=reader.readLine();
    String[] firstArray=null;
    if (firstLine != null && firstLine.length() > 0) {
      List<String> list=new ArrayList<String>();
      for (      String unit : Splitter.on(delimiter).split(firstLine)) {
        list.add(unit);
      }
      firstArray=list.toArray(new String[0]);
    }
    String secondLine=reader.readLine();
    String[] secondArray=null;
    if (secondLine != null && secondLine.length() > 0) {
      List<String> list=new ArrayList<String>();
      for (      String unit : Splitter.on(delimiter).split(secondLine)) {
        list.add(unit);
      }
      secondArray=list.toArray(new String[0]);
    }
    String[][] results=new String[2][];
    results[0]=firstArray;
    results[1]=secondArray;
    return results;
  }
  finally {
    IOUtils.closeQuietly(reader);
  }
}