Skip to content

Commit b0a6edb

Browse files
committed
add method findOneInUpState to get mgmt server from class name
1 parent 06b0504 commit b0a6edb

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

framework/cluster/src/main/java/com/cloud/cluster/dao/ManagementServerHostDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,6 @@ public interface ManagementServerHostDao extends GenericDao<ManagementServerHost
5757
ManagementServerHostVO findOneInUpState(Filter filter);
5858

5959
ManagementServerHostVO findOneInUpStateByLongestRuntime();
60+
61+
ManagementServerHostVO findOneInUpState(String className);
6062
}

framework/cluster/src/main/java/com/cloud/cluster/dao/ManagementServerHostDaoImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,4 +282,15 @@ public ManagementServerHostVO findOneInUpStateByLongestRuntime() {
282282
return CollectionUtils.isNotEmpty(msHosts) ? msHosts.get(0) : null;
283283
}
284284

285+
@Override
286+
public ManagementServerHostVO findOneInUpState(String className) {
287+
SearchCriteria<ManagementServerHostVO> sc = StateSearch.create();
288+
sc.setParameters("state", ManagementServerHost.State.Up);
289+
List<ManagementServerHostVO> mshosts = listBy(sc, null);
290+
if (CollectionUtils.isEmpty(mshosts)) {
291+
return null;
292+
}
293+
int offset = (className == null) ? 0 : (className.length() % mshosts.size());
294+
return mshosts.get(offset);
295+
}
285296
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public boolean start() {
196196
final TimerTask schedulerPollTask = new ManagedContextTimerTask() {
197197
@Override
198198
protected void runInContext() {
199-
ManagementServerHostVO msHost = managementServerHostDao.findOneInUpStateByLongestRuntime();
199+
ManagementServerHostVO msHost = managementServerHostDao.findOneInUpState(this.getClass().getSimpleName());
200200
if (msHost == null || (msHost.getMsid() != ManagementServerNode.getManagementServerId())) {
201201
logger.debug("Skipping the vm scheduler poll task on this management server");
202202
return;

0 commit comments

Comments
 (0)