diff --git a/agent/src/main/java/com/cloud/agent/Agent.java b/agent/src/main/java/com/cloud/agent/Agent.java index b7c24e5126cb..a1834b6827be 100644 --- a/agent/src/main/java/com/cloud/agent/Agent.java +++ b/agent/src/main/java/com/cloud/agent/Agent.java @@ -968,9 +968,11 @@ private Answer migrateAgentToOtherMS(final MigrateAgentConnectionCommand cmd) { if (CollectionUtils.isNotEmpty(cmd.getMsList())) { processManagementServerList(cmd.getMsList(), cmd.getAvoidMsList(), cmd.getLbAlgorithm(), cmd.getLbCheckInterval(), false); } - Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("MigrateAgentConnection-Job")).schedule(() -> { + ScheduledExecutorService migrateAgentConnectionService = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("MigrateAgentConnection-Job")); + migrateAgentConnectionService.schedule(() -> { migrateAgentConnection(cmd.getAvoidMsList()); }, 3, TimeUnit.SECONDS); + migrateAgentConnectionService.shutdown(); } catch (Exception e) { String errMsg = "Migrate agent connection failed, due to " + e.getMessage(); logger.debug(errMsg, e); diff --git a/plugins/maintenance/src/main/java/org/apache/cloudstack/maintenance/ManagementServerMaintenanceManagerImpl.java b/plugins/maintenance/src/main/java/org/apache/cloudstack/maintenance/ManagementServerMaintenanceManagerImpl.java index 16cf14e1fb12..516ed40d48b2 100644 --- a/plugins/maintenance/src/main/java/org/apache/cloudstack/maintenance/ManagementServerMaintenanceManagerImpl.java +++ b/plugins/maintenance/src/main/java/org/apache/cloudstack/maintenance/ManagementServerMaintenanceManagerImpl.java @@ -622,6 +622,7 @@ protected void runInContext() { ManagementServerHostVO msHost = msHostDao.findByMsid(ManagementServerNode.getManagementServerId()); if (msHost == null) { logger.warn("Unable to find the management server, invalid node id"); + managementServerMaintenanceManager.cancelWaitForPendingJobs(); return; } msHostDao.updateState(msHost.getId(), State.Maintenance); @@ -658,6 +659,7 @@ protected void runInContext() { ManagementServerHostVO msHost = msHostDao.findByMsid(ManagementServerNode.getManagementServerId()); if (msHost == null) { logger.warn("Unable to find the management server, invalid node id"); + managementServerMaintenanceManager.cancelWaitForPendingJobs(); return; } if (totalAgents == 0) { @@ -693,6 +695,7 @@ protected void runInContext() { ManagementServerHostVO msHost = msHostDao.findByMsid(ManagementServerNode.getManagementServerId()); if (msHost == null) { logger.warn("Unable to find the management server, invalid node id"); + managementServerMaintenanceManager.cancelWaitForPendingJobs(); return; } msHostDao.updateState(msHost.getId(), State.ReadyToShutDown);