diff --git a/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java b/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java index cbf98e44426..9c2589b97b8 100644 --- a/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java +++ b/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java @@ -143,5 +143,14 @@ public class SecurityIngressRulesCmd extends Command { public Long getVmId() { return vmId; } + + public int getTotalNumCidrs() { + //useful for logging + int count = 0; + for (IpPortAndProto i: ruleSet) { + count += i.allowedCidrs.length; + } + return count; + } } diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java index 5e56147c3f0..4f6c048c56e 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java @@ -79,7 +79,7 @@ public class SecurityGroupManagerImpl2 extends SecurityGroupManagerImpl { return; } if (s_logger.isTraceEnabled()) { - s_logger.trace("Security Group Mgr2: scheduling ruleset updates for " + affectedVms.size() + " vms"); + s_logger.trace("Security Group Mgr v2: scheduling ruleset updates for " + affectedVms.size() + " vms, current queue size=" + _workQueue.size()); } Set workItems = new TreeSet(); workItems.addAll(affectedVms); @@ -88,7 +88,10 @@ public class SecurityGroupManagerImpl2 extends SecurityGroupManagerImpl { txn.start(); _rulesetLogDao.createOrUpdate(workItems); txn.commit(); - _workQueue.submitWorkForVms(workItems); + int newJobs = _workQueue.submitWorkForVms(workItems); + if (s_logger.isTraceEnabled()){ + s_logger.trace("Security Group Mgr v2: done scheduling ruleset updates: num new jobs=" + newJobs); + } } @@ -142,9 +145,16 @@ public class SecurityGroupManagerImpl2 extends SecurityGroupManagerImpl { SecurityIngressRulesCmd cmd = generateRulesetCmd(vm.getInstanceName(), vm.getPrivateIpAddress(), vm.getPrivateMacAddress(), vm.getId(), generateRulesetSignature(rules), work.getLogsequenceNumber(), rules); + if (s_logger.isTraceEnabled()) { + s_logger.trace("SecurityGroupManager v2: sending ruleset update for vm " + vm.getInstanceName() + + ": num rules=" + cmd.getRuleSet().length + " num cidrs=" + cmd.getTotalNumCidrs()); + } Commands cmds = new Commands(cmd); try { _agentMgr.send(agentId, cmds, _answerListener); + if (s_logger.isTraceEnabled()) { + s_logger.trace("SecurityGroupManager v2: sent ruleset updates for " + vm.getInstanceName() + " curr queue size=" + _workQueue.size()); + } } catch (AgentUnavailableException e) { s_logger.debug("Unable to send updates for vm: " + userVmId + "(agentid=" + agentId + ")"); } diff --git a/server/src/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java b/server/src/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java index bd2c76f5a6c..37bcd8197de 100644 --- a/server/src/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java +++ b/server/src/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java @@ -74,7 +74,8 @@ public class VmRulesetLogDaoImpl extends GenericDaoBase im if (s_logger.isTraceEnabled()) s_logger.trace("Updated or inserted " + workItems.size() + " log items"); } catch (SQLException e) { - s_logger.warn("Failed to execute batch update statement for ruleset log"); + s_logger.warn("Failed to execute batch update statement for ruleset log: ", e); + txn.rollback(); success = false; } if (!success && queryResult != null) {