Program: 160379
Project: 160379
Buggy source:
public void start(){
  try {
    LOGGER.info("String_Node_Str");
    BimServerClientFactory factory=new JsonBimServerClientFactory(bimServer.getMetaDataManager(),address);
    remoteClient=factory.create(new UsernamePasswordAuthenticationInfo(username,password));
    final BimDatabase database=bimServer.getDatabase();
    DatabaseSession databaseSession=database.createSession();
    try {
      LOGGER.info("String_Node_Str");
      for (      SUser user : remoteClient.getServiceInterface().getAllUsers()) {
        createUser(databaseSession,user.getOid());
      }
      LOGGER.info("String_Node_Str");
      for (      SProject project : remoteClient.getBimsie1ServiceInterface().getAllProjects(false,false)) {
        createProject(databaseSession,project.getOid());
      }
      LOGGER.info("String_Node_Str");
      databaseSession.commit();
    }
 catch (    BimserverDatabaseException e) {
      LOGGER.error("String_Node_Str",e);
    }
 finally {
      databaseSession.close();
    }
    final BimServerClientInterface client=bimServer.getBimServerClientFactory().create(new UsernamePasswordAuthenticationInfo(username,password));
    Path incoming=Paths.get(path);
    final Map<GregorianCalendar,Key> comments=new TreeMap<>();
    DateFormat dateFormat=new SimpleDateFormat("String_Node_Str");
    for (    SProject project : remoteClient.getBimsie1ServiceInterface().getAllProjects(false,false)) {
      for (      SRevision revision : remoteClient.getBimsie1ServiceInterface().getAllRevisionsOfProject(project.getOid())) {
        GregorianCalendar gregorianCalendar=new GregorianCalendar();
        gregorianCalendar.setTime(revision.getDate());
        if (!revision.getComment().startsWith("String_Node_Str")) {
          User user=users.get(revision.getUserId());
          Path userFolder=incoming.resolve(user.getUsername());
          boolean found=false;
          for (          Path file : PathUtils.list(userFolder)) {
            if (file.getFileName().toString().endsWith(revision.getComment())) {
              String dateStr=file.getFileName().toString().substring(0,19);
              Date parse=dateFormat.parse(dateStr);
              GregorianCalendar fileDate=new GregorianCalendar();
              fileDate.setTime(parse);
              long millisDiff=Math.abs(fileDate.getTimeInMillis() - revision.getDate().getTime());
              if (millisDiff > 1000 * 60 * 120) {
                continue;
              }
              if (revision.getOid() == project.getLastRevisionId()) {
                comments.put(gregorianCalendar,new Key(file,project.getOid(),revision.getComment(),revision.getDate(),revision.getUserId()));
              }
              found=true;
              break;
            }
          }
          if (!found) {
            LOGGER.info("String_Node_Str" + revision.getComment());
          }
        }
      }
    }
    ExecutorService executorService=new ThreadPoolExecutor(1,1,1,TimeUnit.DAYS,new ArrayBlockingQueue<Runnable>(1000));
    for (    final GregorianCalendar gregorianCalendar : comments.keySet()) {
      executorService.submit(new Runnable(){
        @Override public void run(){
          Key key=comments.get(gregorianCalendar);
          LOGGER.info("String_Node_Str" + key.file.getFileName().toString() + "String_Node_Str"+ Formatters.bytesToString(key.file.toFile().length()));
          Project sProject=projects.get(key.poid);
          try {
            SDeserializerPluginConfiguration desserializer=client.getBimsie1ServiceInterface().getSuggestedDeserializerForExtension("String_Node_Str",sProject.getOid());
            client.checkin(sProject.getOid(),key.comment,desserializer.getOid(),false,true,key.file);
            SProject updatedProject=client.getBimsie1ServiceInterface().getProjectByPoid(sProject.getOid());
            DatabaseSession databaseSession=database.createSession();
            try {
              LOGGER.info("String_Node_Str");
              Project project=databaseSession.get(updatedProject.getOid(),OldQuery.getDefault());
              Revision revision=project.getLastRevision();
              User user=(User)databaseSession.get(users.get(key.userId).getOid(),OldQuery.getDefault());
              for (              Revision otherRevision : revision.getConcreteRevisions().get(0).getRevisions()) {
                otherRevision.load();
                otherRevision.setDate(key.date);
                otherRevision.setComment(otherRevision.getComment().replace("String_Node_Str",user.getName()));
                databaseSession.store(otherRevision);
              }
              DateFormat m=new SimpleDateFormat("String_Node_Str");
              LOGGER.info("String_Node_Str" + m.format(key.date));
              revision.setUser(user);
              revision.setDate(key.date);
              databaseSession.store(revision);
              databaseSession.commit();
            }
 catch (            BimserverDatabaseException|ServiceException e) {
              LOGGER.error("String_Node_Str",e);
            }
 finally {
              databaseSession.close();
            }
          }
 catch (          IOException|UserException|ServerException|PublicInterfaceNotFoundException e) {
            LOGGER.error("String_Node_Str",e);
          }
        }
      }
);
    }
    executorService.shutdown();
  }
 catch (  ServiceException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  ChannelConnectionException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  PublicInterfaceNotFoundException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  ParseException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  IOException e) {
    LOGGER.error("String_Node_Str",e);
  }
}

