|
@@ -52,6 +52,7 @@ import org.apache.hadoop.yarn.api.records.timelineservice.FlowActivityEntity;
|
|
|
import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntity;
|
|
|
import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntityType;
|
|
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
|
|
+import org.apache.hadoop.yarn.server.timelineservice.metrics.TimelineReaderMetrics;
|
|
|
import org.apache.hadoop.yarn.server.timelineservice.storage.TimelineReader.Field;
|
|
|
import org.apache.hadoop.yarn.util.timeline.TimelineUtils;
|
|
|
import org.apache.hadoop.yarn.webapp.BadRequestException;
|
|
@@ -77,6 +78,8 @@ public class TimelineReaderWebServices {
|
|
|
private static final String QUERY_STRING_SEP = "?";
|
|
|
private static final String RANGE_DELIMITER = "-";
|
|
|
private static final String DATE_PATTERN = "yyyyMMdd";
|
|
|
+ private static final TimelineReaderMetrics METRICS =
|
|
|
+ TimelineReaderMetrics.getInstance();
|
|
|
|
|
|
@VisibleForTesting
|
|
|
static final ThreadLocal<DateFormat> DATE_FORMAT =
|
|
@@ -323,6 +326,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -343,16 +347,19 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForGenericEntities(entities, callerUGI, entityType);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime,
|
|
|
"createdTime start/end or limit or flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -603,6 +610,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -620,16 +628,19 @@ public class TimelineReaderWebServices {
|
|
|
fields, metricsLimit, metricsTimeStart, metricsTimeEnd));
|
|
|
|
|
|
checkAccessForGenericEntities(entities, callerUGI, entityType);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime,
|
|
|
"createdTime start/end or limit or flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -697,6 +708,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
TimelineEntity entity = null;
|
|
@@ -711,18 +723,21 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForGenericEntity(entity, callerUGI);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entity == null) {
|
|
|
LOG.info("Processed URL " + url + " but entity not found" + " (Took " +
|
|
|
- (endTime - startTime) + " ms.)");
|
|
|
+ (Time.monotonicNow() - startTime) + " ms.)");
|
|
|
throw new NotFoundException("Timeline entity with uid: " + uId +
|
|
|
"is not found");
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
@@ -889,6 +904,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
TimelineEntity entity = null;
|
|
@@ -901,18 +917,21 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForGenericEntity(entity, callerUGI);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entity == null) {
|
|
|
LOG.info("Processed URL " + url + " but entity not found" + " (Took " +
|
|
|
- (endTime - startTime) + " ms.)");
|
|
|
+ (Time.monotonicNow() - startTime) + " ms.)");
|
|
|
throw new NotFoundException("Timeline entity {id: " + entityId +
|
|
|
", type: " + entityType + " } is not found");
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
@@ -955,6 +974,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
TimelineEntity entity = null;
|
|
@@ -970,17 +990,20 @@ public class TimelineReaderWebServices {
|
|
|
entity = timelineReaderManager.getEntity(context,
|
|
|
TimelineReaderWebServicesUtils.createTimelineDataToRetrieve(
|
|
|
null, metricsToRetrieve, null, null, null, null));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entity == null) {
|
|
|
LOG.info("Processed URL " + url + " but flowrun not found (Took " +
|
|
|
- (endTime - startTime) + " ms.)");
|
|
|
+ (Time.monotonicNow() - startTime) + " ms.)");
|
|
|
throw new NotFoundException("Flowrun with uid: " + uId + "is not found");
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
@@ -1069,6 +1092,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
TimelineEntity entity = null;
|
|
@@ -1083,20 +1107,23 @@ public class TimelineReaderWebServices {
|
|
|
TimelineReaderWebServicesUtils
|
|
|
.createTimelineDataToRetrieve(null, metricsToRetrieve, null, null,
|
|
|
null, null));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entity == null) {
|
|
|
LOG.info("Processed URL " + url + " but flowrun not found (Took " +
|
|
|
- (endTime - startTime) + " ms.)");
|
|
|
+ (Time.monotonicNow() - startTime) + " ms.)");
|
|
|
throw new NotFoundException("Flow run {flow name: " +
|
|
|
TimelineReaderWebServicesUtils.parseStr(flowName) + ", run id: " +
|
|
|
TimelineReaderWebServicesUtils.parseLongStr(flowRunId) +
|
|
|
" } is not found");
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
@@ -1161,6 +1188,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -1179,16 +1207,19 @@ public class TimelineReaderWebServices {
|
|
|
null, null, null, fromId),
|
|
|
TimelineReaderWebServicesUtils.createTimelineDataToRetrieve(
|
|
|
null, metricsToRetrieve, fields, null, null, null));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime,
|
|
|
"createdTime start/end or limit or fromId");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -1316,6 +1347,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -1335,16 +1367,19 @@ public class TimelineReaderWebServices {
|
|
|
TimelineReaderWebServicesUtils
|
|
|
.createTimelineDataToRetrieve(null, metricsToRetrieve, fields,
|
|
|
null, null, null));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime,
|
|
|
"createdTime start/end or limit or fromId");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -1455,6 +1490,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -1470,18 +1506,21 @@ public class TimelineReaderWebServices {
|
|
|
TimelineEntityType.YARN_FLOW_ACTIVITY.toString(), null, null),
|
|
|
entityFilters, TimelineReaderWebServicesUtils.
|
|
|
createTimelineDataToRetrieve(null, null, null, null, null, null));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "limit");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
} else {
|
|
|
checkAccess(timelineReaderManager, callerUGI, entities,
|
|
|
FlowActivityEntity.USER_INFO_KEY, true);
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -1549,6 +1588,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
TimelineEntity entity = null;
|
|
@@ -1564,17 +1604,20 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForAppEntity(entity, callerUGI);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entity == null) {
|
|
|
LOG.info("Processed URL " + url + " but app not found" + " (Took " +
|
|
|
- (endTime - startTime) + " ms.)");
|
|
|
+ (Time.monotonicNow() - startTime) + " ms.)");
|
|
|
throw new NotFoundException("App with uid " + uId + " not found");
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
@@ -1723,6 +1766,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
TimelineEntity entity = null;
|
|
@@ -1735,17 +1779,20 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForAppEntity(entity, callerUGI);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entity == null) {
|
|
|
LOG.info("Processed URL " + url + " but app not found" + " (Took " +
|
|
|
- (endTime - startTime) + " ms.)");
|
|
|
+ (Time.monotonicNow() - startTime) + " ms.)");
|
|
|
throw new NotFoundException("App " + appId + " not found");
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
@@ -1856,6 +1903,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -1876,16 +1924,19 @@ public class TimelineReaderWebServices {
|
|
|
TimelineReaderWebServicesUtils.createTimelineDataToRetrieve(
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime,
|
|
|
"createdTime start/end or limit or flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -3262,6 +3313,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<String> results = null;
|
|
@@ -3270,12 +3322,15 @@ public class TimelineReaderWebServices {
|
|
|
TimelineReaderWebServicesUtils.createTimelineReaderContext(
|
|
|
clusterId, userId, flowName, flowRunId, appId,
|
|
|
null, null, null));
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "flowrunid");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntityTypesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return results;
|
|
|
}
|
|
|
|
|
@@ -3343,6 +3398,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user " +
|
|
|
TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -3359,16 +3415,19 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForSubAppEntities(entities,callerUGI);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime,
|
|
|
"createdTime start/end or limit");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info("Processed URL " + url +
|
|
|
+ " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info("Processed URL " + url +
|
|
|
- " (Took " + (endTime - startTime) + " ms.)");
|
|
|
return entities;
|
|
|
}
|
|
|
|
|
@@ -3414,6 +3473,7 @@ public class TimelineReaderWebServices {
|
|
|
LOG.info("Received URL " + url + " from user "
|
|
|
+ TimelineReaderWebServicesUtils.getUserName(callerUGI));
|
|
|
long startTime = Time.monotonicNow();
|
|
|
+ boolean succeeded = false;
|
|
|
init(res);
|
|
|
TimelineReaderManager timelineReaderManager = getTimelineReaderManager();
|
|
|
Set<TimelineEntity> entities = null;
|
|
@@ -3427,15 +3487,19 @@ public class TimelineReaderWebServices {
|
|
|
confsToRetrieve, metricsToRetrieve, fields, metricsLimit,
|
|
|
metricsTimeStart, metricsTimeEnd));
|
|
|
checkAccessForSubAppEntities(entities,callerUGI);
|
|
|
+ succeeded = true;
|
|
|
} catch (Exception e) {
|
|
|
handleException(e, url, startTime, "");
|
|
|
+ } finally {
|
|
|
+ long latency = Time.monotonicNow() - startTime;
|
|
|
+ METRICS.addGetEntitiesLatency(latency, succeeded);
|
|
|
+ LOG.info(
|
|
|
+ "Processed URL " + url + " (Took " + latency + " ms.)");
|
|
|
}
|
|
|
- long endTime = Time.monotonicNow();
|
|
|
if (entities == null) {
|
|
|
entities = Collections.emptySet();
|
|
|
}
|
|
|
- LOG.info(
|
|
|
- "Processed URL " + url + " (Took " + (endTime - startTime) + " ms.)");
|
|
|
+
|
|
|
return entities;
|
|
|
}
|
|
|
|