modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java | 20 +++++++--- 1 file changed, 14 insertions(+), 6 deletions(-)
New commits: commit eb59feb926212ded4d4b2042fb0062ca8164ca7c Author: John Mazzitelli mazz@redhat.com Date: Wed Jan 5 12:54:10 2011 -0500
checkCondition methods should never throw exceptions. the cache will clean itself up later eventually
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java index 758d1cc..0100d3a 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java @@ -349,15 +349,23 @@ class AgentConditionCache extends AbstractConditionCache { if ((callTime == null) || (callTime.length == 0)) { return new AlertConditionCacheStats(); } + AlertConditionCacheStats stats = new AlertConditionCacheStats(); - HashMap<Integer, HashMap<String, ArrayList<CallTimeDataValue>>> order = produceOrderedCallTimeDataStructure(callTime); - for (Integer scheduleId : order.keySet()) { - List<? extends CallTimeDataCacheElement> conditionCacheElements = lookupCallTimeDataCacheElements(scheduleId); - for (String callDest : order.get(scheduleId).keySet()) - for (CallTimeDataValue provided : order.get(scheduleId).get(callDest)) { - processCacheElements(conditionCacheElements, provided, provided.getBeginTime(), stats, callDest); + try { + HashMap<Integer, HashMap<String, ArrayList<CallTimeDataValue>>> order = produceOrderedCallTimeDataStructure(callTime); + for (Integer scheduleId : order.keySet()) { + List<? extends CallTimeDataCacheElement> conditionCacheElements = lookupCallTimeDataCacheElements(scheduleId); + for (String callDest : order.get(scheduleId).keySet()) { + for (CallTimeDataValue provided : order.get(scheduleId).get(callDest)) { + processCacheElements(conditionCacheElements, provided, provided.getBeginTime(), stats, callDest); + } } + } + } catch (Throwable t) { + // don't let any exceptions bubble up to the calling SLSB layer + log.error("Error during calltime cache processing for agent[id=" + agentId + "]", t); } + return stats; }
rhq-commits@lists.fedorahosted.org