Program: 107486
Project: 107486
Buggy source:
@Override @DB public VMTemplateVO createPrivateTemplate(VMTemplateVO template,Long userId,long snapshotId,String name,String description){
  VMTemplateVO privateTemplate=null;
  long templateId=template.getId();
  SnapshotVO snapshot=_snapshotDao.findById(snapshotId);
  if (snapshot != null) {
    Long volumeId=snapshot.getVolumeId();
    VolumeVO volume=_volsDao.findById(volumeId);
    StringBuilder userFolder=new StringBuilder();
    Formatter userFolderFormat=new Formatter(userFolder);
    userFolderFormat.format("String_Node_Str",snapshot.getAccountId());
    String uniqueName=getRandomPrivateTemplateName();
    long zoneId=volume.getDataCenterId();
    HostVO secondaryStorageHost=_storageMgr.getSecondaryStorageHost(zoneId);
    String secondaryStorageURL=_storageMgr.getSecondaryStorageURL(zoneId);
    if (secondaryStorageHost == null || secondaryStorageURL == null) {
      s_logger.warn("String_Node_Str");
      return null;
    }
    Command cmd=null;
    String backupSnapshotUUID=snapshot.getBackupSnapshotId();
    if (backupSnapshotUUID != null) {
      Long dcId=volume.getDataCenterId();
      Long accountId=volume.getAccountId();
      String origTemplateInstallPath=null;
      Long origTemplateId=volume.getTemplateId();
      if (origTemplateId != null) {
        VMTemplateHostVO vmTemplateHostVO=_templateHostDao.findByHostTemplate(secondaryStorageHost.getId(),origTemplateId);
        origTemplateInstallPath=vmTemplateHostVO.getInstallPath();
      }
      cmd=new CreatePrivateTemplateFromSnapshotCommand(_storageMgr.getPrimaryStorageNameLabel(volume),secondaryStorageURL,dcId,accountId,volumeId,backupSnapshotUUID,snapshot.getName(),origTemplateInstallPath,templateId,name);
    }
 else {
      cmd=new CreatePrivateTemplateCommand(secondaryStorageURL,templateId,volume.getAccountId(),name,uniqueName,_storageMgr.getPrimaryStorageNameLabel(volume),snapshot.getPath(),snapshot.getName(),userFolder.toString());
    }
    String basicErrMsg="String_Node_Str" + snapshot.getName();
    CreatePrivateTemplateAnswer answer=(CreatePrivateTemplateAnswer)_storageMgr.sendToHostsOnStoragePool(volume.getPoolId(),cmd,basicErrMsg);
    if ((answer != null) && answer.getResult()) {
      privateTemplate=_templateDao.findById(templateId);
      Long origTemplateId=volume.getTemplateId();
      VMTemplateVO origTemplate=null;
      if (origTemplateId != null) {
        origTemplate=_templateDao.findById(origTemplateId);
      }
      if ((origTemplate != null) && !Storage.ImageFormat.ISO.equals(origTemplate.getFormat())) {
        privateTemplate.setFileSystem(origTemplate.getFileSystem());
        privateTemplate.setRequiresHvm(origTemplate.requiresHvm());
        privateTemplate.setBits(origTemplate.getBits());
      }
 else {
        privateTemplate.setFileSystem(Storage.FileSystem.Unknown);
        privateTemplate.setRequiresHvm(true);
        privateTemplate.setBits(64);
      }
      String answerUniqueName=answer.getUniqueName();
      if (answerUniqueName != null) {
        privateTemplate.setUniqueName(answerUniqueName);
      }
 else {
        privateTemplate.setUniqueName(uniqueName);
      }
      ImageFormat format=answer.getImageFormat();
      if (format != null) {
        privateTemplate.setFormat(format);
      }
 else {
        privateTemplate.setFormat(ImageFormat.RAW);
      }
      _templateDao.update(templateId,privateTemplate);
      _templateDao.addTemplateToZone(privateTemplate,zoneId);
      VMTemplateHostVO templateHostVO=new VMTemplateHostVO(secondaryStorageHost.getId(),templateId);
      templateHostVO.setDownloadPercent(100);
      templateHostVO.setDownloadState(Status.DOWNLOADED);
      templateHostVO.setInstallPath(answer.getPath());
      templateHostVO.setLastUpdated(new Date());
      templateHostVO.setSize(answer.getVirtualSize());
      _templateHostDao.persist(templateHostVO);
      _accountMgr.incrementResourceCount(volume.getAccountId(),ResourceType.template);
    }
 else {
      _templateDao.remove(templateId);
    }
  }
  return privateTemplate;
}

