This is an automated email from the ASF dual-hosted git repository.

weizhou pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.20 by this push:
     new 2cd7d8a315e server: check limit on correct store during snapshot 
allocation (#11558)
2cd7d8a315e is described below

commit 2cd7d8a315e2917d90cf6994977937d3752a6785
Author: Abhishek Kumar <abhishek.mr...@gmail.com>
AuthorDate: Mon Sep 15 12:41:26 2025 +0530

    server: check limit on correct store during snapshot allocation (#11558)
    
    Fixes #11551
    
    Signed-off-by: Abhishek Kumar <abhishek.mr...@gmail.com>
---
 .../java/com/cloud/storage/snapshot/SnapshotManagerImpl.java     | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

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 a3fb8eda2fe..b0070890de2 100755
--- a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@ -1696,9 +1696,14 @@ public class SnapshotManagerImpl extends 
MutualExclusiveIdsManagerBase implement
         Type snapshotType = getSnapshotType(policyId);
         Account owner = _accountMgr.getAccount(volume.getAccountId());
 
+        ResourceType storeResourceType = ResourceType.secondary_storage;
+        if (!isBackupSnapshotToSecondaryForZone(volume.getDataCenterId()) ||
+                Snapshot.LocationType.PRIMARY.equals(locationType)) {
+            storeResourceType = ResourceType.primary_storage;
+        }
         try {
             _resourceLimitMgr.checkResourceLimit(owner, ResourceType.snapshot);
-            _resourceLimitMgr.checkResourceLimit(owner, 
ResourceType.secondary_storage, new Long(volume.getSize()).longValue());
+            _resourceLimitMgr.checkResourceLimit(owner, storeResourceType, 
volume.getSize());
         } catch (ResourceAllocationException e) {
             if (snapshotType != Type.MANUAL) {
                 String msg = String.format("Snapshot resource limit exceeded 
for account %s. Failed to create recurring snapshots", owner);
@@ -1749,7 +1754,7 @@ public class SnapshotManagerImpl extends 
MutualExclusiveIdsManagerBase implement
         }
         CallContext.current().putContextParameter(Snapshot.class, 
snapshot.getUuid());
         _resourceLimitMgr.incrementResourceCount(volume.getAccountId(), 
ResourceType.snapshot);
-        _resourceLimitMgr.incrementResourceCount(volume.getAccountId(), 
ResourceType.secondary_storage, new Long(volume.getSize()));
+        _resourceLimitMgr.incrementResourceCount(volume.getAccountId(), 
storeResourceType, volume.getSize());
         return snapshot;
     }
 

Reply via email to