From e8a4a19cc934e54c9a650eb42341c0cebfde60d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Aur=C3=A8le=20Brothier?= Date: Tue, 15 Nov 2016 09:39:11 +0100 Subject: [PATCH] CLOUDSTACK-9597: Should not fetch resource count for removed entity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-Aurèle Brothier --- .../configuration/dao/ResourceCountDaoImpl.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/com/cloud/configuration/dao/ResourceCountDaoImpl.java b/engine/schema/src/com/cloud/configuration/dao/ResourceCountDaoImpl.java index 879515a455e..f7cd3cbf86f 100644 --- a/engine/schema/src/com/cloud/configuration/dao/ResourceCountDaoImpl.java +++ b/engine/schema/src/com/cloud/configuration/dao/ResourceCountDaoImpl.java @@ -21,8 +21,12 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import javax.annotation.PostConstruct; import javax.inject.Inject; +import com.cloud.domain.DomainVO; +import com.cloud.user.AccountVO; +import com.cloud.utils.db.JoinBuilder; import org.springframework.stereotype.Component; import com.cloud.configuration.Resource; @@ -59,11 +63,21 @@ public class ResourceCountDaoImpl extends GenericDaoBase TypeSearch.done(); AccountSearch = createSearchBuilder(); + DomainSearch = createSearchBuilder(); + } + + @PostConstruct + protected void configure() { AccountSearch.and("accountId", AccountSearch.entity().getAccountId(), SearchCriteria.Op.NNULL); + SearchBuilder joinAccount = _accountDao.createSearchBuilder(); + joinAccount.and("notremoved", joinAccount.entity().getRemoved(), SearchCriteria.Op.NULL); + AccountSearch.join("account", joinAccount, AccountSearch.entity().getAccountId(), joinAccount.entity().getId(), JoinBuilder.JoinType.INNER); AccountSearch.done(); - DomainSearch = createSearchBuilder(); DomainSearch.and("domainId", DomainSearch.entity().getDomainId(), SearchCriteria.Op.NNULL); + SearchBuilder joinDomain = _domainDao.createSearchBuilder(); + joinDomain.and("notremoved", joinDomain.entity().getRemoved(), SearchCriteria.Op.NULL); + DomainSearch.join("domain", joinDomain, DomainSearch.entity().getDomainId(), joinDomain.entity().getId(), JoinBuilder.JoinType.INNER); DomainSearch.done(); }