Fixed version (ground truth):
@Override @DB public VMTemplateVO createPrivateTemplate(VMTemplateVO template,Long userId,long snapshotId,String name,String description){
  VMTemplateVO privateTemplate=null;
  long templateId=template.getId();
  SnapshotVO snapshot=_snapshotDao.findById(snapshotId);
  if (snapshot != null) {
    Long volumeId=snapshot.getVolumeId();
    VolumeVO volume=_volsDao.findById(volumeId);
    StringBuilder userFolder=new StringBuilder();
    Formatter userFolderFormat=new Formatter(userFolder);
    userFolderFormat.format("String_Node_Str",snapshot.getAccountId());
    String uniqueName=getRandomPrivateTemplateName();
    long zoneId=volume.getDataCenterId();
    HostVO secondaryStorageHost=_storageMgr.getSecondaryStorageHost(zoneId);
    String secondaryStorageURL=_storageMgr.getSecondaryStorageURL(zoneId);
    if (secondaryStorageHost == null || secondaryStorageURL == null) {
      s_logger.warn("String_Node_Str");
      return null;
    }
    Command cmd=null;
    String backupSnapshotUUID=snapshot.getBackupSnapshotId();
    if (backupSnapshotUUID != null) {
      Long dcId=volume.getDataCenterId();
      Long accountId=volume.getAccountId();
      String origTemplateInstallPath=null;
      if (ImageFormat.ISO != _snapshotMgr.getImageFormat(volumeId)) {
        Long origTemplateId=volume.getTemplateId();
        VMTemplateHostVO vmTemplateHostVO=_templateHostDao.findByHostTemplate(secondaryStorageHost.getId(),origTemplateId);
        origTemplateInstallPath=vmTemplateHostVO.getInstallPath();
      }
      cmd=new CreatePrivateTemplateFromSnapshotCommand(_storageMgr.getPrimaryStorageNameLabel(volume),secondaryStorageURL,dcId,accountId,volumeId,backupSnapshotUUID,snapshot.getName(),origTemplateInstallPath,templateId,name);
    }
 else {
      cmd=new CreatePrivateTemplateCommand(secondaryStorageURL,templateId,volume.getAccountId(),name,uniqueName,_storageMgr.getPrimaryStorageNameLabel(volume),snapshot.getPath(),snapshot.getName(),userFolder.toString());
    }
    String basicErrMsg="String_Node_Str" + snapshot.getName();
    CreatePrivateTemplateAnswer answer=(CreatePrivateTemplateAnswer)_storageMgr.sendToHostsOnStoragePool(volume.getPoolId(),cmd,basicErrMsg);
    if ((answer != null) && answer.getResult()) {
      privateTemplate=_templateDao.findById(templateId);
      Long origTemplateId=volume.getTemplateId();
      VMTemplateVO origTemplate=null;
      if (origTemplateId != null) {
        origTemplate=_templateDao.findById(origTemplateId);
      }
      if ((origTemplate != null) && !Storage.ImageFormat.ISO.equals(origTemplate.getFormat())) {
        privateTemplate.setFileSystem(origTemplate.getFileSystem());
        privateTemplate.setRequiresHvm(origTemplate.requiresHvm());
        privateTemplate.setBits(origTemplate.getBits());
      }
 else {
        privateTemplate.setFileSystem(Storage.FileSystem.Unknown);
        privateTemplate.setRequiresHvm(true);
        privateTemplate.setBits(64);
      }
      String answerUniqueName=answer.getUniqueName();
      if (answerUniqueName != null) {
        privateTemplate.setUniqueName(answerUniqueName);
      }
 else {
        privateTemplate.setUniqueName(uniqueName);
      }
      ImageFormat format=answer.getImageFormat();
      if (format != null) {
        privateTemplate.setFormat(format);
      }
 else {
        privateTemplate.setFormat(ImageFormat.RAW);
      }
      _templateDao.update(templateId,privateTemplate);
      _templateDao.addTemplateToZone(privateTemplate,zoneId);
      VMTemplateHostVO templateHostVO=new VMTemplateHostVO(secondaryStorageHost.getId(),templateId);
      templateHostVO.setDownloadPercent(100);
      templateHostVO.setDownloadState(Status.DOWNLOADED);
      templateHostVO.setInstallPath(answer.getPath());
      templateHostVO.setLastUpdated(new Date());
      templateHostVO.setSize(answer.getVirtualSize());
      _templateHostDao.persist(templateHostVO);
      _accountMgr.incrementResourceCount(volume.getAccountId(),ResourceType.template);
    }
 else {
      _templateDao.remove(templateId);
    }
  }
  return privateTemplate;
}