From 337add8fb9be33b3de960fd1cc2e4eb57229f0cf Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 3 Sep 2024 16:01:46 +0530 Subject: [PATCH] server: PingRoutingCommand - apply some optimizations Signed-off-by: Abhishek Kumar --- .../cloud/vm/VirtualMachineManagerImpl.java | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java index 767e20db81e..e4410ff9b43 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -5037,11 +5037,20 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } private List listStalledVMInTransitionStateOnUpHost(final long hostId, final Date cutTime) { - final String sql = "SELECT i.id FROM vm_instance as i, host as h WHERE h.status = 'UP' " + - "AND h.id = ? AND i.power_state_update_time < ? AND i.host_id = h.id " + - "AND (i.state ='Starting' OR i.state='Stopping' OR i.state='Migrating') " + - "AND i.id NOT IN (SELECT w.vm_instance_id FROM vm_work_job AS w JOIN async_job AS j ON w.id = j.id WHERE j.job_status = ?)" + - "AND i.removed IS NULL"; + final String sql = "SELECT i.id\n" + + "FROM vm_instance AS i\n" + + "INNER JOIN host AS h ON i.host_id = h.id\n" + + "WHERE h.status = 'UP'\n" + + " AND h.id = ?\n" + + " AND i.power_state_update_time < ?\n" + + " AND i.state IN ('Starting', 'Stopping', 'Migrating')\n" + + " AND i.id NOT IN (\n" + + " SELECT vm_instance_id\n" + + " FROM vm_work_job AS w\n" + + " INNER JOIN async_job AS j ON w.id = j.id\n" + + " WHERE j.job_status = ?\n" + + " )\n" + + " AND i.removed IS NULL"; final List l = new ArrayList<>(); try (TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.CLOUD_DB)) { @@ -5063,11 +5072,17 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } private List listVMInTransitionStateWithRecentReportOnUpHost(final long hostId, final Date cutTime) { - final String sql = "SELECT i.id FROM vm_instance as i, host as h WHERE h.status = 'UP' " + - "AND h.id = ? AND i.power_state_update_time > ? AND i.host_id = h.id " + - "AND (i.state ='Starting' OR i.state='Stopping' OR i.state='Migrating') " + - "AND i.id NOT IN (SELECT w.vm_instance_id FROM vm_work_job AS w JOIN async_job AS j ON w.id = j.id WHERE j.job_status = ?)" + - "AND i.removed IS NULL"; + final String sql = "SELECT i.id\n" + + "FROM vm_instance AS i\n" + + "INNER JOIN host AS h ON i.host_id = h.id\n" + + "WHERE h.status = 'UP' \n" + + " AND h.id = ?\n" + + " AND i.power_state_update_time > ?\n" + + " AND i.state IN ('Starting', 'Stopping', 'Migrating')\n" + + " AND i.id NOT IN (SELECT vm_instance_id FROM vm_work_job AS w\n" + + " INNER JOIN async_job AS j ON w.id = j.id\n" + + " WHERE j.job_status = ?)\n" + + " AND i.removed IS NULL"; final List l = new ArrayList<>(); try (TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.CLOUD_DB)) { @@ -5090,11 +5105,16 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } private List listStalledVMInTransitionStateOnDisconnectedHosts(final Date cutTime) { - final String sql = "SELECT i.* FROM vm_instance as i, host as h WHERE h.status != 'UP' " + - "AND i.power_state_update_time < ? AND i.host_id = h.id " + - "AND (i.state ='Starting' OR i.state='Stopping' OR i.state='Migrating') " + - "AND i.id NOT IN (SELECT w.vm_instance_id FROM vm_work_job AS w JOIN async_job AS j ON w.id = j.id WHERE j.job_status = ?)" + - "AND i.removed IS NULL"; + final String sql = "SELECT i.*\n" + + "FROM vm_instance AS i\n" + + "INNER JOIN host AS h ON i.host_id = h.id\n" + + "WHERE h.status != 'UP' \n" + + " AND i.power_state_update_time < ?\n" + + " AND i.state IN ('Starting', 'Stopping', 'Migrating')\n" + + " AND i.id NOT IN (SELECT vm_instance_id FROM vm_work_job AS w\n" + + " INNER JOIN async_job AS j ON w.id = j.id\n" + + " WHERE j.job_status = ?)\n" + + " AND i.removed IS NUL"; final List l = new ArrayList<>(); try (TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.CLOUD_DB)) {