Program: 32063
Project: 32063
Buggy source:
/** 
 * Calculate the PSI
 * @throws IOException
 */
private void runPSI() throws IOException {
  if (StringUtils.isNotEmpty(modelConfig.getPSIColumnName())) {
    ColumnConfig columnConfig=CommonUtils.findColumnConfigByName(columnConfigList,modelConfig.getPSIColumnName());
    if (columnConfig == null || !columnConfig.isMeta()) {
      log.warn("String_Node_Str");
      return;
    }
    log.info("String_Node_Str",columnConfig.getColumnName());
    Map<String,String> paramsMap=new HashMap<String,String>();
    paramsMap.put("String_Node_Str",CommonUtils.escapePigString(modelConfig.getDataSetDelimiter()));
    paramsMap.put("String_Node_Str",modelConfig.getPSIColumnName().trim());
    paramsMap.put("String_Node_Str","String_Node_Str");
    PigExecutor.getExecutor().submitJob(modelConfig,pathFinder.getAbsolutePath("String_Node_Str"),paramsMap);
    List<Scanner> scanners=ShifuFileUtils.getDataScanners(pathFinder.getPSIInfoPath(),modelConfig.getDataSet().getSource());
    for (    Scanner scanner : scanners) {
      while (scanner.hasNext()) {
        String[] output=scanner.nextLine().trim().split("String_Node_Str");
        try {
          int columnNum=Integer.parseInt(output[0]);
          ColumnConfig config=this.columnConfigList.get(columnNum);
          config.setPSI(Double.parseDouble(output[1]));
        }
 catch (        Exception e) {
          log.error("String_Node_Str",e);
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Calculate the PSI
 * @throws IOException
 */
private void runPSI() throws IOException {
  log.info("String_Node_Str",modelConfig.getPsiColumnName());
  if (StringUtils.isNotEmpty(modelConfig.getPsiColumnName())) {
    ColumnConfig columnConfig=CommonUtils.findColumnConfigByName(columnConfigList,modelConfig.getPsiColumnName());
    if (columnConfig == null || !columnConfig.isMeta()) {
      log.warn("String_Node_Str");
      return;
    }
    log.info("String_Node_Str",columnConfig.getColumnName());
    Map<String,String> paramsMap=new HashMap<String,String>();
    paramsMap.put("String_Node_Str",CommonUtils.escapePigString(modelConfig.getDataSetDelimiter()));
    paramsMap.put("String_Node_Str",modelConfig.getPsiColumnName().trim());
    paramsMap.put("String_Node_Str",Integer.toString(columnConfigList.size() / 10));
    paramsMap.put("String_Node_Str","String_Node_Str");
    PigExecutor.getExecutor().submitJob(modelConfig,pathFinder.getAbsolutePath("String_Node_Str"),paramsMap);
    List<Scanner> scanners=ShifuFileUtils.getDataScanners(pathFinder.getPSIInfoPath(),modelConfig.getDataSet().getSource());
    for (    Scanner scanner : scanners) {
      while (scanner.hasNext()) {
        String[] output=scanner.nextLine().trim().split("String_Node_Str");
        try {
          int columnNum=Integer.parseInt(output[0]);
          ColumnConfig config=this.columnConfigList.get(columnNum);
          config.setPSI(Double.parseDouble(output[1]));
          config.setUnitStats(Arrays.asList(StringUtils.split(output[2],CalculateStatsUDF.CATEGORY_VAL_SEPARATOR)));
        }
 catch (        Exception e) {
          log.error("String_Node_Str",e);
        }
      }
    }
  }
  log.info("String_Node_Str");
}