From: <cl...@hy...> - 2007-12-19 06:50:48
|
Author: clee Date: 2007-12-18 22:50:37 -0800 (Tue, 18 Dec 2007) New Revision: 7314 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=7314 Modified: trunk/src/org/hyperic/hq/escalation/server/session/EscalationAlertType.java trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java trunk/src/org/hyperic/hq/events/server/session/ClassicEscalationAlertType.java trunk/src/org/hyperic/hq/galerts/server/session/GalertEscalationAlertType.java Log: [HQ-1036] Reduce number of Alert lookups and send state change when escalation escalates Modified: trunk/src/org/hyperic/hq/escalation/server/session/EscalationAlertType.java =================================================================== --- trunk/src/org/hyperic/hq/escalation/server/session/EscalationAlertType.java 2007-12-19 06:48:30 UTC (rev 7313) +++ trunk/src/org/hyperic/hq/escalation/server/session/EscalationAlertType.java 2007-12-19 06:50:37 UTC (rev 7314) @@ -71,11 +71,11 @@ * Change the state of an alert. This method should simply change the * state, log it & not much else. * - * @param alertId AlertID to change state of + * @param esc The escalatable (alert) to change state of * @param who Person changing the state * @param newState New state */ - protected abstract void changeAlertState(Integer alertId, AuthzSubject who, + protected abstract void changeAlertState(Escalatable esc, AuthzSubject who, EscalationStateChange newState); /** @@ -84,7 +84,7 @@ * out some result text. This method should put that result text into * the subsytem's log objects. */ - protected abstract void logActionDetails(Integer alertId, Action action, + protected abstract void logActionDetails(Escalatable esc, Action action, String detail, AuthzSubject subject); Modified: trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java 2007-12-19 06:48:30 UTC (rev 7313) +++ trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java 2007-12-19 06:50:37 UTC (rev 7314) @@ -36,6 +36,7 @@ import org.apache.commons.logging.LogFactory; import org.hyperic.dao.DAOFactory; import org.hyperic.hq.authz.server.session.AuthzSubject; +import org.hyperic.hq.authz.server.session.AuthzSubjectManagerEJBImpl; import org.hyperic.hq.authz.shared.PermissionException; import org.hyperic.hq.common.DuplicateObjectException; import org.hyperic.hq.common.SystemException; @@ -460,17 +461,23 @@ s.setAcknowledgedBy(null); EscalationRuntime.getInstance().scheduleEscalation(s); - + try { + EscalationAlertType type = s.getAlertType(); + + // Escalation state change + AuthzSubject overlord = + AuthzSubjectManagerEJBImpl.getOne().getOverlordPojo(); + type.changeAlertState(esc, overlord, + EscalationStateChange.ESCALATED); + ActionExecutionInfo execInfo = new ActionExecutionInfo(esc.getShortReason(), esc.getLongReason(), esc.getAuxLogs()); - String detail = action.executeAction(esc.getAlertInfo(), execInfo); - - s.getAlertType().logActionDetails(esc.getId(), action, detail, - null); + String detail = action.executeAction(esc.getAlertInfo(), execInfo); + type.logActionDetails(esc, action, detail, null); } catch(Exception exc) { _log.error("Unable to execute action [" + action.getClassName() + "] for escalation definition [" + @@ -640,9 +647,8 @@ moreInfo = "(Fixed by " + subject.getFullName() + ")"; _log.debug(subject.getFullName() + " has fixed alertId=" + alertId); - type.changeAlertState(alertId, subject, - EscalationStateChange.FIXED); - type.logActionDetails(alertId, null, moreInfo, subject); + type.changeAlertState(esc, subject, EscalationStateChange.FIXED); + type.logActionDetails(esc, null, moreInfo, subject); if (state != null) endEscalation(state); } else { @@ -658,9 +664,9 @@ } _log.debug(subject.getFullName() + " has acknowledged alertId=" + alertId); - type.changeAlertState(alertId, subject, + type.changeAlertState(esc, subject, EscalationStateChange.ACKNOWLEDGED); - type.logActionDetails(alertId, null, + type.logActionDetails(esc, null, subject.getFullName() + " acknowledged " + "the alert" + moreInfo, subject); Modified: trunk/src/org/hyperic/hq/events/server/session/ClassicEscalationAlertType.java =================================================================== --- trunk/src/org/hyperic/hq/events/server/session/ClassicEscalationAlertType.java 2007-12-19 06:48:30 UTC (rev 7313) +++ trunk/src/org/hyperic/hq/events/server/session/ClassicEscalationAlertType.java 2007-12-19 06:50:37 UTC (rev 7314) @@ -94,8 +94,7 @@ protected void setEscalation(Integer defId, Escalation escalation) { try { - AlertDefinitionManagerLocal defMan = getDefMan(); - AlertDefinition def = defMan.getByIdNoCheck(defId, false); + AlertDefinition def = getDefMan().getByIdNoCheck(defId, false); def.setEscalation(escalation); long mtime = System.currentTimeMillis(); def.setMtime(mtime); @@ -112,20 +111,22 @@ } } - protected void changeAlertState(Integer alertId, AuthzSubject who, + protected void changeAlertState(Escalatable esc, AuthzSubject who, EscalationStateChange newState) { - Alert alert = getAlertMan().findAlertById(alertId); - - if (newState.isFixed()) + Alert alert = (Alert) esc.getAlertInfo(); + if (newState.isFixed()) { getAlertMan().setAlertFixed(alert); + } + else if (newState.isAcknowledged() || newState.isEscalated()) { + alert.invalidate(); + } } - protected void logActionDetails(Integer alertId, Action action, + protected void logActionDetails(Escalatable esc, Action action, String detail, AuthzSubject subject) { - Alert alert = getAlertMan().findAlertById(alertId); - + Alert alert = (Alert) esc.getAlertInfo(); getAlertMan().logActionDetail(alert, action, detail, subject); } Modified: trunk/src/org/hyperic/hq/galerts/server/session/GalertEscalationAlertType.java =================================================================== --- trunk/src/org/hyperic/hq/galerts/server/session/GalertEscalationAlertType.java 2007-12-19 06:48:30 UTC (rev 7313) +++ trunk/src/org/hyperic/hq/galerts/server/session/GalertEscalationAlertType.java 2007-12-19 06:50:37 UTC (rev 7314) @@ -71,21 +71,18 @@ gMan.update(def, escalation); } - protected void changeAlertState(Integer alertId, AuthzSubject who, + protected void changeAlertState(Escalatable esc, AuthzSubject who, EscalationStateChange newState) { - GalertManagerLocal gMan = getGalertMan(); - GalertLog alert = gMan.findAlertLog(alertId); - + GalertLog alert = (GalertLog) esc.getAlertInfo(); if (newState.isFixed()) - gMan.fixAlert(alert); + getGalertMan().fixAlert(alert); } - protected void logActionDetails(Integer alertId, Action action, + protected void logActionDetails(Escalatable esc, Action action, String detail, AuthzSubject subject) { - GalertLog alert = getGalertMan().findAlertLog(alertId); - + GalertLog alert = (GalertLog) esc.getAlertInfo(); getGalertMan().createActionLog(alert, detail, action, subject); } |