From a00734bd472b79ce2d1037a86152ec35bd047c6f Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Fri, 5 Jan 2024 13:06:48 +0530 Subject: [PATCH] Remove allocated snapshots / vm snapshots on start --- .../java/com/cloud/vm/snapshot/dao/VMSnapshotDao.java | 2 ++ .../java/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java | 8 +++++++- .../com/cloud/storage/snapshot/SnapshotManagerImpl.java | 5 +++++ .../java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java | 5 +++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDao.java b/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDao.java index 31999ef15d66..3bb83e7ec289 100644 --- a/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDao.java +++ b/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDao.java @@ -38,4 +38,6 @@ public interface VMSnapshotDao extends GenericDao, StateDao< VMSnapshotVO findByName(Long vmId, String name); List listByAccountId(Long accountId); + + List listAllByStatus(VMSnapshot.State... status); } diff --git a/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java b/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java index 1b1842dfd894..93d1c6355433 100644 --- a/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java @@ -20,7 +20,6 @@ import java.util.Date; import java.util.List; - import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -125,6 +124,13 @@ public List listByAccountId(Long accountId) { return listBy(sc, null); } + @Override + public List listAllByStatus(VMSnapshot.State... status) { + SearchCriteria sc = SnapshotStatusSearch.create(); + sc.setParameters("status", (Object[])status); + return listBy(sc, null); + } + @Override public boolean updateState(State currentState, Event event, State nextState, VMSnapshot vo, Object data) { diff --git a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java index 940860dd04d7..699a97f38a8f 100755 --- a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -1516,6 +1516,11 @@ public boolean configure(String name, Map params) throws Configu @Override public boolean start() { + //remove snapshots in allocated state + List allocatedSnapshots = _snapshotDao.listAllByStatus(Snapshot.State.Allocated); + for (SnapshotVO snapshot : allocatedSnapshots) { + _snapshotDao.remove(snapshot.getId()); + } //destroy snapshots in destroying state List snapshots = _snapshotDao.listAllByStatus(Snapshot.State.Destroying); for (SnapshotVO snapshotVO : snapshots) { diff --git a/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index a1afabcaaa28..769e0439595d 100644 --- a/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -200,6 +200,11 @@ public boolean configure(String name, Map params) throws Configu @Override public boolean start() { + //Remove VM Snapshots in allocated state + List allocatedVMSnapshots = _vmSnapshotDao.listAllByStatus(VMSnapshot.State.Allocated); + for (VMSnapshotVO vmSnapshot : allocatedVMSnapshots) { + _vmSnapshotDao.remove(vmSnapshot.getId()); + } return true; }