diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/SnapshotDataStoreDao.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/SnapshotDataStoreDao.java index 19eac384ea8..9cde86df990 100644 --- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/SnapshotDataStoreDao.java +++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/SnapshotDataStoreDao.java @@ -44,5 +44,8 @@ StateDao listOnCache(long snapshotId); } diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java b/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java index 4b202f5949c..e2c48ea51e8 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java +++ b/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java @@ -31,6 +31,7 @@ import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailVO; import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao; import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; +import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreDao; import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; @@ -42,6 +43,8 @@ public class ImageStoreHelper { ImageStoreDao imageStoreDao; @Inject ImageStoreDetailsDao imageStoreDetailsDao; + @Inject + SnapshotDataStoreDao snapshotStoreDao; public ImageStoreVO createImageStore(Map params) { ImageStoreVO store = imageStoreDao.findByName((String) params.get("name")); @@ -127,6 +130,8 @@ public class ImageStoreHelper { ImageStoreVO nfsStore = imageStoreDao.findById(store.getId()); nfsStore.setRole(DataStoreRole.ImageCache); imageStoreDao.update(store.getId(), nfsStore); + // clear snapshot entry on primary store to make next snapshot become full snapshot + snapshotStoreDao.deleteSnapshotRecordsOnPrimary(); return true; } } diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/db/SnapshotDataStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/db/SnapshotDataStoreDaoImpl.java index 96a0c17548d..913112c5db4 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/image/db/SnapshotDataStoreDaoImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/image/db/SnapshotDataStoreDaoImpl.java @@ -170,6 +170,16 @@ public class SnapshotDataStoreDaoImpl extends GenericDaoBase sc = storeSearch.create(); + sc.setParameters("store_role", DataStoreRole.Primary); + Transaction txn = Transaction.currentTxn(); + txn.start(); + remove(sc); + txn.commit(); + } + @Override public SnapshotDataStoreVO findByStoreSnapshot(DataStoreRole role, long storeId, long snapshotId) { SearchCriteria sc = storeSnapshotSearch.create();