Program: 144296
Project: 144296
Buggy source:
/** 
 * Loads n-Cardinality (1NF violating) vertex properties from the csv files
 * @param dir     Directory in which the files reside
 * @param vpMap   Map between vertices and their property files
 * @throws IOException              thrown if files / directory are inaccessible
 * @throws SchemaViolationException if file schema doesn't match workload schema
 */
private void loadVertexProperties(File dir,Map<String,String> vpMap) throws IOException, SchemaViolationException {
  logger.info("String_Node_Str");
  WorkLoadSchema s=this.workload.getSchema();
  for (  Map.Entry<String,String> entry : vpMap.entrySet()) {
    HashSet<String> fileSet=new HashSet<>();
    final String fNameSuffix=entry.getValue();
    fileSet.addAll(Arrays.asList(dir.list(new FilenameFilter(){
      @Override public boolean accept(      File dir,      String name){
        return name.matches(fNameSuffix + "String_Node_Str");
      }
    }
)));
    for (    String fName : fileSet) {
      logger.info("String_Node_Str",fName);
      BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(dir,fName)),"String_Node_Str"));
      String line=br.readLine();
      if (line == null)       throw new IOException("String_Node_Str" + fName);
      String[] header=line.split(CSVSPLIT);
      short suffix;
      String vLabel=entry.getKey().split(TUPLESPLIT)[0];
      try {
        validateVHeader(s,vLabel,header);
      }
 catch (      SchemaViolationException e) {
        br.close();
        throw e;
      }
      int rowLength=header.length;
      JanusGraphTransaction transaction=graph.newTransaction();
      try {
        int counter=0;
        while ((line=br.readLine()) != null) {
          if (counter % 1000 == 0) {
            logger.info("String_Node_Str" + counter);
          }
          String[] row=line.split(CSVSPLIT);
          Long vertexId=Long.parseLong(row[0]);
          Vertex vertex=transaction.traversal().V().has(header[0],vertexId).next();
          if (vertex == null) {
            logger.error("String_Node_Str",row[0],line);
            continue;
          }
          for (int i=1; i < rowLength; i++) {
            vertex.property(header[i],parseEntry(row[i],s.getVPropertyClass(vLabel,header[i]).getSimpleName()));
          }
          counter++;
        }
      }
 catch (      Exception e) {
        System.err.println("String_Node_Str" + entry.getKey());
        br.close();
        graph.close();
        e.printStackTrace();
      }
 finally {
        br.close();
      }
      transaction.commit();
    }
  }
  logger.info("String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Loads n-Cardinality (1NF violating) vertex properties from the csv files
 * @param dir     Directory in which the files reside
 * @param vpMap   Map between vertices and their property files
 * @throws IOException              thrown if files / directory are inaccessible
 * @throws SchemaViolationException if file schema doesn't match workload schema
 */
private void loadVertexProperties(File dir,Map<String,String> vpMap) throws IOException, SchemaViolationException {
  logger.info("String_Node_Str");
  WorkLoadSchema s=this.workload.getSchema();
  for (  Map.Entry<String,String> entry : vpMap.entrySet()) {
    HashSet<String> fileSet=new HashSet<>();
    final String fNameSuffix=entry.getValue();
    fileSet.addAll(Arrays.asList(dir.list(new FilenameFilter(){
      @Override public boolean accept(      File dir,      String name){
        return name.matches(fNameSuffix + "String_Node_Str");
      }
    }
)));
    for (    String fName : fileSet) {
      logger.info("String_Node_Str",fName);
      BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(dir,fName)),"String_Node_Str"));
      String line=br.readLine();
      if (line == null)       throw new IOException("String_Node_Str" + fName);
      String[] header=line.split(CSVSPLIT);
      String vLabel=entry.getKey().split(TUPLESPLIT)[0];
      try {
        validateVPHeader(s,vLabel,header);
      }
 catch (      SchemaViolationException e) {
        br.close();
        throw e;
      }
      int rowLength=header.length;
      JanusGraphTransaction transaction=graph.newTransaction();
      try {
        int counter=0;
        while ((line=br.readLine()) != null) {
          if (counter % 1000 == 0) {
            logger.info("String_Node_Str" + counter);
          }
          String[] row=line.split(CSVSPLIT);
          Long vertexId=Long.parseLong(row[0]);
          Vertex vertex=transaction.traversal().V().has(header[0],vertexId).next();
          if (vertex == null) {
            logger.error("String_Node_Str",row[0],line);
            continue;
          }
          vertex.property(vLabel + "String_Node_Str" + header[1],parseEntry(row[1],s.getVPropertyClass(vLabel,header[1]).getSimpleName()));
          counter++;
        }
      }
 catch (      Exception e) {
        System.err.println("String_Node_Str" + entry.getKey());
        br.close();
        graph.close();
        e.printStackTrace();
      }
 finally {
        br.close();
      }
      transaction.commit();
    }
  }
  logger.info("String_Node_Str");
}