From d804b7597bc05c251ef273cee3ddef2560207ecb Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Thu, 9 Apr 2026 12:22:35 +0530 Subject: [PATCH] address orphan trnasfers Signed-off-by: Abhishek Kumar --- .../backup/KVMBackupExportServiceImpl.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java b/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java index 036ecd6c16e..3b160ce4885 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java @@ -637,11 +637,7 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup @Override public boolean cancelImageTransfer(long imageTransferId) { - ImageTransferVO imageTransfer = imageTransferDao.findById(imageTransferId); - if (imageTransfer == null) { - throw new CloudRuntimeException("Image transfer not found: " + imageTransferId); - } - // ToDo: Implement cancel logic + finalizeImageTransfer(imageTransferId); return true; } @@ -876,7 +872,6 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup response.setBackupId(backup.getUuid()); } Long volumeId = imageTransferVO.getDiskId(); - // ToDo: fix volume deletion leaving orphan image transfer record Volume volume = volumeDao.findByIdIncludingRemoved(volumeId); response.setDiskId(volume.getUuid()); response.setTransferUrl(imageTransferVO.getTransferUrl()); @@ -977,7 +972,8 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup for (ImageTransferVO transfer : hostTransfers) { VolumeVO volume = volumeDao.findById(transfer.getDiskId()); if (volume == null) { - logger.warn("Volume not found for image transfer: " + transfer.getUuid()); + logger.warn("Volume not found for image transfer: {}", transfer.getUuid()); + imageTransferDao.remove(transfer.getId()); // ToDo: confirm if this enough? continue; } transferVolumeMap.put(transfer.getId(), volume); @@ -986,7 +982,7 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup transferIds.add(transferId); if (volume.getPath() == null) { - logger.warn("Volume path is null for image transfer: " + transfer.getUuid()); + logger.warn("Volume path is null for image transfer: {}", transfer.getUuid()); continue; } String volumePath = getVolumePathForFileBasedBackend(volume); @@ -1004,7 +1000,7 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup if (answer == null || !answer.getResult() || MapUtils.isEmpty(answer.getProgressMap())) { logger.warn("Failed to get progress for transfers on host {}: {}", hostId, answer != null ? answer.getDetails() : "null answer"); - return; + return; // ToDo: return on continue? } for (ImageTransferVO transfer : hostTransfers) { String transferId = transfer.getUuid();