[유치수] [profiler-36] ClosableAsyncHttpClient 인터셉터 추가.

git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-commons/trunk@3967 84d0f5b1-2673-498c-a247-62c4ff18d310
This commit is contained in:
Chisu Yu
2014-06-01 01:51:20 +00:00
parent 30e59b9eaf
commit 650bc2c66f
2 changed files with 87 additions and 46 deletions
@@ -1,8 +1,18 @@
package com.nhn.pinpoint.common;
import com.nhn.pinpoint.common.util.RpcCodeRange;
import static com.nhn.pinpoint.common.HistogramSchema.FAST_SCHEMA;
import static com.nhn.pinpoint.common.HistogramSchema.NORMAL_SCHEMA;
import static com.nhn.pinpoint.common.ServiceTypeConstants.INCLUDE_DESTINATION;
import static com.nhn.pinpoint.common.ServiceTypeConstants.RECORD_STATISTICS;
import static com.nhn.pinpoint.common.ServiceTypeConstants.TERMINAL;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.nhn.pinpoint.common.util.RpcCodeRange;
/**
* @author emeroad
@@ -13,84 +23,103 @@ public enum ServiceType {
/**
* 정의되지 않은 서비스 코드,
*/
UNDEFINED((short) -1, "UNDEFINED", true, false, false, HistogramSchema.NORMAL_SCHEMA),
UNDEFINED((short) -1, "UNDEFINED", TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
/**
* agent가 설치되지 않은 피호출자.
*/
UNKNOWN((short) 1, "UNKNOWN", false, true, false, HistogramSchema.NORMAL_SCHEMA),
UNKNOWN((short) 1, "UNKNOWN", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
/**
* 사용자
*/
USER((short) 2, "USER", false, true, false, HistogramSchema.NORMAL_SCHEMA),
USER((short) 2, "USER", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
/**
* UNKNOWN의 그룹, UI에서만 사용함.
*/
UNKNOWN_GROUP((short) 3, "UNKNOWN_GROUP", false, true, false, HistogramSchema.NORMAL_SCHEMA),
UNKNOWN_GROUP((short) 3, "UNKNOWN_GROUP", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
/**
* TEST의 그룹 - 테스트 실행 시 사용
*/
TEST((short) 5, "TEST", false, false, false, HistogramSchema.NORMAL_SCHEMA),
// WAS류 1000번 부터 시작
STAND_ALONE((short) 1000, "STAND_ALONE", false, true, false, HistogramSchema.NORMAL_SCHEMA),
// testcase를 돌릴때 사용하는 was로 정의 하자.
TEST_STAND_ALONE((short) 1005, "TEST_STAND_ALONE", false, true, false, HistogramSchema.NORMAL_SCHEMA),
TOMCAT((short) 1010, "TOMCAT", false, true, false, HistogramSchema.NORMAL_SCHEMA),
BLOC((short) 1020, "BLOC", false, true, false, HistogramSchema.NORMAL_SCHEMA),
TEST((short) 5, "TEST", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
/**
* Java applications, WAS
*/
STAND_ALONE((short) 1000, "STAND_ALONE", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
TEST_STAND_ALONE((short) 1005, "TEST_STAND_ALONE", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
TOMCAT((short) 1010, "TOMCAT", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
BLOC((short) 1020, "BLOC", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
/**
* Database
* xxx_EXECUTE_QUERY만 server map통계정보에 집계된다.
*/
// DB 2000
UNKNOWN_DB((short) 2050, "UNKNOWN_DB", true, false, true, HistogramSchema.NORMAL_SCHEMA),
UNKNOWN_DB_EXECUTE_QUERY((short) 2051, "UNKNOWN_DB", true, true, true, HistogramSchema.NORMAL_SCHEMA),
UNKNOWN_DB((short) 2050, "UNKNOWN_DB", TERMINAL, !RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
UNKNOWN_DB_EXECUTE_QUERY((short) 2051, "UNKNOWN_DB", TERMINAL, RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
MYSQL((short) 2100, "MYSQL", true, false, true, HistogramSchema.NORMAL_SCHEMA),
MYSQL_EXECUTE_QUERY((short) 2101, "MYSQL", true, true, true, HistogramSchema.NORMAL_SCHEMA),
MYSQL((short) 2100, "MYSQL", TERMINAL, !RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
MYSQL_EXECUTE_QUERY((short) 2101, "MYSQL", TERMINAL, RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
MSSQL((short) 2200, "MSSQL", true, false, true, HistogramSchema.NORMAL_SCHEMA),
MSSQL_EXECUTE_QUERY((short) 2201, "MSSQL", true, true, true, HistogramSchema.NORMAL_SCHEMA),
MSSQL((short) 2200, "MSSQL", TERMINAL, !RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
MSSQL_EXECUTE_QUERY((short) 2201, "MSSQL", TERMINAL, RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
ORACLE((short) 2300, "ORACLE", true, false, true, HistogramSchema.NORMAL_SCHEMA),
ORACLE_EXECUTE_QUERY((short) 2301, "ORACLE", true, true, true, HistogramSchema.NORMAL_SCHEMA),
ORACLE((short) 2300, "ORACLE", TERMINAL, !RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
ORACLE_EXECUTE_QUERY((short) 2301, "ORACLE", TERMINAL, RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
CUBRID((short) 2400, "CUBRID", true, false, true, HistogramSchema.NORMAL_SCHEMA),
CUBRID_EXECUTE_QUERY((short) 2401, "CUBRID", true, true, true, HistogramSchema.NORMAL_SCHEMA),
CUBRID((short) 2400, "CUBRID", TERMINAL, !RECORD_STATISTICS, INCLUDE_DESTINATION, NORMAL_SCHEMA),
CUBRID_EXECUTE_QUERY((short) 2401, "CUBRID", TERMINAL, RECORD_STATISTICS, true, NORMAL_SCHEMA),
/**
* Internal method
*/
// FIXME internal method를 여기에 넣기 애매하긴 하나.. 일단 그대로 둠.
INTERNAL_METHOD((short) 5000, "INTERNAL_METHOD", false, false, false, HistogramSchema.NORMAL_SCHEMA),
INTERNAL_METHOD((short) 5000, "INTERNAL_METHOD", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
SPRING((short) 5050, "SPRING", false, false, false, HistogramSchema.NORMAL_SCHEMA),
SPRING_MVC((short) 5051, "SPRING", false, false, false, HistogramSchema.NORMAL_SCHEMA),
/**
* Spring framework
*/
SPRING((short) 5050, "SPRING", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
SPRING_MVC((short) 5051, "SPRING", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
// FIXME 스프링 관련 코드들 어떻게 가져갈지 정리 필요
SPRING_ORM_IBATIS((short) 5061, "SPRING", false, false, false, HistogramSchema.NORMAL_SCHEMA),
SPRING_ORM_IBATIS((short) 5061, "SPRING", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
IBATIS((short) 5500, "IBATIS", false, false, false, HistogramSchema.NORMAL_SCHEMA),
MYBATIS((short) 5510, "MYBATIS", false, false, false, HistogramSchema.NORMAL_SCHEMA),
/**
* xBatis
*/
IBATIS((short) 5500, "IBATIS", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
MYBATIS((short) 5510, "MYBATIS", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
DBCP((short) 6050, "DBCP", false, false, false, HistogramSchema.NORMAL_SCHEMA),
/**
* DBCP
*/
DBCP((short) 6050, "DBCP", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
// memory cache 8000
MEMCACHED((short) 8050, "MEMCACHED", true, true, false, HistogramSchema.FAST_SCHEMA),
MEMCACHED_FUTURE_GET((short) 8051, "MEMCACHED", true, false, false, HistogramSchema.FAST_SCHEMA),
ARCUS((short) 8100, "ARCUS", true, true, true, HistogramSchema.FAST_SCHEMA),
ARCUS_FUTURE_GET((short) 8101, "ARCUS", true, false, true, HistogramSchema.FAST_SCHEMA),
/**
* Memory cache
*/
MEMCACHED((short) 8050, "MEMCACHED", TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, FAST_SCHEMA),
MEMCACHED_FUTURE_GET((short) 8051, "MEMCACHED", TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, FAST_SCHEMA),
ARCUS((short) 8100, "ARCUS", TERMINAL, RECORD_STATISTICS, INCLUDE_DESTINATION, FAST_SCHEMA),
ARCUS_FUTURE_GET((short) 8101, "ARCUS", TERMINAL, !RECORD_STATISTICS, INCLUDE_DESTINATION, FAST_SCHEMA),
// connector류
HTTP_CLIENT((short) 9050, "HTTP_CLIENT", false, true, false, HistogramSchema.NORMAL_SCHEMA),
JDK_HTTPURLCONNECTOR((short) 9055, "JDK_HTTPCONNECTOR", false, true, false, HistogramSchema.NORMAL_SCHEMA),
NPC_CLIENT((short) 9060, "NPC_CLIENT", false, true, false, HistogramSchema.NORMAL_SCHEMA),
NIMM_CLIENT((short) 9070, "NIMM_CLIENT", false, true, false, HistogramSchema.NORMAL_SCHEMA);
/**
* Connector, Client
*/
HTTP_CLIENT((short) 9050, "HTTP_CLIENT", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
HTTP_CLIENT_INTERNAL((short) 9051, "HTTP_CLIENT", !TERMINAL, !RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
JDK_HTTPURLCONNECTOR((short) 9055, "JDK_HTTPCONNECTOR", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
NPC_CLIENT((short) 9060, "NPC_CLIENT", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA),
NIMM_CLIENT((short) 9070, "NIMM_CLIENT", !TERMINAL, RECORD_STATISTICS, !INCLUDE_DESTINATION, NORMAL_SCHEMA);
private final short code;
private final String desc;
private final boolean terminal;
// TODO rpc 호출에 대해서만 통계정보를 남길 것이니, rpc()로 바꾸는건 어떨지???
// FIXME rpc 호출에 대해서만 통계정보를 남길 것이니, isRecordRpc()로 바꾸는건 어떨지???
private final boolean recordStatistics;
// DetinationId를 포함시켜 api를 출력하지 여부
@@ -125,7 +154,7 @@ public enum ServiceType {
return !terminal && !isRpcClient() && code > 1000;
}
// TODO rpc 호출에 대해서만 통계정보를 남길 것이니, isRpc()로 바꾸는건 어떨지???
// FIXME rpc 호출에 대해서만 통계정보를 남길 것이니, isRecordRpc()로 바꾸는건 어떨지???
public boolean isRecordStatistics() {
return recordStatistics;
}
@@ -135,9 +164,9 @@ public enum ServiceType {
*
* @return
*/
public boolean isUnknown() {
return this == ServiceType.UNKNOWN; // || this == ServiceType.UNKNOWN_CLOUD;
}
public boolean isUnknown() {
return this == ServiceType.UNKNOWN; // || this == ServiceType.UNKNOWN_CLOUD;
}
/**
* 사용자 또는 알 수 없는 호출자인가?
@@ -0,0 +1,12 @@
package com.nhn.pinpoint.common;
/**
*
* @author netspider
*
*/
public class ServiceTypeConstants {
public static final boolean TERMINAL = true;
public static final boolean RECORD_STATISTICS = true;
public static final boolean INCLUDE_DESTINATION = true;
}