diff --git a/engine/schema/src/main/java/com/cloud/host/dao/HostDao.java b/engine/schema/src/main/java/com/cloud/host/dao/HostDao.java index d716be6cf97..df410d67c67 100644 --- a/engine/schema/src/main/java/com/cloud/host/dao/HostDao.java +++ b/engine/schema/src/main/java/com/cloud/host/dao/HostDao.java @@ -41,6 +41,8 @@ public interface HostDao extends GenericDao, StateDao implements HostDao return getCount(sc); } + @Override + public Integer countUpAndEnabledHostsInZone(long zoneId) { + SearchCriteria sc = HostTypeCountSearch.create(); + sc.setParameters("type", Type.Routing); + sc.setParameters("resourceState", ResourceState.Enabled); + sc.setParameters("dc", zoneId); + return getCount(sc); + } + @Override public List listByDataCenterId(long id) { return listByDataCenterIdAndState(id, ResourceState.Enabled); diff --git a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index c1d4a22bf77..9d765695115 100644 --- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -864,8 +864,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy } public boolean isZoneReady(Map zoneHostInfoMap, long dataCenterId) { - List hosts = hostDao.listByDataCenterId(dataCenterId); - if (CollectionUtils.isEmpty(hosts)) { + Integer totalUpAndEnabledHosts = hostDao.countUpAndEnabledHostsInZone(dataCenterId); + if (totalUpAndEnabledHosts != null && totalUpAndEnabledHosts < 1) { if (s_logger.isDebugEnabled()) { s_logger.debug("Zone " + dataCenterId + " has no host available which is enabled and in Up state"); } diff --git a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index 59ac4f44938..b50bedb9624 100644 --- a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -796,8 +796,8 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar } public boolean isZoneReady(Map zoneHostInfoMap, long dataCenterId) { - List hosts = _hostDao.listByDataCenterId(dataCenterId); - if (CollectionUtils.isEmpty(hosts)) { + Integer totalUpAndEnabledHosts = _hostDao.countUpAndEnabledHostsInZone(dataCenterId); + if (totalUpAndEnabledHosts != null && totalUpAndEnabledHosts < 1) { if (s_logger.isDebugEnabled()) { s_logger.debug("Zone " + dataCenterId + " has no host available which is enabled and in Up state"); }