Updated Branches:
  refs/heads/object_store 252f384e8 -> 564d3d6fa

Fix CLOUDSTACK-2488: Delete iso async job is running forever.

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/564d3d6f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/564d3d6f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/564d3d6f

Branch: refs/heads/object_store
Commit: 564d3d6fa0fec0ab306c225b9b8fd80771c264c6
Parents: 252f384
Author: Min Chen <[email protected]>
Authored: Tue May 14 16:12:49 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Tue May 14 16:12:49 2013 -0700

----------------------------------------------------------------------
 .../driver/CloudStackImageStoreDriverImpl.java     |    5 +++-
 .../datastore/driver/S3ImageStoreDriverImpl.java   |    5 +++-
 .../driver/SwiftImageStoreDriverImpl.java          |    5 +++-
 .../src/com/cloud/api/query/dao/UserVmJoinDao.java |    2 +
 .../com/cloud/api/query/dao/UserVmJoinDaoImpl.java |   18 +++++++++++++++
 5 files changed, 32 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/564d3d6f/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
----------------------------------------------------------------------
diff --git 
a/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
 
b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
index 31fab32..6ebdb69 100644
--- 
a/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
+++ 
b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java
@@ -55,6 +55,8 @@ import com.cloud.agent.api.to.DataObjectType;
 import com.cloud.agent.api.to.DataStoreTO;
 import com.cloud.agent.api.to.DataTO;
 import com.cloud.agent.api.to.NfsTO;
+import com.cloud.api.query.dao.UserVmJoinDao;
+import com.cloud.api.query.vo.UserVmJoinVO;
 import com.cloud.event.EventTypes;
 import com.cloud.event.UsageEventUtils;
 import com.cloud.host.dao.HostDao;
