Program: 49005
Project: 49005
Buggy source:
private String createVcResourcePools(List<BaseNode> vNodes){
  logger.info("String_Node_Str");
  String clusterName=vNodes.get(0).getClusterName();
  String uuid=ConfigInfo.getSerengetiUUID();
  String clusterRpName=uuid + "String_Node_Str" + clusterName;
  Map<String,List<String>> vcClusterRpNamesMap=new HashMap<String,List<String>>();
  Map<Long,List<String>> rpNodeGroupNamesMap=new HashMap<Long,List<String>>();
  Map<String,Integer> countResult=collectResourcePoolInfo(vNodes,vcClusterRpNamesMap,rpNodeGroupNamesMap);
  try {
    int resourcePoolNameCount=countResult.get("String_Node_Str");
    Callable<Void>[] clusterSPs=new Callable[resourcePoolNameCount];
    int i=0;
    for (    Entry<String,List<String>> vcClusterRpNamesEntry : vcClusterRpNamesMap.entrySet()) {
      String vcClusterName=vcClusterRpNamesEntry.getKey();
      List<String> resourcePoolNames=vcClusterRpNamesEntry.getValue();
      for (      String resourcePoolName : resourcePoolNames) {
        VcResourcePool parentVcResourcePool=VcResourceUtils.findRPInVCCluster(vcClusterName,resourcePoolName);
        CreateResourcePoolSP clusterSP=new CreateResourcePoolSP(parentVcResourcePool,clusterRpName);
        clusterSPs[i]=clusterSP;
        i++;
      }
    }
    logger.info("String_Node_Str");
    executeResourcePoolStoreProcedures(clusterSPs,"String_Node_Str",clusterName);
    int nodeGroupNameCount=countResult.get("String_Node_Str");
    Callable<Void>[] nodeGroupSPs=new Callable[nodeGroupNameCount];
    i=0;
    for (    Entry<String,List<String>> vcClusterRpNamesEntry : vcClusterRpNamesMap.entrySet()) {
      String vcClusterName=vcClusterRpNamesEntry.getKey();
      List<String> resourcePoolNames=vcClusterRpNamesEntry.getValue();
      for (      String resourcePoolName : resourcePoolNames) {
        VcResourcePool parentVcResourcePool=null;
        String vcRPName=CommonUtil.isBlank(resourcePoolName) ? clusterRpName : resourcePoolName + "String_Node_Str" + clusterRpName;
        parentVcResourcePool=VcResourceUtils.findRPInVCCluster(vcClusterName,vcRPName);
        long rpHashCode=vcClusterName.hashCode() ^ (vcClusterName + resourcePoolName).hashCode();
        for (        String nodeGroupName : rpNodeGroupNamesMap.get(rpHashCode)) {
          CreateResourcePoolSP nodeGroupSP=new CreateResourcePoolSP(parentVcResourcePool,nodeGroupName);
          nodeGroupSPs[i]=nodeGroupSP;
          i++;
        }
      }
    }
    logger.info("String_Node_Str");
    executeResourcePoolStoreProcedures(nodeGroupSPs,"String_Node_Str",clusterName);
  }
 catch (  Exception e) {
    logger.error("String_Node_Str",e);
    throw BddException.INTERNAL(e,e.getMessage());
  }
  return clusterRpName;
}

Fixed version (ground truth):
private String createVcResourcePools(List<BaseNode> vNodes){
  logger.info("String_Node_Str");
  String clusterName=vNodes.get(0).getClusterName();
  String uuid=ConfigInfo.getSerengetiUUID();
  String clusterRpName=uuid + "String_Node_Str" + clusterName;
  Map<String,List<String>> vcClusterRpNamesMap=new HashMap<String,List<String>>();
  Map<Long,List<String>> rpNodeGroupNamesMap=new HashMap<Long,List<String>>();
  Map<String,Integer> countResult=collectResourcePoolInfo(vNodes,vcClusterRpNamesMap,rpNodeGroupNamesMap);
  try {
    int resourcePoolNameCount=countResult.get("String_Node_Str");
    Callable<Void>[] clusterSPs=new Callable[resourcePoolNameCount];
    int i=0;
    for (    Entry<String,List<String>> vcClusterRpNamesEntry : vcClusterRpNamesMap.entrySet()) {
      String vcClusterName=vcClusterRpNamesEntry.getKey();
      List<String> resourcePoolNames=vcClusterRpNamesEntry.getValue();
      for (      String resourcePoolName : resourcePoolNames) {
        VcResourcePool parentVcResourcePool=VcResourceUtils.findRPInVCCluster(vcClusterName,resourcePoolName);
        CreateResourcePoolSP clusterSP=new CreateResourcePoolSP(parentVcResourcePool,clusterRpName);
        clusterSPs[i]=clusterSP;
        i++;
      }
    }
    logger.info("String_Node_Str");
    executeResourcePoolStoreProcedures(clusterSPs,"String_Node_Str",clusterName);
    int nodeGroupNameCount=countResult.get("String_Node_Str");
    Callable<Void>[] nodeGroupSPs=new Callable[nodeGroupNameCount];
    i=0;
    for (    Entry<String,List<String>> vcClusterRpNamesEntry : vcClusterRpNamesMap.entrySet()) {
      String vcClusterName=vcClusterRpNamesEntry.getKey();
      VcCluster vcCluster=VcResourceUtils.findVcCluster(vcClusterName);
      if (!vcCluster.getConfig().getDRSEnabled()) {
        continue;
      }
      List<String> resourcePoolNames=vcClusterRpNamesEntry.getValue();
      for (      String resourcePoolName : resourcePoolNames) {
        VcResourcePool parentVcResourcePool=null;
        String vcRPName=CommonUtil.isBlank(resourcePoolName) ? clusterRpName : resourcePoolName + "String_Node_Str" + clusterRpName;
        parentVcResourcePool=VcResourceUtils.findRPInVCCluster(vcClusterName,vcRPName);
        long rpHashCode=vcClusterName.hashCode() ^ (vcClusterName + resourcePoolName).hashCode();
        for (        String nodeGroupName : rpNodeGroupNamesMap.get(rpHashCode)) {
          CreateResourcePoolSP nodeGroupSP=new CreateResourcePoolSP(parentVcResourcePool,nodeGroupName);
          nodeGroupSPs[i]=nodeGroupSP;
          i++;
        }
      }
    }
    logger.info("String_Node_Str");
    executeResourcePoolStoreProcedures(nodeGroupSPs,"String_Node_Str",clusterName);
  }
 catch (  Exception e) {
    logger.error("String_Node_Str",e);
    throw BddException.INTERNAL(e,e.getMessage());
  }
  return clusterRpName;
}