Skip to content

Commit 7ecfb41

Browse files
committed
server: run the vm scheduler poll task on only one management server
1 parent db5b6a5 commit 7ecfb41

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

server/src/main/java/org/apache/cloudstack/vm/schedule/VMSchedulerImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@
1919
package org.apache.cloudstack.vm.schedule;
2020

2121
import com.cloud.api.ApiGsonHelper;
22+
import com.cloud.cluster.ManagementServerHostVO;
23+
import com.cloud.cluster.dao.ManagementServerHostDao;
2224
import com.cloud.event.ActionEventUtils;
2325
import com.cloud.event.EventTypes;
2426
import com.cloud.user.User;
2527
import com.cloud.utils.DateUtil;
2628
import com.cloud.utils.component.ComponentContext;
2729
import com.cloud.utils.component.ManagerBase;
30+
import com.cloud.utils.db.Filter;
2831
import com.cloud.utils.db.GlobalLock;
2932
import com.cloud.vm.UserVmManager;
3033
import com.cloud.vm.VirtualMachine;
@@ -40,6 +43,7 @@
4043
import org.apache.cloudstack.framework.jobs.AsyncJobManager;
4144
import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO;
4245
import org.apache.cloudstack.managed.context.ManagedContextTimerTask;
46+
import org.apache.cloudstack.utils.identity.ManagementServerNode;
4347
import org.apache.cloudstack.vm.schedule.dao.VMScheduleDao;
4448
import org.apache.cloudstack.vm.schedule.dao.VMScheduledJobDao;
4549
import org.apache.commons.lang.time.DateUtils;
@@ -68,6 +72,9 @@ public class VMSchedulerImpl extends ManagerBase implements VMScheduler, Configu
6872
private UserVmManager userVmManager;
6973
@Inject
7074
private AsyncJobManager asyncJobManager;
75+
@Inject
76+
private ManagementServerHostDao managementServerHostDao;
77+
7178
private AsyncJobDispatcher asyncJobDispatcher;
7279
private Timer vmSchedulerTimer;
7380
private Date currentTimestamp;
@@ -190,6 +197,11 @@ public boolean start() {
190197
final TimerTask schedulerPollTask = new ManagedContextTimerTask() {
191198
@Override
192199
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+
}
193205
try {
194206
poll(new Date());
195207
} catch (final Throwable t) {

0 commit comments

Comments
 (0)