From ba750293cc8a4e32c65e7dbb6dab138556ce5736 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 29 Jun 2015 18:34:19 +0200 Subject: [PATCH] XenserverSnapshotStrategy: check if primary is null before proceeding in backupSnapshot In backupSnapshot, it checks for snapshot in primary but does not check in advance if it is null. Signed-off-by: Rohit Yadav --- .../cloudstack/storage/snapshot/XenserverSnapshotStrategy.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/XenserverSnapshotStrategy.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/XenserverSnapshotStrategy.java index 51f75bd0c33..aefb128d68a 100644 --- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/XenserverSnapshotStrategy.java +++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/XenserverSnapshotStrategy.java @@ -111,8 +111,9 @@ public class XenserverSnapshotStrategy extends SnapshotStrategyBase { boolean fullBackup = true; SnapshotDataStoreVO parentSnapshotOnBackupStore = snapshotStoreDao.findLatestSnapshotForVolume(snapshot.getVolumeId(), DataStoreRole.Image); + SnapshotDataStoreVO parentSnapshotOnPrimaryStore = snapshotStoreDao.findLatestSnapshotForVolume(snapshot.getVolumeId(), DataStoreRole.Primary); HypervisorType hypervisorType = snapshot.getBaseVolume().getHypervisorType(); - if (parentSnapshotOnBackupStore != null && hypervisorType == Hypervisor.HypervisorType.XenServer) { // CS does incremental backup only for XenServer + if (parentSnapshotOnBackupStore != null && parentSnapshotOnPrimaryStore != null && hypervisorType == Hypervisor.HypervisorType.XenServer) { // CS does incremental backup only for XenServer // In case of volume migration from one pool to other pool, CS should take full snapshot to avoid any issues with delta chain, // to check if this is a migrated volume, compare the current pool id of volume and store_id of oldest snapshot on primary for this volume.