in evcache-core/src/main/java/com/netflix/evcache/EVCacheImpl.java [3368:3406]
private Timer getTimer(String operation, String operationType, String hit, String status, int tries, long duration, ServerGroup serverGroup) {
String name = ((hit != null) ? operation + hit : operation);
if(status != null) name += status;
if(tries >= 0) name += tries;
if(serverGroup != null) name += serverGroup.getName();
//if(_cacheName != null) name += _cacheName;
Timer timer = timerMap.get(name);
if(timer != null) return timer;
final List<Tag> tagList = new ArrayList<Tag>(7);
tagList.addAll(tags);
if(operation != null) tagList.add(new BasicTag(EVCacheMetricsFactory.CALL_TAG, operation));
if(operationType != null) tagList.add(new BasicTag(EVCacheMetricsFactory.CALL_TYPE_TAG, operationType));
if(status != null) tagList.add(new BasicTag(EVCacheMetricsFactory.IPC_RESULT, status));
if(hit != null) tagList.add(new BasicTag(EVCacheMetricsFactory.CACHE_HIT, hit));
switch(tries) {
case 0 :
case 1 :
tagList.add(new BasicTag(EVCacheMetricsFactory.ATTEMPT, EVCacheMetricsFactory.INITIAL));
break;
case 2 :
tagList.add(new BasicTag(EVCacheMetricsFactory.ATTEMPT, EVCacheMetricsFactory.SECOND));
break;
default:
tagList.add(new BasicTag(EVCacheMetricsFactory.ATTEMPT, EVCacheMetricsFactory.THIRD_UP));
break;
}
// if(tries == 0) tagList.add(new BasicTag(EVCacheMetricsFactory.ATTEMPT, String.valueOf(tries)));
if(serverGroup != null) {
tagList.add(new BasicTag(EVCacheMetricsFactory.SERVERGROUP, serverGroup.getName()));
tagList.add(new BasicTag(EVCacheMetricsFactory.ZONE, serverGroup.getZone()));
}
timer = EVCacheMetricsFactory.getInstance().getPercentileTimer(EVCacheMetricsFactory.OVERALL_CALL, tagList, Duration.ofMillis(duration));
timerMap.put(name, timer);
return timer;
}