You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2014/01/08 15:36:00 UTC
git commit: updated refs/heads/4.3 to 4bb85cd
Updated Branches:
refs/heads/4.3 3d9a6ecbc -> 4bb85cd7f
CLOUDSTACK-5303: fix incorrect resource count (snapshot, secondary_storage)
(cherry picked from commit fa43987e43162c6f87ca8e341afe55e4f45ef058)
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4bb85cd7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4bb85cd7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4bb85cd7
Branch: refs/heads/4.3
Commit: 4bb85cd7f921d66eabe72d00dcde817affd48732
Parents: 3d9a6ec
Author: Wei Zhou <w....@leaseweb.com>
Authored: Thu Dec 5 19:30:18 2013 +0100
Committer: Wei Zhou <w....@leaseweb.com>
Committed: Wed Jan 8 15:34:51 2014 +0100
----------------------------------------------------------------------
.../schema/src/com/cloud/storage/dao/SnapshotDaoImpl.java | 2 ++
.../src/com/cloud/storage/snapshot/SnapshotManagerImpl.java | 9 ++++++---
2 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4bb85cd7/engine/schema/src/com/cloud/storage/dao/SnapshotDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/SnapshotDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/SnapshotDaoImpl.java
index 30a1350..3810ee4 100644
--- a/engine/schema/src/com/cloud/storage/dao/SnapshotDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/SnapshotDaoImpl.java
@@ -173,6 +173,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
CountSnapshotsByAccount = createSearchBuilder(Long.class);
CountSnapshotsByAccount.select(null, Func.COUNT, null);
CountSnapshotsByAccount.and("account", CountSnapshotsByAccount.entity().getAccountId(), SearchCriteria.Op.EQ);
+ CountSnapshotsByAccount.and("status", CountSnapshotsByAccount.entity().getState(), SearchCriteria.Op.NIN);
CountSnapshotsByAccount.and("removed", CountSnapshotsByAccount.entity().getRemoved(), SearchCriteria.Op.NULL);
CountSnapshotsByAccount.done();
@@ -268,6 +269,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
public Long countSnapshotsForAccount(long accountId) {
SearchCriteria<Long> sc = CountSnapshotsByAccount.create();
sc.setParameters("account", accountId);
+ sc.setParameters("status", State.Error, State.Destroyed);
return customSearch(sc, null).get(0);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4bb85cd7/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
index 40ae606..33873ac 100755
--- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@ -425,8 +425,10 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
snapshotCheck.getDataCenterId(), snapshotId, snapshotCheck.getName(), null, null, 0L,
snapshotCheck.getClass().getName(), snapshotCheck.getUuid());
}
- _resourceLimitMgr.decrementResourceCount(snapshotCheck.getAccountId(), ResourceType.snapshot);
- _resourceLimitMgr.decrementResourceCount(snapshotCheck.getAccountId(), ResourceType.secondary_storage, new Long(snapshotStoreRef.getSize()));
+ if (snapshotCheck.getState() != Snapshot.State.Error && snapshotCheck.getState() != Snapshot.State.Destroyed)
+ _resourceLimitMgr.decrementResourceCount(snapshotCheck.getAccountId(), ResourceType.snapshot);
+ if (snapshotCheck.getState() == Snapshot.State.BackedUp)
+ _resourceLimitMgr.decrementResourceCount(snapshotCheck.getAccountId(), ResourceType.secondary_storage, new Long(snapshotStoreRef.getSize()));
}
return result;
} catch (Exception e) {
@@ -948,7 +950,6 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_SNAPSHOT_CREATE, snapshot.getAccountId(),
snapshot.getDataCenterId(), snapshotId, snapshot.getName(), null, null,
volume.getSize(), snapshot.getClass().getName(), snapshot.getUuid());
- _resourceLimitMgr.incrementResourceCount(snapshotOwner.getId(), ResourceType.snapshot);
SnapshotDataStoreVO snapshotStoreRef = _snapshotStoreDao.findBySnapshot(snapshotId, DataStoreRole.Image);
// Correct the resource count of snapshot in case of delta snapshots.
_resourceLimitMgr.decrementResourceCount(snapshotOwner.getId(), ResourceType.secondary_storage, new Long(volume.getSize() - snapshotStoreRef.getSize()));
@@ -957,6 +958,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
}
} catch(Exception e) {
s_logger.debug("Failed to create snapshot", e);
+ _resourceLimitMgr.decrementResourceCount(snapshotOwner.getId(), ResourceType.snapshot);
_resourceLimitMgr.decrementResourceCount(snapshotOwner.getId(), ResourceType.secondary_storage, new Long(volume.getSize()));
throw new CloudRuntimeException("Failed to create snapshot", e);
}
@@ -1100,6 +1102,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
if (snapshot == null) {
throw new CloudRuntimeException("Failed to create snapshot for volume: " + volume.getId());
}
+ _resourceLimitMgr.incrementResourceCount(volume.getAccountId(), ResourceType.snapshot);
_resourceLimitMgr.incrementResourceCount(volume.getAccountId(), ResourceType.secondary_storage, new Long(volume.getSize()));
return snapshot;
}