Skip to content

Commit 0be7d71

Browse files
João JandreFabrício Duarte
authored andcommitted
Corrige compressão em multiplos storages secundários
1 parent 1d8a7cf commit 0be7d71

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

core/src/main/java/org/apache/cloudstack/backup/CompressBackupCommand.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public class CompressBackupCommand extends Command {
2828

2929
private List<DeltaMergeTreeTO> backupDeltasToCompress;
3030

31+
private List<String> backupChainImageStoreUrls;
32+
3133
private long minFreeStorage;
3234

3335
private Backup.CompressionLibrary compressionLib;
@@ -36,7 +38,8 @@ public class CompressBackupCommand extends Command {
3638

3739
private int rateLimit;
3840

39-
public CompressBackupCommand(List<DeltaMergeTreeTO> backupDeltasToCompress, long minFreeStorage, Backup.CompressionLibrary compressionLib, int coroutines, int rateLimit) {
41+
public CompressBackupCommand(List<DeltaMergeTreeTO> backupDeltasToCompress, List<String> backupChainImageStoreUrls, long minFreeStorage, Backup.CompressionLibrary compressionLib, int coroutines, int rateLimit) {
42+
this.backupChainImageStoreUrls = backupChainImageStoreUrls;
4043
this.backupDeltasToCompress = backupDeltasToCompress;
4144
this.minFreeStorage = minFreeStorage;
4245
this.compressionLib = compressionLib;
@@ -48,6 +51,10 @@ public List<DeltaMergeTreeTO> getBackupDeltasToCompress() {
4851
return backupDeltasToCompress;
4952
}
5053

54+
public List<String> getBackupChainImageStoreUrls() {
55+
return backupChainImageStoreUrls;
56+
}
57+
5158
public long getMinFreeStorage() {
5259
return minFreeStorage;
5360
}

plugins/backup/knib/src/main/java/org/apache/cloudstack/backup/KnibBackupProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,9 @@ public boolean startBackupCompression(long backupId, long hostId) {
751751

752752
BackupOfferingVO backupOfferingVO = backupOfferingDao.findByIdIncludingRemoved(backupVO.getBackupOfferingId());
753753
NativeBackupOfferingVO nativeBackupOfferingVO = nativeBackupOfferingDao.findByUuid(backupOfferingVO.getExternalId());
754-
CompressBackupCommand cmd = new CompressBackupCommand(deltasToCompressAndParents, minFreeStorage, nativeBackupOfferingVO.getCompressionLibrary(),
754+
List<NativeBackupJoinVO> backupChain = getBackupJoinParents(backupVO, true);
755+
List<String> chainImageStoreUrls = getChainImageStoreUrls(backupChain);
756+
CompressBackupCommand cmd = new CompressBackupCommand(deltasToCompressAndParents, chainImageStoreUrls, minFreeStorage, nativeBackupOfferingVO.getCompressionLibrary(),
755757
backupCompressionCoroutines.valueIn(hostVO.getClusterId()), backupCompressionRateLimit.valueIn(hostVO.getClusterId()));
756758
cmd.setWait(backupCompressionTimeout.valueIn(hostVO.getClusterId()));
757759
Answer answer = agentManager.easySend(hostId, cmd);

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCompressBackupCommandWrapper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.util.ArrayList;
3939
import java.util.HashMap;
4040
import java.util.List;
41+
import java.util.stream.Collectors;
4142

4243
@ResourceWrapper(handles = CompressBackupCommand.class)
4344
public class LibvirtCompressBackupCommandWrapper extends CommandWrapper<CompressBackupCommand, Answer, LibvirtComputingResource> {
@@ -57,6 +58,7 @@ public Answer execute(CompressBackupCommand command, LibvirtComputingResource se
5758

5859
KVMStoragePool mainSecStorage = storagePoolManager.getStoragePoolByURI(deltas.stream().findFirst().orElseThrow().getChild().getDataStore().getUrl());
5960
secondaryStorages.add(mainSecStorage);
61+
secondaryStorages.addAll(command.getBackupChainImageStoreUrls().stream().map(storagePoolManager::getStoragePoolByURI).collect(Collectors.toList()));
6062

6163
if (!checkAvailableStorage(command, mainSecStorage, storagePoolManager)) {
6264
return new Answer(command, false, "Not enough available space on secondary.");

0 commit comments

Comments
 (0)