CLOUDSTACK-1827: Fix redundant router update mechanism

There is a bug that if the smaller number ID RvR stop running, that pair of
RvR's status won't be updated. This patch fixed it.
This commit is contained in:
Sheng Yang 2013-03-28 15:02:45 -07:00 committed by Chip Childers
parent 80c588e6b6
commit 9cf20ae38b
1 changed files with 12 additions and 3 deletions

View File

@ -1280,13 +1280,22 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
* We update the router pair which the lower id router owned by this mgmt server, in order
* to prevent duplicate update of router status from cluster mgmt servers
*/
DomainRouterVO router = routers.get(0);
if (routers.get(1).getId() < router.getId()) {
router = routers.get(1);
DomainRouterVO router0 = routers.get(0);
DomainRouterVO router1 = routers.get(1);
DomainRouterVO router = router0;
if ((router0.getId() < router1.getId()) && router0.getHostId() != null) {
router = router0;
} else {
router = router1;
}
if (router.getHostId() == null) {
s_logger.debug("Skip router pair (" + router0.getInstanceName() + "," + router1.getInstanceName() + ") due to can't find host");
continue;
}
HostVO host = _hostDao.findById(router.getHostId());
if (host == null || host.getManagementServerId() == null ||
host.getManagementServerId() != ManagementServerNode.getManagementServerId()) {
s_logger.debug("Skip router pair (" + router0.getInstanceName() + "," + router1.getInstanceName() + ") due to not belong to this mgmt server");
continue;
}
updateRoutersRedundantState(routers);