From c6daeb4f78d5cd7c8865657aa49cce9bee6609aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Jandre?= <48719461+JoaoJandre@users.noreply.github.com> Date: Fri, 15 Aug 2025 11:22:50 -0300 Subject: [PATCH] fix snapshot physical size for primary storage (#11448) --- .../cloudstack/storage/snapshot/SnapshotObject.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotObject.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotObject.java index a3964bd461e..7602a142f88 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotObject.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/SnapshotObject.java @@ -172,10 +172,15 @@ public class SnapshotObject implements SnapshotInfo { @Override public long getPhysicalSize() { long physicalSize = 0; - SnapshotDataStoreVO snapshotStore = snapshotStoreDao.findByStoreSnapshot(DataStoreRole.Image, store.getId(), snapshot.getId()); - if (snapshotStore != null) { - physicalSize = snapshotStore.getPhysicalSize(); + for (DataStoreRole role : List.of(DataStoreRole.Image, DataStoreRole.Primary)) { + logger.trace("Retrieving snapshot [{}] size from {} storage.", snapshot.getUuid(), role); + SnapshotDataStoreVO snapshotStore = snapshotStoreDao.findByStoreSnapshot(role, store.getId(), snapshot.getId()); + if (snapshotStore != null) { + return snapshotStore.getPhysicalSize(); + } + logger.trace("Snapshot [{}] size not found on {} storage.", snapshot.getUuid(), role); } + logger.warn("Snapshot [{}] reference not found in any storage. There may be an inconsistency on the database.", snapshot.getUuid()); return physicalSize; }