|
19 | 19 | package org.apache.cloudstack.vm.schedule; |
20 | 20 |
|
21 | 21 | import com.cloud.api.ApiGsonHelper; |
| 22 | +import com.cloud.cluster.ManagementServerHostVO; |
| 23 | +import com.cloud.cluster.dao.ManagementServerHostDao; |
22 | 24 | import com.cloud.event.ActionEventUtils; |
23 | 25 | import com.cloud.event.EventTypes; |
24 | 26 | import com.cloud.user.User; |
25 | 27 | import com.cloud.utils.DateUtil; |
26 | 28 | import com.cloud.utils.component.ComponentContext; |
27 | 29 | import com.cloud.utils.component.ManagerBase; |
| 30 | +import com.cloud.utils.db.Filter; |
28 | 31 | import com.cloud.utils.db.GlobalLock; |
29 | 32 | import com.cloud.vm.UserVmManager; |
30 | 33 | import com.cloud.vm.VirtualMachine; |
|
40 | 43 | import org.apache.cloudstack.framework.jobs.AsyncJobManager; |
41 | 44 | import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO; |
42 | 45 | import org.apache.cloudstack.managed.context.ManagedContextTimerTask; |
| 46 | +import org.apache.cloudstack.utils.identity.ManagementServerNode; |
43 | 47 | import org.apache.cloudstack.vm.schedule.dao.VMScheduleDao; |
44 | 48 | import org.apache.cloudstack.vm.schedule.dao.VMScheduledJobDao; |
45 | 49 | import org.apache.commons.lang.time.DateUtils; |
@@ -68,6 +72,9 @@ public class VMSchedulerImpl extends ManagerBase implements VMScheduler, Configu |
68 | 72 | private UserVmManager userVmManager; |
69 | 73 | @Inject |
70 | 74 | private AsyncJobManager asyncJobManager; |
| 75 | + @Inject |
| 76 | + private ManagementServerHostDao managementServerHostDao; |
| 77 | + |
71 | 78 | private AsyncJobDispatcher asyncJobDispatcher; |
72 | 79 | private Timer vmSchedulerTimer; |
73 | 80 | private Date currentTimestamp; |
@@ -190,6 +197,11 @@ public boolean start() { |
190 | 197 | final TimerTask schedulerPollTask = new ManagedContextTimerTask() { |
191 | 198 | @Override |
192 | 199 | protected void runInContext() { |
| 200 | + ManagementServerHostVO msHost = managementServerHostDao.findOneInUpState(new Filter(ManagementServerHostVO.class, "id", false, 0L, 1L)); |
| 201 | + if (msHost == null || (msHost.getMsid() != ManagementServerNode.getManagementServerId())) { |
| 202 | + logger.debug("Skipping the vm scheduler poll task on this management server"); |
| 203 | + return; |
| 204 | + } |
193 | 205 | try { |
194 | 206 | poll(new Date()); |
195 | 207 | } catch (final Throwable t) { |
|
0 commit comments