Fixed version (ground truth):
public void start(){
  try {
    LOGGER.info("String_Node_Str");
    BimServerClientFactory factory=new JsonBimServerClientFactory(bimServer.getMetaDataManager(),address);
    remoteClient=factory.create(new UsernamePasswordAuthenticationInfo(username,password));
    final BimDatabase database=bimServer.getDatabase();
    DatabaseSession databaseSession=database.createSession();
    try {
      LOGGER.info("String_Node_Str");
      for (      SUser user : remoteClient.getServiceInterface().getAllUsers()) {
        createUser(databaseSession,user.getOid());
      }
      LOGGER.info("String_Node_Str");
      for (      SProject project : remoteClient.getBimsie1ServiceInterface().getAllProjects(false,false)) {
        createProject(databaseSession,project.getOid());
      }
      LOGGER.info("String_Node_Str");
      databaseSession.commit();
    }
 catch (    BimserverDatabaseException e) {
      LOGGER.error("String_Node_Str",e);
    }
 finally {
      databaseSession.close();
    }
    final BimServerClientInterface client=bimServer.getBimServerClientFactory().create(new UsernamePasswordAuthenticationInfo(username,password));
    Path incoming=Paths.get(path);
    final Map<GregorianCalendar,Key> comments=new TreeMap<>();
    DateFormat dateFormat=new SimpleDateFormat("String_Node_Str");
    for (    SProject project : remoteClient.getBimsie1ServiceInterface().getAllProjects(false,false)) {
      for (      SRevision revision : remoteClient.getBimsie1ServiceInterface().getAllRevisionsOfProject(project.getOid())) {
        GregorianCalendar gregorianCalendar=new GregorianCalendar();
        gregorianCalendar.setTime(revision.getDate());
        if (!revision.getComment().startsWith("String_Node_Str")) {
          User user=users.get(revision.getUserId());
          Path userFolder=incoming.resolve(user.getUsername());
          boolean found=false;
          for (          Path file : PathUtils.list(userFolder)) {
            if (file.getFileName().toString().endsWith(revision.getComment())) {
              String dateStr=file.getFileName().toString().substring(0,19);
              Date parse=dateFormat.parse(dateStr);
              GregorianCalendar fileDate=new GregorianCalendar();
              fileDate.setTime(parse);
              long millisDiff=Math.abs(fileDate.getTimeInMillis() - revision.getDate().getTime());
              if (millisDiff > 1000 * 60 * 120) {
                continue;
              }
              if (revision.getOid() == project.getLastRevisionId()) {
                comments.put(gregorianCalendar,new Key(file,project.getOid(),revision.getComment(),revision.getDate(),revision.getUserId()));
              }
              found=true;
              break;
            }
          }
          if (!found) {
            LOGGER.info("String_Node_Str" + revision.getComment());
          }
        }
      }
    }
    ExecutorService executorService=new ThreadPoolExecutor(1,1,1,TimeUnit.DAYS,new ArrayBlockingQueue<Runnable>(1000));
    for (    final GregorianCalendar gregorianCalendar : comments.keySet()) {
      executorService.submit(new Runnable(){
        @Override public void run(){
          Key key=comments.get(gregorianCalendar);
          LOGGER.info("String_Node_Str" + key.file.getFileName().toString() + "String_Node_Str"+ Formatters.bytesToString(key.file.toFile().length()));
          Project sProject=projects.get(key.poid);
          try {
            SDeserializerPluginConfiguration desserializer=client.getBimsie1ServiceInterface().getSuggestedDeserializerForExtension("String_Node_Str",sProject.getOid());
            client.checkin(sProject.getOid(),key.comment,desserializer.getOid(),false,true,key.file);
            SProject updatedProject=client.getBimsie1ServiceInterface().getProjectByPoid(sProject.getOid());
            DatabaseSession databaseSession=database.createSession();
            try {
              LOGGER.info("String_Node_Str");
              Project project=databaseSession.get(updatedProject.getOid(),OldQuery.getDefault());
              Revision revision=project.getLastRevision();
              User user=(User)databaseSession.get(users.get(key.userId).getOid(),OldQuery.getDefault());
              for (              Revision otherRevision : revision.getConcreteRevisions().get(0).getRevisions()) {
                otherRevision.load();
                otherRevision.setDate(key.date);
                otherRevision.setComment(otherRevision.getComment().replace("String_Node_Str",user.getName()));
                databaseSession.store(otherRevision);
              }
              DateFormat m=new SimpleDateFormat("String_Node_Str");
              LOGGER.info("String_Node_Str" + m.format(key.date));
              revision.setUser(user);
              revision.setDate(key.date);
              databaseSession.store(revision);
              databaseSession.commit();
            }
 catch (            BimserverDatabaseException|ServiceException e) {
              LOGGER.error("String_Node_Str",e);
            }
 finally {
              databaseSession.close();
            }
          }
 catch (          IOException|UserException|ServerException|PublicInterfaceNotFoundException e) {
            LOGGER.error("String_Node_Str",e);
          }
        }
      }
);
    }
    executorService.shutdown();
  }
 catch (  ServiceException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  ChannelConnectionException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  PublicInterfaceNotFoundException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  ParseException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  IOException e) {
    LOGGER.error("String_Node_Str",e);
  }
catch (  BimServerClientException e1) {
    LOGGER.error("String_Node_Str",e1);
  }
}