Program: 48337
Project: 48337
Buggy source:
@Override @SuppressWarnings("String_Node_Str") public VcVirtualMachine replaceBadDisksExceptSystem(String clusterName,String groupName,String nodeName,List<DiskSpec> replacementDisks){
  ClusterCreate spec=configMgr.getClusterConfig(clusterName);
  NodeEntity node=clusterEntityMgr.findByName(spec.getName(),groupName,nodeName);
  List<DiskSpec> fullDiskList=getReplacedFullDisks(node.getVmName(),replacementDisks);
  VmSchema createSchema=VcVmUtil.getVmSchema(spec,groupName,fullDiskList,node.getNodeGroup().getCluster().getTemplateId(),Constants.ROOT_SNAPSTHOT_NAME);
  ReplaceVmBadDisksSP replaceVmDisksPrePowerOnSP=new ReplaceVmBadDisksSP(node.getMoId(),createSchema.diskSchema,VcVmUtil.getTargetRp(spec.getName(),groupName,node),getTargetDatastore(fullDiskList),getBadDataDiskEntities(node.getVmName()));
  try {
    Callable<Void>[] storeProceduresArray=new Callable[1];
    storeProceduresArray[0]=replaceVmDisksPrePowerOnSP;
    ExecutionResult[] result=Scheduler.executeStoredProcedures(com.vmware.aurora.composition.concurrent.Priority.BACKGROUND,storeProceduresArray,null);
    if (result == null) {
      logger.error("String_Node_Str" + nodeName);
      return null;
    }
    Throwable replacedDataDisksVmSpException=result[0].throwable;
    if (result[0].finished && replacedDataDisksVmSpException == null) {
      ReplaceVmBadDisksSP sp=(ReplaceVmBadDisksSP)storeProceduresArray[0];
      VcVirtualMachine vm=sp.getVm();
      AuAssert.check(vm != null);
      return vm;
    }
 else {
      logger.error("String_Node_Str" + node.getVmName(),replacedDataDisksVmSpException);
      throw ClusterHealServiceException.FAILED_TO_REPLACE_BAD_DATA_DISKS(node.getVmName());
    }
  }
 catch (  InterruptedException e) {
    logger.error("String_Node_Str" + nodeName,e);
    throw BddException.INTERNAL(e,e.getMessage());
  }
}

Fixed version (ground truth):
@Override @SuppressWarnings("String_Node_Str") public VcVirtualMachine replaceBadDisksExceptSystem(String clusterName,String groupName,String nodeName,List<DiskSpec> replacementDisks){
  ClusterCreate spec=configMgr.getClusterConfig(clusterName);
  NodeEntity node=clusterEntityMgr.findByName(spec.getName(),groupName,nodeName);
  List<DiskSpec> fullDiskList=getReplacedFullDisks(node.getVmName(),replacementDisks);
  VmSchema createSchema=VcVmUtil.getVmSchema(spec,groupName,fullDiskList,clusteringService.getTemplateVmId(),Constants.ROOT_SNAPSTHOT_NAME);
  boolean isMapDistro=clusterEntityMgr.findByName(clusterName).getDistroVendor().equalsIgnoreCase(Constants.MAPR_VENDOR);
  ReplaceVmBadDisksSP replaceVmDisksPrePowerOnSP=new ReplaceVmBadDisksSP(node.getMoId(),createSchema.diskSchema,VcVmUtil.getTargetRp(spec.getName(),groupName,node),getTargetDatastore(fullDiskList),getBadDataDiskEntities(node.getVmName()),isMapDistro);
  try {
    Callable<Void>[] storeProceduresArray=new Callable[1];
    storeProceduresArray[0]=replaceVmDisksPrePowerOnSP;
    ExecutionResult[] result=Scheduler.executeStoredProcedures(com.vmware.aurora.composition.concurrent.Priority.BACKGROUND,storeProceduresArray,null);
    if (result == null) {
      logger.error("String_Node_Str" + nodeName);
      return null;
    }
    Throwable replacedDataDisksVmSpException=result[0].throwable;
    if (result[0].finished && replacedDataDisksVmSpException == null) {
      ReplaceVmBadDisksSP sp=(ReplaceVmBadDisksSP)storeProceduresArray[0];
      VcVirtualMachine vm=sp.getVm();
      AuAssert.check(vm != null);
      return vm;
    }
 else {
      logger.error("String_Node_Str" + node.getVmName(),replacedDataDisksVmSpException);
      throw ClusterHealServiceException.FAILED_TO_REPLACE_BAD_DATA_DISKS(node.getVmName());
    }
  }
 catch (  InterruptedException e) {
    logger.error("String_Node_Str" + nodeName,e);
    throw BddException.INTERNAL(e,e.getMessage());
  }
}