mirror of https://github.com/apache/cloudstack.git
optimize scanStalledVms procedure
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
This commit is contained in:
parent
af53644a0b
commit
8f6c657159
|
|
@ -5012,20 +5012,19 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
|||
// and a VM stalls for status update, we will consider them to be powered off
|
||||
// (which is relatively safe to do so)
|
||||
final long stallThresholdInMs = VmJobStateReportInterval.value() * 2;
|
||||
final Date cutTime = new Date(DateUtil.currentGMTTime().getTime() - stallThresholdInMs);
|
||||
HostVO hostVO = _hostDao.findById(hostId);
|
||||
if (!Status.Up.equals(hostVO.getStatus())) {
|
||||
final long cutTime = new Date(DateUtil.currentGMTTime().getTime() - stallThresholdInMs).getTime();
|
||||
if (!_hostDao.isHostUp(hostId)) {
|
||||
return;
|
||||
}
|
||||
// FIXME: CPU & DB hotspot: listStalledVMInTransitionStateOnUpHost
|
||||
final List<VMInstanceVO> hostTransitionVms = _vmDao.listByHostAndState(hostId, State.Starting, State.Stopping, State.Migrating);
|
||||
final List<VMInstanceVO> mostLikelyStoppedVMs = listStalledVMInTransitionStateOnUpHost(hostTransitionVms, cutTime.getTime());
|
||||
final List<VMInstanceVO> mostLikelyStoppedVMs = listStalledVMInTransitionStateOnUpHost(hostTransitionVms, cutTime);
|
||||
for (final VMInstanceVO vm : mostLikelyStoppedVMs) {
|
||||
handlePowerOffReportWithNoPendingJobsOnVM(vm);
|
||||
}
|
||||
|
||||
// FIXME: CPU & DB hotspot: listVMInTransitionStateWithRecentReportOnUpHost
|
||||
final List<VMInstanceVO> vmsWithRecentReport = listVMInTransitionStateWithRecentReportOnUpHost(hostTransitionVms, cutTime.getTime());
|
||||
final List<VMInstanceVO> vmsWithRecentReport = listVMInTransitionStateWithRecentReportOnUpHost(hostTransitionVms, cutTime);
|
||||
for (final VMInstanceVO vm : vmsWithRecentReport) {
|
||||
if (vm.getPowerState() == PowerState.PowerOn) {
|
||||
handlePowerOnReportWithNoPendingJobsOnVM(vm);
|
||||
|
|
@ -5033,7 +5032,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
|||
handlePowerOffReportWithNoPendingJobsOnVM(vm);
|
||||
}
|
||||
}
|
||||
long elapsed = System.currentTimeMillis() - startTime;
|
||||
}
|
||||
|
||||
private void scanStalledVMInTransitionStateOnDisconnectedHosts() {
|
||||
|
|
|
|||
|
|
@ -165,4 +165,6 @@ public interface HostDao extends GenericDao<HostVO, Long>, StateDao<Status, Stat
|
|||
* @return ordered list of hypervisor versions
|
||||
*/
|
||||
List<String> listOrderedHostsHypervisorVersionsInDatacenter(long datacenterId, HypervisorType hypervisorType);
|
||||
|
||||
boolean isHostUp(long hostId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import java.sql.PreparedStatement;
|
|||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
|
@ -32,6 +33,7 @@ import javax.annotation.PostConstruct;
|
|||
import javax.inject.Inject;
|
||||
import javax.persistence.TableGenerator;
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.api.VgpuTypesInfo;
|
||||
|
|
@ -42,8 +44,8 @@ import com.cloud.dc.ClusterVO;
|
|||
import com.cloud.dc.dao.ClusterDao;
|
||||
import com.cloud.gpu.dao.HostGpuGroupsDao;
|
||||
import com.cloud.gpu.dao.VGPUTypesDao;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.DetailVO;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.Host.Type;
|
||||
import com.cloud.host.HostTagVO;
|
||||
import com.cloud.host.HostVO;
|
||||
|
|
@ -70,7 +72,6 @@ import com.cloud.utils.db.SearchCriteria.Op;
|
|||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.db.UpdateBuilder;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import java.util.Arrays;
|
||||
|
||||
@DB
|
||||
@TableGenerator(name = "host_req_sq", table = "op_host", pkColumnName = "id", valueColumnName = "sequence", allocationSize = 1)
|
||||
|
|
@ -1510,4 +1511,14 @@ public class HostDaoImpl extends GenericDaoBase<HostVO, Long> implements HostDao
|
|||
}
|
||||
return String.format(sqlFindHostInZoneToExecuteCommand, hostResourceStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHostUp(long hostId) {
|
||||
GenericSearchBuilder<HostVO, Status> sb = createSearchBuilder(Status.class);
|
||||
sb.and("id", sb.entity().getId(), Op.EQ);
|
||||
sb.selectFields(sb.entity().getStatus());
|
||||
SearchCriteria<Status> sc = sb.create();
|
||||
List<Status> statuses = customSearch(sc, null);
|
||||
return CollectionUtils.isNotEmpty(statuses) && Status.Up.equals(statuses.get(0));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue