in ambari-metrics-timelineservice/src/main/java/org/apache/ambari/metrics/core/timeline/PhoenixHBaseAccessor.java [827:889]
public void insertContainerMetrics(List<ContainerMetric> metrics) throws SQLException, IOException {
Connection conn = getConnection();
PreparedStatement metricRecordStmt = null;
try {
metricRecordStmt = conn.prepareStatement(
String.format(UPSERT_CONTAINER_METRICS_SQL, CONTAINER_METRICS_TABLE_NAME));
for (ContainerMetric metric : metrics) {
metricRecordStmt.clearParameters();
metricRecordStmt.setString(1, ContainerId.fromString(metric.getContainerId())
.getApplicationAttemptId().getApplicationId().toString());
metricRecordStmt.setString(2, metric.getContainerId());
metricRecordStmt.setTimestamp(3, new Timestamp(metric.getStartTime()));
metricRecordStmt.setTimestamp(4, new Timestamp(metric.getFinishTime()));
metricRecordStmt.setLong(5, metric.getFinishTime() - metric.getStartTime());
metricRecordStmt.setString(6, metric.getHostName());
metricRecordStmt.setInt(7, metric.getExitCode());
metricRecordStmt.setLong(8, metric.getLocalizationDuration());
metricRecordStmt.setLong(9, metric.getLaunchDuration());
metricRecordStmt.setDouble(10, (double) metric.getPmemLimit() / 1024);
metricRecordStmt.setDouble(11,
((double) metric.getPmemLimit() / 1024) * (metric.getFinishTime()
- metric.getStartTime()));
metricRecordStmt.setDouble(12, (double) metric.getVmemLimit() / 1024);
metricRecordStmt.setDouble(13, (double) metric.getPmemUsedMin() / 1024);
metricRecordStmt.setDouble(14, (double) metric.getPmemUsedMax() / 1024);
metricRecordStmt.setDouble(15, (double) metric.getPmemUsedAvg() / 1024);
metricRecordStmt.setDouble(16, (double) metric.getPmem50Pct() / 1024);
metricRecordStmt.setDouble(17, (double) metric.getPmem75Pct() / 1024);
metricRecordStmt.setDouble(18, (double) metric.getPmem90Pct() / 1024);
metricRecordStmt.setDouble(19, (double) metric.getPmem95Pct()/ 1024);
metricRecordStmt.setDouble(20, (double) metric.getPmem99Pct() / 1024);
metricRecordStmt.setDouble(21, (double) metric.getPmemLimit() / 1024
- (double) metric.getPmemUsedMax() / 1024);
metricRecordStmt.setDouble(22, ((double) metric.getPmemLimit() / 1024
- (double) metric.getPmemUsedMax() / 1024) * (metric.getFinishTime()
- metric.getStartTime()));
try {
metricRecordStmt.executeUpdate();
} catch (SQLException sql) {
LOG.error("Failed on insert records to store.", sql);
}
}
conn.commit();
} finally {
if (metricRecordStmt != null) {
try {
metricRecordStmt.close();
} catch (SQLException e) {
// Ignore
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException sql) {
// Ignore
}
}
}
}