Program: 31961
Project: 31961
Buggy source:
/** 
 * runner for statistics
 */
@Override public int run() throws Exception {
  log.info("String_Node_Str");
  long start=System.currentTimeMillis();
  try {
    setUp(ModelStep.STATS);
    CommonUtils.updateColumnConfigFlags(this.modelConfig,this.columnConfigList);
    syncDataToHdfs(modelConfig.getDataSet().getSource());
    AbstractStatsExecutor statsExecutor=null;
    if (modelConfig.isMapReduceRunMode()) {
      if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.DynamicBinning)) {
        statsExecutor=new DIBStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.MunroPat)) {
        statsExecutor=new MunroPatStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.MunroPatI)) {
        statsExecutor=new MunroPatIStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.SPDT)) {
        statsExecutor=new SPDTStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.SPDTI)) {
        statsExecutor=new SPDTIStatsExecutor(this,modelConfig,columnConfigList);
      }
 else {
        statsExecutor=new SPDTIStatsExecutor(this,modelConfig,columnConfigList);
      }
    }
 else     if (modelConfig.isLocalRunMode()) {
      statsExecutor=new AkkaStatsWorker(this,modelConfig,columnConfigList);
    }
 else {
      throw new ShifuException(ShifuErrorCode.ERROR_UNSUPPORT_MODE);
    }
    statsExecutor.doStats();
    syncDataToHdfs(modelConfig.getDataSet().getSource());
    clearUp(ModelStep.STATS);
  }
 catch (  Exception e) {
    log.error("String_Node_Str",e);
    return -1;
  }
  log.info("String_Node_Str",(System.currentTimeMillis() - start));
  return 0;
}

Fixed version (ground truth):
/** 
 * runner for statistics
 */
@Override public int run() throws Exception {
  log.info("String_Node_Str");
  long start=System.currentTimeMillis();
  try {
    setUp(ModelStep.STATS);
    CommonUtils.updateColumnConfigFlags(this.modelConfig,this.columnConfigList);
    saveColumnConfigListAndColumnStats(false);
    syncDataToHdfs(modelConfig.getDataSet().getSource());
    AbstractStatsExecutor statsExecutor=null;
    if (modelConfig.isMapReduceRunMode()) {
      if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.DynamicBinning)) {
        statsExecutor=new DIBStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.MunroPat)) {
        statsExecutor=new MunroPatStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.MunroPatI)) {
        statsExecutor=new MunroPatIStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.SPDT)) {
        statsExecutor=new SPDTStatsExecutor(this,modelConfig,columnConfigList);
      }
 else       if (modelConfig.getBinningAlgorithm().equals(ModelStatsConf.BinningAlgorithm.SPDTI)) {
        statsExecutor=new SPDTIStatsExecutor(this,modelConfig,columnConfigList);
      }
 else {
        statsExecutor=new SPDTIStatsExecutor(this,modelConfig,columnConfigList);
      }
    }
 else     if (modelConfig.isLocalRunMode()) {
      statsExecutor=new AkkaStatsWorker(this,modelConfig,columnConfigList);
    }
 else {
      throw new ShifuException(ShifuErrorCode.ERROR_UNSUPPORT_MODE);
    }
    statsExecutor.doStats();
    syncDataToHdfs(modelConfig.getDataSet().getSource());
    clearUp(ModelStep.STATS);
  }
 catch (  Exception e) {
    log.error("String_Node_Str",e);
    return -1;
  }
  log.info("String_Node_Str",(System.currentTimeMillis() - start));
  return 0;
}