From: <sc...@hy...> - 2009-12-07 02:42:43
|
Author: scottmf Date: 2009-12-06 18:42:31 -0800 (Sun, 06 Dec 2009) New Revision: 14036 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=14036 Modified: branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/bizapp/server/session/EventsBossEJBImpl.java branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDAO.java branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/EventLogDAO.java Log: [HHQ-3534] batched up deleting of alerts by alert definition. Lowered the batch size when deleting resource alert info to make sure it does not fail. Modified: branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/bizapp/server/session/EventsBossEJBImpl.java =================================================================== --- branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/bizapp/server/session/EventsBossEJBImpl.java 2009-12-07 02:32:49 UTC (rev 14035) +++ branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/bizapp/server/session/EventsBossEJBImpl.java 2009-12-07 02:42:31 UTC (rev 14036) @@ -1841,7 +1841,7 @@ final boolean debug = log.isDebugEnabled(); final AlertDefinitionManagerLocal adm = getADM(); final List alertDefs = getADM().getAllDeletedAlertDefs(); - final int batchSize = 1000; + final int batchSize = 500; for (int i=0; i<alertDefs.size(); i+=batchSize) { final int end = Math.min(i+batchSize, alertDefs.size()); final List sublist = alertDefs.subList(i, end); Modified: branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDAO.java =================================================================== --- branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDAO.java 2009-12-07 02:32:49 UTC (rev 14035) +++ branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDAO.java 2009-12-07 02:42:31 UTC (rev 14036) @@ -256,6 +256,22 @@ return null; } } + + /** + * @param {@link List} of {@link AlertDefinition}s + * Deletes all {@link Alert}s associated with the {@link AlertDefinition}s + */ + int deleteByAlertDefinitions(List alertDefs) { + String sql = "DELETE FROM Alert WHERE alertDefinition in (:alertDefs)"; + int rtn = 0; + for (int i=0; i<alertDefs.size(); i+=BATCH_SIZE) { + int end = Math.min(i+BATCH_SIZE, alertDefs.size()); + rtn += getSession().createQuery(sql) + .setParameterList("alertDefs", alertDefs.subList(i, end)) + .executeUpdate(); + } + return rtn; + } int deleteByAlertDefinition(AlertDefinition def) { String sql = "DELETE FROM Alert WHERE alertDefinition = :alertDef"; Modified: branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java =================================================================== --- branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java 2009-12-07 02:32:49 UTC (rev 14035) +++ branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java 2009-12-07 02:42:31 UTC (rev 14036) @@ -762,14 +762,19 @@ final AlertDefinitionDAO aDao = getAlertDefDAO(); final ActionDAO actionDAO = getActionDAO(); try { + final List alertDefs = new ArrayList(alertDefIds.size()); for (final Iterator i = alertDefIds.iterator(); i.hasNext();) { final Integer alertdefId = (Integer) i.next(); final AlertDefinition alertdef = aDao.findById(alertdefId); + alertDefs.add(alertdef); + } + // Delete the alerts + if (debug) watch.markTimeBegin("deleteByAlertDefinition"); + dao.deleteByAlertDefinitions(alertDefs); + if (debug) watch.markTimeEnd("deleteByAlertDefinition"); - // Delete the alerts - if (debug) watch.markTimeBegin("deleteByAlertDefinition"); - dao.deleteByAlertDefinition(alertdef); - if (debug) watch.markTimeEnd("deleteByAlertDefinition"); + for (final Iterator i = alertDefs.iterator(); i.hasNext();) { + final AlertDefinition alertdef = (AlertDefinition) i.next(); // Remove the conditions if (debug) watch.markTimeBegin("remove conditions and triggers"); Modified: branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/EventLogDAO.java =================================================================== --- branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/EventLogDAO.java 2009-12-07 02:32:49 UTC (rev 14035) +++ branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/events/server/session/EventLogDAO.java 2009-12-07 02:42:31 UTC (rev 14036) @@ -343,6 +343,9 @@ if (alertId == null) { continue; } + if (log.getResource().isInAsyncDeleteState()) { + continue; + } AlertFiredEvent alertFired = createAlertFiredEvent(alertDefId, alertId, log); rtn.put(alertDefId, alertFired); |