@@ -100,6 +102,7 @@ public class CloudStackImageStoreDriverImpl implements 
ImageStoreDriver {
     private S3Manager _s3Mgr;
     @Inject AccountDao _accountDao;
     @Inject UserVmDao _userVmDao;
+    @Inject UserVmJoinDao _userVmJoinDao;
     @Inject
     SecondaryStorageVmManager _ssvmMgr;
     @Inject
@@ -277,7 +280,7 @@ public class CloudStackImageStoreDriverImpl implements 
ImageStoreDriver {
 
         UsageEventUtils.publishUsageEvent(eventType, account.getId(), sZoneId, 
templateId, null, null, null);
 
-        List<UserVmVO> userVmUsingIso = _userVmDao.listByIsoId(templateId);
+        List<UserVmJoinVO> userVmUsingIso = 
_userVmJoinDao.listActiveByIsoId(templateId);
         // check if there is any VM using this ISO.
         if (userVmUsingIso == null || userVmUsingIso.isEmpty()) {
              // get installpath of this template on image store

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/564d3d6f/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java
----------------------------------------------------------------------
diff --git 
a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java
 
b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java
index cbf55b6..9487bbe 100644
--- 
a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java
+++ 
b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java
@@ -59,6 +59,8 @@ import com.cloud.agent.api.to.DataObjectType;
 import com.cloud.agent.api.to.DataStoreTO;
 import com.cloud.agent.api.to.DataTO;
 import com.cloud.agent.api.to.S3TO;
+import com.cloud.api.query.dao.UserVmJoinDao;
+import com.cloud.api.query.vo.UserVmJoinVO;
 import com.cloud.event.EventTypes;
 import com.cloud.event.UsageEventUtils;
 import com.cloud.host.dao.HostDao;
@@ -106,6 +108,7 @@ public class S3ImageStoreDriverImpl implements 
ImageStoreDriver {
     private S3Manager _s3Mgr;
     @Inject AccountDao _accountDao;
     @Inject UserVmDao _userVmDao;
+    @Inject UserVmJoinDao _userVmJoinDao;
     @Inject
     SecondaryStorageVmManager _ssvmMgr;
     @Inject
@@ -289,7 +292,7 @@ public class S3ImageStoreDriverImpl implements 
ImageStoreDriver {
 
         UsageEventUtils.publishUsageEvent(eventType, account.getId(), sZoneId, 
templateId, null, null, null);
 
-        List<UserVmVO> userVmUsingIso = _userVmDao.listByIsoId(templateId);
+        List<UserVmJoinVO> userVmUsingIso = 
_userVmJoinDao.listActiveByIsoId(templateId);
         // check if there is any VM using this ISO.
         if (userVmUsingIso == null || userVmUsingIso.isEmpty()) {
              // get installpath of this template on image store

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/564d3d6f/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java
----------------------------------------------------------------------
diff --git 
a/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java
 
b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java
index 003152a..69e0349 100644
--- 
a/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java
+++ 
b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java
@@ -58,6 +58,8 @@ import com.cloud.agent.api.to.DataObjectType;
 import com.cloud.agent.api.to.DataStoreTO;
 import com.cloud.agent.api.to.DataTO;
 import com.cloud.agent.api.to.SwiftTO;
+import com.cloud.api.query.dao.UserVmJoinDao;
+import com.cloud.api.query.vo.UserVmJoinVO;
 import com.cloud.event.EventTypes;
 import com.cloud.event.UsageEventUtils;
 import com.cloud.host.dao.HostDao;
@@ -105,6 +107,7 @@ public class SwiftImageStoreDriverImpl implements 
ImageStoreDriver {
     private S3Manager _s3Mgr;
     @Inject AccountDao _accountDao;
     @Inject UserVmDao _userVmDao;
+    @Inject UserVmJoinDao _userVmJoinDao;
     @Inject
     SecondaryStorageVmManager _ssvmMgr;
     @Inject
@@ -281,7 +284,7 @@ public class SwiftImageStoreDriverImpl implements 
ImageStoreDriver {
 
         UsageEventUtils.publishUsageEvent(eventType, account.getId(), sZoneId, 
templateId, null, null, null);
 
-        List<UserVmVO> userVmUsingIso = _userVmDao.listByIsoId(templateId);
+        List<UserVmJoinVO> userVmUsingIso = 
_userVmJoinDao.listActiveByIsoId(templateId);
         // check if there is any VM using this ISO.
         if (userVmUsingIso == null || userVmUsingIso.isEmpty()) {
              // get installpath of this template on image store

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/564d3d6f/server/src/com/cloud/api/query/dao/UserVmJoinDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/UserVmJoinDao.java 
b/server/src/com/cloud/api/query/dao/UserVmJoinDao.java
index 2617a74..bfff839 100644
--- a/server/src/com/cloud/api/query/dao/UserVmJoinDao.java
+++ b/server/src/com/cloud/api/query/dao/UserVmJoinDao.java
@@ -36,4 +36,6 @@ public interface UserVmJoinDao extends 
GenericDao<UserVmJoinVO, Long> {
     List<UserVmJoinVO> newUserVmView(UserVm... userVms);
 
     List<UserVmJoinVO> searchByIds(Long... ids);
+
+    List<UserVmJoinVO> listActiveByIsoId(Long isoId);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/564d3d6f/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java 
b/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
index 6513ef5..2d280f1 100644
--- a/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
@@ -43,7 +43,9 @@ import com.cloud.uservm.UserVm;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
+import com.cloud.vm.UserVmVO;
 import com.cloud.vm.VmStats;
+import com.cloud.vm.VirtualMachine.State;
 
 
 @Component
@@ -55,6 +57,7 @@ public class UserVmJoinDaoImpl extends 
GenericDaoBase<UserVmJoinVO, Long> implem
     private ConfigurationDao  _configDao;
 
     private final SearchBuilder<UserVmJoinVO> VmDetailSearch;
+    private final SearchBuilder<UserVmJoinVO> activeVmByIsoSearch;
 
     protected UserVmJoinDaoImpl() {
 
@@ -64,9 +67,24 @@ public class UserVmJoinDaoImpl extends 
GenericDaoBase<UserVmJoinVO, Long> implem
 
         this._count = "select count(distinct id) from user_vm_view WHERE ";
 
+        activeVmByIsoSearch = createSearchBuilder();
+        activeVmByIsoSearch.and("isoId", 
activeVmByIsoSearch.entity().getIsoId(), SearchCriteria.Op.EQ);
+        activeVmByIsoSearch.and("stateNotIn", 
activeVmByIsoSearch.entity().getState(), SearchCriteria.Op.NIN);
+        activeVmByIsoSearch.done();
+    }
+
 
+    @Override
+    public List<UserVmJoinVO> listActiveByIsoId(Long isoId) {
+        SearchCriteria<UserVmJoinVO> sc = activeVmByIsoSearch.create();
+        sc.setParameters("isoId", isoId);
+        State[] states = new State[2];
+        states[0] = State.Error;
+        states[1] = State.Expunging;
+        return listBy(sc);
     }
 
+
     @Override
     public UserVmResponse newUserVmResponse(String objectName, UserVmJoinVO 
userVm, EnumSet<VMDetails> details, Account caller) {
         UserVmResponse userVmResponse = new UserVmResponse();

Reply via email to