Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 859504 Details for
Bug 1059412
OOB calculation can take longer than an hour; either optimize it or have a way to disable it
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Possible patch
BZ_1059412_-_Reduce_the_number_of_roundtrips_to_the_DB_to_speed_up_OOB_computation.patch (text/plain), 7.44 KB, created by
Heiko W. Rupp
on 2014-02-05 07:33:03 UTC
(
hide
)
Description:
Possible patch
Filename:
MIME Type:
Creator:
Heiko W. Rupp
Created:
2014-02-05 07:33:03 UTC
Size:
7.44 KB
patch
obsolete
>Index: modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java >IDEA additional info: >Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP ><+>ISO-8859-1 >=================================================================== >--- modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java (date 1391420738000) >+++ modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java (revision ) >@@ -57,6 +57,7 @@ > @NamedQuery(name = MeasurementBaseline.QUERY_DELETE_BY_COMPUTE_TIME, query = "" // > + "DELETE MeasurementBaseline bl " // > + " WHERE bl.computeTime < :timestamp "), >+ @NamedQuery(name = MeasurementBaseline.QUERY_BY_SCHEDULE_IDS, query = "select baseline from MeasurementBaseline baseline where baseline.schedule.id IN (:scheduleIds)"), > @NamedQuery(name = MeasurementBaseline.QUERY_DELETE_BY_RESOURCES, query = "DELETE MeasurementBaseline bl WHERE bl.schedule IN ( SELECT ms FROM MeasurementSchedule ms WHERE ms.resource.id IN ( :resourceIds ) )") }) > @SequenceGenerator(allocationSize = org.rhq.core.domain.util.Constants.ALLOCATION_SIZE, name = "RHQ_MEASUREMENT_BLINE_ID_SEQ", sequenceName = "RHQ_MEASUREMENT_BLINE_ID_SEQ") > @SuppressWarnings("unused") >@@ -69,6 +70,7 @@ > public static final String QUERY_DELETE_BY_RESOURCES = "MeasurementBaseline.deleteByResources"; > public static final String QUERY_CALC_FIRST_AUTOBASELINE = "MeasurementBaseline.calcFirstAutoBaseline"; > public static final String QUERY_DELETE_EXISTING_AUTOBASELINES = "MeasurementBaseline.deleteExistingAutoBaseline"; >+ public static final String QUERY_BY_SCHEDULE_IDS = "MeasurementBaseline.queryByScheduleIds"; > > private static final long serialVersionUID = 1L; > @GeneratedValue(strategy = GenerationType.AUTO, generator = "RHQ_MEASUREMENT_BLINE_ID_SEQ") >Index: modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java >IDEA additional info: >Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP ><+>ISO-8859-1 >=================================================================== >--- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java (date 1391420738000) >+++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java (revision ) >@@ -18,9 +18,13 @@ > */ > package org.rhq.enterprise.server.measurement; > >+import java.util.List; >+import java.util.Map; >+ > import javax.ejb.Local; > > import org.rhq.core.domain.auth.Subject; >+import org.rhq.core.domain.measurement.MeasurementBaseline; > import org.rhq.core.domain.measurement.MeasurementSchedule; > import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite; > import org.rhq.core.domain.util.PageControl; >@@ -66,7 +70,7 @@ > * be generated > * @return 1 if an OOB is generated, 0 otherwise > */ >- int calculateOOB(AggregateNumericMetric metric); >+ int calculateOOB(AggregateNumericMetric metric, MeasurementBaseline baseline); > > /** > * Return OOB Composites that contain all information about the OOBs in a given time as aggregates. >Index: modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java >IDEA additional info: >Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP ><+>ISO-8859-1 >=================================================================== >--- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java (date 1391420738000) >+++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java (revision ) >@@ -24,6 +24,7 @@ > import java.util.ArrayList; > import java.util.Date; > import java.util.HashMap; >+import java.util.Iterator; > import java.util.List; > import java.util.Map; > >@@ -71,6 +72,7 @@ > @javax.annotation.Resource(name = "RHQ_DS", mappedName = RHQConstants.DATASOURCE_JNDI_NAME) > public class MeasurementOOBManagerBean implements MeasurementOOBManagerLocal { > >+ private static final int BATCH_SIZE = 500; > private final Log log = LogFactory.getLog(MeasurementOOBManagerBean.class); > > @PersistenceContext(unitName = RHQConstants.PERSISTENCE_UNIT_NAME) >@@ -199,15 +201,46 @@ > log.info("Computing OOBs"); > int count = 0; > long startTime = System.currentTimeMillis(); >+ > try { >- for (AggregateNumericMetric metric : metrics) { >+ Iterator<AggregateNumericMetric> iterator = metrics.iterator(); >+ while (iterator.hasNext()) { >+ >+ List<Integer> scheduleIds = new ArrayList<Integer>(BATCH_SIZE); >+ List<AggregateNumericMetric> metricList = new ArrayList<AggregateNumericMetric>(BATCH_SIZE); >+ >+ int i = 0; >+ do { >+ AggregateNumericMetric aggregate = iterator.next(); >+ scheduleIds.add(aggregate.getScheduleId()); >+ metricList.add(aggregate); >+ i++; >+ } while (i < BATCH_SIZE && iterator.hasNext()); >+ >+ Query q = entityManager.createNamedQuery(MeasurementBaseline.QUERY_BY_SCHEDULE_IDS); >+ q.setParameter("scheduleIds",scheduleIds); >+ List<MeasurementBaseline> tmpList = q.getResultList(); >+ >+ // put the result in a HashMap to speed up query later >+ Map<Integer,MeasurementBaseline> baselineMap = new HashMap<Integer, MeasurementBaseline>(tmpList.size()); >+ for (MeasurementBaseline baseline : tmpList) { >+ baselineMap.put(baseline.getScheduleId(),baseline); >+ } >+ >+ for (AggregateNumericMetric metric : metricList) { >+ MeasurementBaseline baseline = baselineMap.get(metric.getScheduleId()); >+ if (baseline==null) >+ continue; >+ >- try { >+ try { >- count += oobManager.calculateOOB(metric); >+ count += oobManager.calculateOOB(metric,baseline); >- } catch (Exception e) { >- log.error("An error occurred while calculating OOBs for " + metric, e); >- throw new RuntimeException(e); >- } >+ } catch (Exception e) { >+ log.error("An error occurred while calculating OOBs for " + metric, e); >+ throw new RuntimeException(e); >+ } >+ >- } >+ } >+ } > } finally { > long endTime = System.currentTimeMillis(); > if (log.isInfoEnabled()) { >@@ -218,15 +251,11 @@ > > @SuppressWarnings("unchecked") > @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) >- public int calculateOOB(AggregateNumericMetric metric) { >- List<MeasurementBaseline> baselines = entityManager.createQuery( >- "select baseline from MeasurementBaseline baseline where baseline.schedule.id = :scheduleId") >- .setParameter("scheduleId", metric.getScheduleId()) >- .getResultList(); >- if (baselines.isEmpty()) { >+ public int calculateOOB(AggregateNumericMetric metric,MeasurementBaseline baseline) { >+ if (baseline==null) { > return 0; > } >- MeasurementBaseline baseline = baselines.get(0); >+ > Long upperDelta = null; > Long lowerDelta = null; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1059412
: 859504