This is an automated email from the ASF dual-hosted git repository.
avijayan pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new ba46c8d [AMBARI-24041] AMS truncates metric response quietly. (#1474)
ba46c8d is described below
commit ba46c8d4138ba9b35f4f12f10f74994dec0fae7d
Author: avijayanhwx <[email protected]>
AuthorDate: Tue Jun 5 18:56:21 2018 -0700
[AMBARI-24041] AMS truncates metric response quietly. (#1474)
* [AMBARI-24041] AMS truncates metric response quietly.
* [AMBARI-24041] AMS truncates metric response quietly. - 2
* [AMBARI-24041] AMS truncates metric response quietly. - 3
---
.../apache/ambari/metrics/core/timeline/PhoenixHBaseAccessor.java | 8 ++++++++
.../core/timeline/aggregators/AbstractTimelineAggregator.java | 2 ++
.../ambari/metrics/core/timeline/query/PhoenixTransactSQL.java | 4 ++++
.../ambari/metrics/core/timeline/TestPhoenixTransactSQL.java | 8 ++++++++
4 files changed, 22 insertions(+)
diff --git
a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/PhoenixHBaseAccessor.java
b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/PhoenixHBaseAccessor.java
index 6f8a1de..600114b 100644
---
a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/PhoenixHBaseAccessor.java
+++
b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/PhoenixHBaseAccessor.java
@@ -316,6 +316,7 @@ public class PhoenixHBaseAccessor {
Connection conn = null;
PreparedStatement metricRecordStmt = null;
List<TimelineMetric> transientMetrics = new ArrayList<>();
+ int rowCount = 0;
try {
conn = getConnection();
@@ -339,6 +340,7 @@ public class PhoenixHBaseAccessor {
metric.getMetricValues());
if (aggregates[3] != 0.0) {
+ rowCount++;
byte[] uuid = metadataManagerInstance.getUuid(metric, true);
if (uuid == null) {
LOG.error("Error computing UUID for metric. Cannot write metrics
: " + metric.toString());
@@ -358,6 +360,12 @@ public class PhoenixHBaseAccessor {
} catch (SQLException sql) {
LOG.error("Failed on insert records to store.", sql);
}
+
+ if (rowCount >= PHOENIX_MAX_MUTATION_STATE_SIZE - 1) {
+ conn.commit();
+ rowCount = 0;
+ }
+
} else {
LOG.debug("Discarding empty metric record for : [" +
metric.getMetricName() + "," +
metric.getAppId() + "," +
diff --git
a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/aggregators/AbstractTimelineAggregator.java
b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/aggregators/AbstractTimelineAggregator.java
index d3bdd9e..f12a597 100644
---
a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/aggregators/AbstractTimelineAggregator.java
+++
b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/aggregators/AbstractTimelineAggregator.java
@@ -271,8 +271,10 @@ public abstract class AbstractTimelineAggregator
implements TimelineMetricAggreg
LOG.debug("Query issued @: " + new Date());
if (condition.doUpdate()) {
+ conn.setAutoCommit(true);
int rows = stmt.executeUpdate();
conn.commit();
+ conn.setAutoCommit(false);
LOG.info(rows + " row(s) updated in aggregation.");
//TODO : Fix downsampling after UUID change.
diff --git
a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/query/PhoenixTransactSQL.java
b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/query/PhoenixTransactSQL.java
index af24deb..539bb17 100644
---
a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/query/PhoenixTransactSQL.java
+++
b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/query/PhoenixTransactSQL.java
@@ -508,6 +508,8 @@ public class PhoenixTransactSQL {
String query;
if (condition.getPrecision() == null) {
condition.setPrecision(getBestPrecisionForCondition(condition));
+ } else {
+ condition.setNoLimit();
}
switch (condition.getPrecision()) {
case DAYS:
@@ -703,6 +705,8 @@ public class PhoenixTransactSQL {
String queryStmt;
if (condition.getPrecision() == null) {
condition.setPrecision(getBestPrecisionForCondition(condition));
+ } else {
+ condition.setNoLimit();
}
switch (condition.getPrecision()) {
case DAYS:
diff --git
a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/ambari/metrics/core/timeline/TestPhoenixTransactSQL.java
b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/ambari/metrics/core/timeline/TestPhoenixTransactSQL.java
index 3960751..332779f 100644
---
a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/ambari/metrics/core/timeline/TestPhoenixTransactSQL.java
+++
b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/ambari/metrics/core/timeline/TestPhoenixTransactSQL.java
@@ -155,6 +155,7 @@ public class TestPhoenixTransactSQL {
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection, condition);
String stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE_MINUTE_UUID"));
+ Assert.assertNull(condition.getLimit());
verify(connection, preparedStatement);
}
@@ -220,6 +221,7 @@ public class TestPhoenixTransactSQL {
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection, condition);
stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE_HOURLY_UUID"));
+ Assert.assertNotNull(condition.getLimit());
Assert.assertEquals(Precision.HOURS, condition.getPrecision());
verify(connection, preparedStatement);
@@ -257,6 +259,7 @@ public class TestPhoenixTransactSQL {
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection, condition);
String stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE_HOURLY_UUID"));
+ Assert.assertNull(condition.getLimit());
verify(connection, preparedStatement);
}
@@ -275,6 +278,7 @@ public class TestPhoenixTransactSQL {
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection, condition);
String stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_MINUTE_UUID"));
+ Assert.assertNull(condition.getLimit());
verify(connection, preparedStatement);
}
@@ -322,6 +326,7 @@ public class TestPhoenixTransactSQL {
stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_UUID"));
Assert.assertEquals(Precision.SECONDS, condition.getPrecision());
+ Assert.assertNotNull(condition.getLimit());
verify(connection, preparedStatement);
// MINUTES precision
@@ -340,6 +345,7 @@ public class TestPhoenixTransactSQL {
stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_MINUTE_UUID"));
Assert.assertEquals(Precision.MINUTES, condition.getPrecision());
+ Assert.assertNotNull(condition.getLimit());
verify(connection, preparedStatement);
// HOURS precision
@@ -357,6 +363,7 @@ public class TestPhoenixTransactSQL {
stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_HOURLY_UUID"));
Assert.assertEquals(Precision.HOURS, condition.getPrecision());
+ Assert.assertNotNull(condition.getLimit());
verify(connection, preparedStatement);
// DAYS precision
@@ -374,6 +381,7 @@ public class TestPhoenixTransactSQL {
stmt = stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_DAILY_UUID"));
Assert.assertEquals(Precision.DAYS, condition.getPrecision());
+ Assert.assertNotNull(condition.getLimit());
verify(connection, preparedStatement);
}
--
To stop receiving notification emails like this one, please contact
[email protected].