Updated Branches:
  refs/heads/4.3 5b4fa5c06 -> 592863f1e

Removed unused agent lb timer

Conflicts:
        
engine/orchestration/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/592863f1
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/592863f1
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/592863f1

Branch: refs/heads/4.3
Commit: 592863f1efc7aa5f911bd854d6b9fe6df2e73391
Parents: 5b4fa5c
Author: Alena Prokharchyk <[email protected]>
Authored: Thu Nov 21 14:11:14 2013 -0800
Committer: Alena Prokharchyk <[email protected]>
Committed: Thu Nov 21 14:34:42 2013 -0800

----------------------------------------------------------------------
 .../manager/ClusteredAgentManagerImpl.java      | 184 ++++++++++---------
 1 file changed, 99 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/592863f1/engine/orchestration/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/orchestration/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
 
b/engine/orchestration/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
index 8681263..2fd1caf 100755
--- 
a/engine/orchestration/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
+++ 
b/engine/orchestration/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
@@ -106,7 +106,6 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
     protected HashMap<String, SocketChannel> _peers;
     protected HashMap<String, SSLEngine> _sslEngines;
     private final Timer _timer = new Timer("ClusteredAgentManager Timer");
-    private final Timer _agentLbTimer = new Timer("ClusteredAgentManager 
AgentRebalancing Timer");
     boolean _agentLbHappened = false;
     
     @Inject
@@ -133,8 +132,7 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
     protected final ConfigKey<Integer> LoadSize = new 
ConfigKey<Integer>(Integer.class, "direct.agent.load.size", "Advanced", "16",
             "How many agents to connect to in each round", true);
     protected final ConfigKey<Integer> ScanInterval = new 
ConfigKey<Integer>(Integer.class, "direct.agent.scan.interval", "Advanced", 
"90",
-        "Interval between scans to load agents", false, 
ConfigKey.Scope.Global, 1000);
-    
+            "Interval between scans to load agents", false, 
ConfigKey.Scope.Global, 1000);
 
     @Override
     public boolean configure(String name, Map<String, Object> xmlParams) 
throws ConfigurationException {
@@ -277,9 +275,9 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
 
     @Override
     protected AgentAttache createAttacheForDirectConnect(Host host, 
ServerResource resource) {
-//        if (resource instanceof DummySecondaryStorageResource) {
-//            return new DummyAttache(this, host.getId(), false);
-//        }
+// if (resource instanceof DummySecondaryStorageResource) {
+// return new DummyAttache(this, host.getId(), false);
+// }
         s_logger.debug("create ClusteredDirectAgentAttache for " + 
host.getId());
         final DirectAgentAttache attache = new 
ClusteredDirectAgentAttache(this, host.getId(), host.getName(), _nodeId, 
resource, host.isInMaintenanceStates(), this);
         AgentAttache old = null;
@@ -329,23 +327,24 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
             }
             AgentAttache attache = findAttache(hostId);
             if (attache != null) {
-                //don't process disconnect if the host is being rebalanced
+                // don't process disconnect if the host is being rebalanced
                 if (isAgentRebalanceEnabled()) {
                     HostTransferMapVO transferVO = 
_hostTransferDao.findById(hostId);
                     if (transferVO != null) {
                         if (transferVO.getFutureOwner() == _nodeId && 
transferVO.getState() == HostTransferState.TransferStarted) {
-                            s_logger.debug("Not processing " + 
Event.AgentDisconnected + " event for the host id="
-                                    + hostId +" as the host is being connected 
to " + _nodeId);
+
+                            s_logger.debug("Not processing " + 
Event.AgentDisconnected + " event for the host id=" + hostId + " as the host is 
being connected to " +
+                                    _nodeId);
                             return true;
                         }
                     }
                 }
 
-                //don't process disconnect if the disconnect came for the host 
via delayed cluster notification,
-                //but the host has already reconnected to the current 
management server
+                // don't process disconnect if the disconnect came for the 
host via delayed cluster notification,
+                // but the host has already reconnected to the current 
management server
                 if (!attache.forForward()) {
-                    s_logger.debug("Not processing " + Event.AgentDisconnected 
+ " event for the host id="
-                            + hostId +" as the host is directly connected to 
the current management server " + _nodeId);
+                    s_logger.debug("Not processing " + Event.AgentDisconnected 
+ " event for the host id=" + hostId +
+                            " as the host is directly connected to the current 
management server " + _nodeId);
                     return true;
                 }
 
@@ -390,18 +389,18 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
     }
 
     protected static void logT(byte[] bytes, final String msg) {
-        s_logger.trace("Seq " + Request.getAgentId(bytes) + "-" + 
Request.getSequence(bytes) + ": MgmtId " + Request.getManagementServerId(bytes) 
+ ": "
-                + (Request.isRequest(bytes) ? "Req: " : "Resp: ") + msg);
+        s_logger.trace("Seq " + Request.getAgentId(bytes) + "-" + 
Request.getSequence(bytes) + ": MgmtId " + Request.getManagementServerId(bytes) 
+ ": " +
+                (Request.isRequest(bytes) ? "Req: " : "Resp: ") + msg);
     }
 
     protected static void logD(byte[] bytes, final String msg) {
-        s_logger.debug("Seq " + Request.getAgentId(bytes) + "-" + 
Request.getSequence(bytes) + ": MgmtId " + Request.getManagementServerId(bytes) 
+ ": "
-                + (Request.isRequest(bytes) ? "Req: " : "Resp: ") + msg);
+        s_logger.debug("Seq " + Request.getAgentId(bytes) + "-" + 
Request.getSequence(bytes) + ": MgmtId " + Request.getManagementServerId(bytes) 
+ ": " +
+                (Request.isRequest(bytes) ? "Req: " : "Resp: ") + msg);
     }
 
     protected static void logI(byte[] bytes, final String msg) {
-        s_logger.info("Seq " + Request.getAgentId(bytes) + "-" + 
Request.getSequence(bytes) + ": MgmtId " + Request.getManagementServerId(bytes) 
+ ": "
-                + (Request.isRequest(bytes) ? "Req: " : "Resp: ") + msg);
+        s_logger.info("Seq " + Request.getAgentId(bytes) + "-" + 
Request.getSequence(bytes) + ": MgmtId " + Request.getManagementServerId(bytes) 
+ ": " +
+                (Request.isRequest(bytes) ? "Req: " : "Resp: ") + msg);
     }
 
     public boolean routeToPeer(String peer, byte[] bytes) {
@@ -568,9 +567,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
             }
         }
         _timer.cancel();
-        _agentLbTimer.cancel();
 
-        //cancel all transfer tasks
+        // cancel all transfer tasks
         s_transferExecutor.shutdownNow();
         cleanupTransferMap(_nodeId);
 
@@ -626,8 +624,9 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                         }
                         agent.cancel(cancel.getSequence());
                         final Long current = agent._currentSequence;
-                        //if the request is the current request, always have 
to trigger sending next request in sequence,
-                        //otherwise the agent queue will be blocked
+                        // if the request is the current request, always have 
to trigger sending next request in
+// sequence,
+                        // otherwise the agent queue will be blocked
                         if (req.executeInSequence() && (current != null && 
current == Request.getSequence(data))) {
                             agent.sendNext(Request.getSequence(data));
                         }
@@ -726,8 +725,9 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
     }
 
     @Override
-    public boolean executeRebalanceRequest(long agentId, long currentOwnerId, 
long futureOwnerId, Event event) throws AgentUnavailableException, 
OperationTimedoutException {
-       boolean result = false;
+    public boolean executeRebalanceRequest(long agentId, long currentOwnerId, 
long futureOwnerId, Event event) throws AgentUnavailableException,
+            OperationTimedoutException {
+        boolean result = false;
         if (event == Event.RequestAgentRebalance) {
             return setToWaitForRebalance(agentId, currentOwnerId, 
futureOwnerId);
         } else if (event == Event.StartAgentRebalance) {
@@ -792,7 +792,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
             avLoad = allManagedAgents.size() / allMS.size();
         } else {
             if (s_logger.isDebugEnabled()) {
-                s_logger.debug("There are no hosts to rebalance in the system. 
Current number of active management server nodes in the system is " + 
allMS.size() + "; number of managed agents is " + allManagedAgents.size());
+                s_logger.debug("There are no hosts to rebalance in the system. 
Current number of active management server nodes in the system is " + 
allMS.size() +
+                        "; number of managed agents is " + 
allManagedAgents.size());
             }
             return;
         }
@@ -848,7 +849,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                                     if (s_logger.isDebugEnabled()) {
                                         s_logger.debug("Removing mapping from 
op_host_transfer as it failed to be set to transfer mode");
                                     }
-                                    //just remove the mapping (if exists) as 
nothing was done on the peer management server yet
+                                    // just remove the mapping (if exists) as 
nothing was done on the peer management
+// server yet
                                     _hostTransferDao.remove(transfer.getId());
                                 }
                             }
@@ -934,7 +936,7 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                     synchronized (_agentToTransferIds) {
                         if (_agentToTransferIds.size() > 0) {
                             s_logger.debug("Found " + 
_agentToTransferIds.size() + " agents to transfer");
-                            //for (Long hostId : _agentToTransferIds) {
+                            // for (Long hostId : _agentToTransferIds) {
                             for (Iterator<Long> iterator = 
_agentToTransferIds.iterator(); iterator.hasNext();) {
                                 Long hostId = iterator.next();
                                 AgentAttache attache = findAttache(hostId);
@@ -946,7 +948,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                                 // remove the host from re-balance list and 
delete from op_host_transfer DB
                                 // no need to do anything with the real 
attache as we haven't modified it yet
                                 Date cutTime = DateUtil.currentGMTTime();
-                                HostTransferMapVO transferMap = 
_hostTransferDao.findActiveHostTransferMapByHostId(hostId, new 
Date(cutTime.getTime() - rebalanceTimeOut));
+                                HostTransferMapVO transferMap =
+                                        
_hostTransferDao.findActiveHostTransferMapByHostId(hostId, new 
Date(cutTime.getTime() - rebalanceTimeOut));
 
                                 if (transferMap == null) {
                                     s_logger.debug("Timed out waiting for the 
host id=" + hostId + " to be ready to transfer, skipping rebalance for the 
host");
@@ -964,7 +967,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
 
                                 ManagementServerHostVO ms = 
_mshostDao.findByMsid(transferMap.getFutureOwner());
                                 if (ms != null && ms.getState() != 
ManagementServerHost.State.Up) {
-                                    s_logger.debug("Can't transfer host " + 
hostId + " as it's future owner is not in UP state: " + ms + ", skipping 
rebalance for the host");
+                                    s_logger.debug("Can't transfer host " + 
hostId + " as it's future owner is not in UP state: " + ms +
+                                            ", skipping rebalance for the 
host");
                                     iterator.remove();
                                     
_hostTransferDao.completeAgentTransfer(hostId);
                                     continue;
@@ -980,7 +984,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                                     }
 
                                 } else {
-                                    s_logger.debug("Agent " + hostId + " can't 
be transfered yet as its request queue size is " + attache.getQueueSize() + " 
and listener queue size is " + attache.getNonRecurringListenersSize());
+                                    s_logger.debug("Agent " + hostId + " can't 
be transfered yet as its request queue size is " + attache.getQueueSize() +
+                                            " and listener queue size is " + 
attache.getNonRecurringListenersSize());
                                 }
                             }
                         } else {
@@ -1048,7 +1053,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
 
                 if (result) {
                     if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("Loading directly connected host " + 
host.getId() + "(" + host.getName() + ") to the management server " + _nodeId + 
" as a part of rebalance process");
+                        s_logger.debug("Loading directly connected host " + 
host.getId() + "(" + host.getName() + ") to the management server " + _nodeId +
+                                " as a part of rebalance process");
                     }
                     result = loadDirectlyConnectedHost(host, true);
                 } else {
@@ -1057,14 +1063,17 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                 }
 
             } catch (Exception ex) {
-                s_logger.warn("Failed to load directly connected host " + 
host.getId() + "(" + host.getName() + ") to the management server " + _nodeId + 
" as a part of rebalance process due to:", ex);
+                s_logger.warn("Failed to load directly connected host " + 
host.getId() + "(" + host.getName() + ") to the management server " + _nodeId +
+                        " as a part of rebalance process due to:", ex);
                 result = false;
             }
 
             if (result) {
-                s_logger.debug("Successfully loaded directly connected host " 
+ host.getId() + "(" + host.getName() + ") to the management server " + _nodeId 
+ " as a part of rebalance process");
+                s_logger.debug("Successfully loaded directly connected host " 
+ host.getId() + "(" + host.getName() + ") to the management server " + _nodeId 
+
+                        " as a part of rebalance process");
             } else {
-                s_logger.warn("Failed to load directly connected host " + 
host.getId() + "(" + host.getName() + ") to the management server " + _nodeId + 
" as a part of rebalance process");
+                s_logger.warn("Failed to load directly connected host " + 
host.getId() + "(" + host.getName() + ") to the management server " + _nodeId +
+                        " as a part of rebalance process");
             }
         }
 
@@ -1086,17 +1095,18 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
             return;
         }
 
-        ClusteredAgentAttache forwardAttache = (ClusteredAgentAttache)attache;
+        ClusteredAgentAttache forwardAttache = (ClusteredAgentAttache) attache;
 
         if (success) {
 
-            //1) Set transfer mode to false - so the agent can start 
processing requests normally
+            // 1) Set transfer mode to false - so the agent can start 
processing requests normally
             forwardAttache.setTransferMode(false);
 
-            //2) Get all transfer requests and route them to peer
+            // 2) Get all transfer requests and route them to peer
             Request requestToTransfer = forwardAttache.getRequestToTransfer();
             while (requestToTransfer != null) {
-                s_logger.debug("Forwarding request " + 
requestToTransfer.getSequence() + " held in transfer attache " + hostId + " 
from the management server " + _nodeId + " to " + futureOwnerId);
+                s_logger.debug("Forwarding request " + 
requestToTransfer.getSequence() + " held in transfer attache " + hostId + " 
from the management server " +
+                        _nodeId + " to " + futureOwnerId);
                 boolean routeResult = 
routeToPeer(Long.toString(futureOwnerId), requestToTransfer.getBytes());
                 if (!routeResult) {
                     logD(requestToTransfer.getBytes(), "Failed to route 
request to peer");
@@ -1134,10 +1144,10 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
         }
 
         synchronized (_agents) {
-            ClusteredDirectAgentAttache attache = 
(ClusteredDirectAgentAttache)_agents.get(hostId);
+            ClusteredDirectAgentAttache attache = 
(ClusteredDirectAgentAttache) _agents.get(hostId);
             if (attache != null && attache.getQueueSize() == 0 && 
attache.getNonRecurringListenersSize() == 0) {
-               handleDisconnectWithoutInvestigation(attache, 
Event.StartAgentRebalance, true, true);
-                ClusteredAgentAttache forwardAttache = 
(ClusteredAgentAttache)createAttache(hostId);
+                handleDisconnectWithoutInvestigation(attache, 
Event.StartAgentRebalance, true, true);
+                ClusteredAgentAttache forwardAttache = (ClusteredAgentAttache) 
createAttache(hostId);
                 if (forwardAttache == null) {
                     s_logger.warn("Unable to create a forward attache for the 
host " + hostId + " as a part of rebalance process");
                     return false;
@@ -1149,7 +1159,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                 if (attache == null) {
                     s_logger.warn("Attache for the agent " + hostId + " no 
longer exists on management server " + _nodeId + ", can't start host 
rebalancing");
                 } else {
-                    s_logger.warn("Attache for the agent " + hostId + " has 
request queue size= " + attache.getQueueSize() + " and listener queue size " + 
attache.getNonRecurringListenersSize() + ", can't start host rebalancing");
+                    s_logger.warn("Attache for the agent " + hostId + " has 
request queue size= " + attache.getQueueSize() + " and listener queue size " +
+                            attache.getNonRecurringListenersSize() + ", can't 
start host rebalancing");
                 }
                 return false;
             }
@@ -1207,8 +1218,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
         } catch (Exception e) {
             // Scheduling host scan task in peer MS is a best effort operation 
during host add, regular host scan
             // happens at fixed intervals anyways. So handling any exceptions 
that may be thrown
-            s_logger.warn("Exception happened while trying to schedule host 
scan task on mgmt server " + _clusterMgr.getSelfPeerName()
-                    + ", ignoring as regular host scan happens at fixed 
interval anyways", e);
+            s_logger.warn("Exception happened while trying to schedule host 
scan task on mgmt server " + _clusterMgr.getSelfPeerName() +
+                    ", ignoring as regular host scan happens at fixed interval 
anyways", e);
             return null;
         }
 
@@ -1247,8 +1258,8 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                 s_logger.error("Excection in gson decoding : ", e);
             }
 
-            if (cmds.length == 1 && cmds[0] instanceof ChangeAgentCommand) {  
//intercepted
-                ChangeAgentCommand cmd = (ChangeAgentCommand)cmds[0];
+            if (cmds.length == 1 && cmds[0] instanceof ChangeAgentCommand) { 
// intercepted
+                ChangeAgentCommand cmd = (ChangeAgentCommand) cmds[0];
 
                 if (s_logger.isDebugEnabled()) {
                     s_logger.debug("Intercepting command for agent change: 
agent " + cmd.getAgentId() + " event: " + cmd.getEvent());
@@ -1269,7 +1280,7 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                 answers[0] = new ChangeAgentAnswer(cmd, result);
                 return _gson.toJson(answers);
             } else if (cmds.length == 1 && cmds[0] instanceof 
TransferAgentCommand) {
-                TransferAgentCommand cmd = (TransferAgentCommand)cmds[0];
+                TransferAgentCommand cmd = (TransferAgentCommand) cmds[0];
 
                 if (s_logger.isDebugEnabled()) {
                     s_logger.debug("Intercepting command for agent 
rebalancing: agent " + cmd.getAgentId() + " event: " + cmd.getEvent());
@@ -1292,7 +1303,7 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                 answers[0] = new Answer(cmd, result, null);
                 return _gson.toJson(answers);
             } else if (cmds.length == 1 && cmds[0] instanceof 
PropagateResourceEventCommand) {
-                PropagateResourceEventCommand cmd = 
(PropagateResourceEventCommand)cmds[0];
+                PropagateResourceEventCommand cmd = 
(PropagateResourceEventCommand) cmds[0];
 
                 s_logger.debug("Intercepting command to propagate event " + 
cmd.getEvent().name() + " for host " + cmd.getHostId());
 
@@ -1309,7 +1320,7 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                 answers[0] = new Answer(cmd, result, null);
                 return _gson.toJson(answers);
             } else if (cmds.length == 1 && cmds[0] instanceof 
ScheduleHostScanTaskCommand) {
-                ScheduleHostScanTaskCommand cmd = 
(ScheduleHostScanTaskCommand)cmds[0];
+                ScheduleHostScanTaskCommand cmd = 
(ScheduleHostScanTaskCommand) cmds[0];
                 String response = handleScheduleHostScanTaskCommand(cmd);
                 return response;
             }
@@ -1325,15 +1336,15 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
                     String jsonReturn = _gson.toJson(answers);
 
                     if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("Completed dispatching -> " + 
pdu.getAgentId() + ", json: " + pdu.getJsonPackage() +
-                                " in " + (System.currentTimeMillis() - 
startTick) + " ms, return result: " + jsonReturn);
+                        s_logger.debug("Completed dispatching -> " + 
pdu.getAgentId() + ", json: " + pdu.getJsonPackage() + " in " +
+                                (System.currentTimeMillis() - startTick) + " 
ms, return result: " + jsonReturn);
                     }
 
                     return jsonReturn;
                 } else {
                     if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("Completed dispatching -> " + 
pdu.getAgentId() + ", json: " + pdu.getJsonPackage() +
-                                " in " + (System.currentTimeMillis() - 
startTick) + " ms, return null result");
+                        s_logger.debug("Completed dispatching -> " + 
pdu.getAgentId() + ", json: " + pdu.getJsonPackage() + " in " +
+                                (System.currentTimeMillis() - startTick) + " 
ms, return null result");
                     }
                 }
             } catch (AgentUnavailableException e) {
@@ -1362,38 +1373,41 @@ public class ClusteredAgentManagerImpl extends 
AgentManagerImpl implements Clust
     
     private Runnable getAgentRebalanceScanTask() {
         return new ManagedContextRunnable() {
-        @Override
-        protected void runInContext() {
-            try {
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("Agent rebalance task check, management 
server id:" + _nodeId);
+            @Override
+            protected void runInContext() {
+                try {
+                    if (s_logger.isTraceEnabled()) {
+                        s_logger.trace("Agent rebalance task check, management 
server id:" + _nodeId);
+                    }
+                    // initiate agent lb task will be scheduled and executed 
only once, and only when number of agents
+// loaded exceeds _connectedAgentsThreshold
+                    if (!_agentLbHappened) {
+                        QueryBuilder<HostVO> sc = 
QueryBuilder.create(HostVO.class);
+                        sc.and(sc.entity().getManagementServerId(), Op.NNULL);
+                        sc.and(sc.entity().getType(), Op.EQ, 
Host.Type.Routing);
+                        List<HostVO> allManagedRoutingAgents = sc.list();
+
+                        sc = QueryBuilder.create(HostVO.class);
+                        sc.and(sc.entity().getType(), Op.EQ, 
Host.Type.Routing);
+                        List<HostVO> allAgents = sc.list();
+                        double allHostsCount = allAgents.size();
+                        double managedHostsCount = 
allManagedRoutingAgents.size();
+                        if (allHostsCount > 0.0) {
+                            double load = managedHostsCount / allHostsCount;
+                            if (load >= ConnectedAgentThreshold.value()) {
+                                s_logger.debug("Scheduling agent rebalancing 
task as the average agent load " + load + " is more than the threshold " +
+                                        ConnectedAgentThreshold.value());
+                                scheduleRebalanceAgents();
+                                _agentLbHappened = true;
+                            } else {
+                                s_logger.debug("Not scheduling agent 
rebalancing task as the averages load " + load + " is less than the threshold " 
+
+                                        ConnectedAgentThreshold.value());
+                            }
+                        }
+                    }
+                } catch (Throwable e) {
+                    s_logger.error("Problem with the clustered agent transfer 
scan check!", e);
                 }
-              //initiate agent lb task will be scheduled and executed only 
once, and only when number of agents loaded exceeds _connectedAgentsThreshold
-              if (!_agentLbHappened) {
-                  QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
-                  sc.and(sc.entity().getManagementServerId(), Op.NNULL);
-                  sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
-                  List<HostVO> allManagedRoutingAgents = sc.list();
-      
-                  sc = QueryBuilder.create(HostVO.class);
-                  sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
-                  List<HostVO> allAgents = sc.list();
-                  double allHostsCount = allAgents.size();
-                  double managedHostsCount = allManagedRoutingAgents.size();
-                  if (allHostsCount > 0.0) {
-                      double load = managedHostsCount / allHostsCount;
-                      if (load >= ConnectedAgentThreshold.value()) {
-                          s_logger.debug("Scheduling agent rebalancing task as 
the average agent load " + load + " is more than the threshold " + 
ConnectedAgentThreshold.value());
-                          scheduleRebalanceAgents();
-                          _agentLbHappened = true;
-                      } else {
-                          s_logger.debug("Not scheduling agent rebalancing 
task as the averages load " + load + " is less than the threshold " + 
ConnectedAgentThreshold.value());
-                      }
-                  }
-              }
-            } catch (Throwable e) {
-                s_logger.error("Problem with the clustered agent transfer scan 
check!", e);
-            }
         }
     };
 }

Reply via email to