[prev in list] [next in list] [prev in thread] [next in thread]
List: rhq-commits
Subject: [rhq] modules/core modules/enterprise
From: John Sanda <jsanda () fedoraproject ! org>
Date: 2013-05-31 17:22:18
Message-ID: 20130531172218.974D56143D () fedorahosted ! org
[Download RAW message or body]
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java \
| 4 modules/core/domain/src/test/java/org/rhq/core/domain/measurement/test/MeasurementBaselineTest.java \
| 54 ---------- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementBaselineManagerBean.java \
| 11 -- 3 files changed, 5 insertions(+), 64 deletions(-)
New commits:
commit 35001d92bab83871f901156f82309fd58665ddb7
Author: John Sanda <jsanda@redhat.com>
Date: Fri May 31 13:19:42 2013 -0400
refactor query to find schedules without baselines
The JPQL query previously used resulted in a very inefficient cross join that
could result in statement timeouts in the database with a just a moderately
large number of schedules. This commit removes MeasurementBaselineTest since it
only tested the query that has been replaced. There is already test coverage
of the query in MeasurementBaselineManagerTest.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java \
b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java
index 743c12a..5bd0e8b 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java
@@ -42,9 +42,6 @@ import javax.persistence.Table;
@Entity
@NamedQueries( {
- @NamedQuery(name = \
MeasurementBaseline.QUERY_FIND_MEASUREMENT_SCHEDULES_WITHOUT_AUTOBASELINES, query = \
"SELECT schedule FROM MeasurementSchedule schedule "
- + "WHERE schedule.definition.numericType = 0 AND "
- + "schedule.id NOT IN (SELECT mb.schedule.id FROM MeasurementBaseline mb)"),
@NamedQuery(name = MeasurementBaseline.QUERY_FIND_BY_RESOURCE, query = "SELECT \
mb FROM MeasurementBaseline mb WHERE mb.schedule.resource.id = \
:resourceId"),
@NamedQuery(name = MeasurementBaseline.QUERY_FIND_BY_RESOURCE_IDS_AND_DEF_IDS, \
query = "SELECT mb FROM MeasurementBaseline mb "
+ "WHERE mb.schedule.resource.id IN (:resourceIds) AND \
mb.schedule.definition.id IN (:definitionIds)"), @@ -72,7 +69,6 @@ public class \
MeasurementBaseline implements Serializable {
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_FIND_MEASUREMENT_SCHEDULES_WITHOUT_AUTOBASELINES = \
"MeasurementBaseline.findMetricSchedulesWithoutAutoBaselines";
private static final long serialVersionUID = 1L;
@GeneratedValue(strategy = GenerationType.AUTO, generator = \
"RHQ_MEASUREMENT_BLINE_ID_SEQ")
diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/measurement/test/MeasurementBaselineTest.java \
b/modules/core/domain/src/test/java/org/rhq/core/domain/measurement/test/MeasurementBaselineTest.java
deleted file mode 100644
index 57d45e0..0000000
--- a/modules/core/domain/src/test/java/org/rhq/core/domain/measurement/test/MeasurementBaselineTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
- /*
- * RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.domain.measurement.test;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.testng.annotations.Test;
-
-import org.rhq.core.domain.measurement.MeasurementBaseline;
-import org.rhq.core.domain.test.AbstractEJB3Test;
-
-/**
- * Tests for MeasurementBaseline entity
- *
- * @author Stefan Negrea
- */
-@Test(groups = "integration.ejb3")
-public class MeasurementBaselineTest extends AbstractEJB3Test {
-
- @Test
- public void testSelectQuery() throws Exception {
- EntityManager entityManager = getEntityManager();
- Query query = entityManager
- .createNamedQuery(MeasurementBaseline.QUERY_FIND_MEASUREMENT_SCHEDULES_WITHOUT_AUTOBASELINES);
- List<String> rows = query.getResultList();
- System.out.println("----------------------------------------------------------------------------");
- System.out.println(rows.size());
- System.out.println(rows);
- System.out.println("----------------------------------------------------------------------------");
- }
-}
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementBaselineManagerBean.java \
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementBaselineManagerBean.java
index 22ebb71..c18ff97 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementBaselineManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementBaselineManagerBean.java
@@ -189,8 +189,6 @@ public class MeasurementBaselineManagerBean implements \
MeasurementBaselineManage
* In any event, an appropriate chunking solution needs to be found, \
and that partitioning strategy
* needs to replace the limits in the query today.
*/
-// int schedulesWithoutBaselines = measurementBaselineManager
-// ._calculateAutoBaselinesINSERT(amountOfData);
List<MeasurementSchedule> schedulesWithoutBaselines =
measurementBaselineManager.getSchedulesWithoutBaselines();
measurementBaselineManager.calculateBaselines(schedulesWithoutBaselines, \
now, amountOfData); @@ -225,12 +223,13 @@ public class MeasurementBaselineManagerBean \
implements MeasurementBaselineManage @SuppressWarnings("unchecked")
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public List<MeasurementSchedule> getSchedulesWithoutBaselines() {
- Query query = this.entityManager
- .createNamedQuery(MeasurementBaseline.QUERY_FIND_MEASUREMENT_SCHEDULES_WITHOUT_AUTOBASELINES);
+ String sql =
+ "SELECT s.* FROM rhq_measurement_sched s INNER JOIN rhq_measurement_def \
d ON s.definition = d.id " + + "LEFT JOIN rhq_measurement_bline b ON s.id \
= b.schedule_id WHERE b.schedule_id IS NULL AND d.numeric_type = 0"; + Query \
query = this.entityManager.createNativeQuery(sql, MeasurementSchedule.class); \
query.setMaxResults(BASELINE_PROCESSING_LIMIT);
- List<MeasurementSchedule> scheduleIdsWithoutBaselines = \
query.getResultList();
- return scheduleIdsWithoutBaselines;
+ return query.getResultList();
}
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
_______________________________________________
rhq-commits mailing list
rhq-commits@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/rhq-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic