diff --git a/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatStore.java b/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatStore.java index 184a406f1..4227f5341 100644 --- a/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatStore.java +++ b/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatStore.java @@ -11,8 +11,8 @@ public interface AgentStatStore { AgentStat get(String agentId); + String getInJson(); + String getInJson(String agentId); - - String toJson(); } diff --git a/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatSupport.java b/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatSupport.java index 20a5fe9db..32da3f5f6 100644 --- a/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatSupport.java +++ b/src/main/java/com/nhn/pinpoint/collector/monitor/AgentStatSupport.java @@ -6,6 +6,12 @@ import com.nhn.pinpoint.common.dto2.thrift.StatWithG1Collector; import com.nhn.pinpoint.common.dto2.thrift.StatWithParallelCollector; import com.nhn.pinpoint.common.dto2.thrift.AgentStat._Fields; +/** + * AgentStat 메시지에서 agentId, timestamp 등의 공통 정보를 꺼내올 수 있는 유틸리티. + * AgentStat에 포함될 struct들이 agentId, timestamp 필드를 가지고 있다고 가정한다. + * + * @author harebox + */ public class AgentStatSupport { public static String getAgentId(AgentStat agentStat) { diff --git a/src/main/java/com/nhn/pinpoint/collector/monitor/DefaultAgentStatStore.java b/src/main/java/com/nhn/pinpoint/collector/monitor/DefaultAgentStatStore.java index 8d1a60da2..d6b4c3e74 100644 --- a/src/main/java/com/nhn/pinpoint/collector/monitor/DefaultAgentStatStore.java +++ b/src/main/java/com/nhn/pinpoint/collector/monitor/DefaultAgentStatStore.java @@ -6,22 +6,26 @@ import java.util.concurrent.ConcurrentHashMap; import org.codehaus.jackson.map.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import com.nhn.pinpoint.common.dto2.thrift.AgentStat; /** - * + * 테스트를 위해 메모리에 (AgentId -> AgentStat) 맵을 캐싱해둔다. * @author harebox */ public class DefaultAgentStatStore implements AgentStatStore { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + @Qualifier("jsonObjectMapper") + private ObjectMapper jsonObjectMapper; + // in-memory storage private Map map = new ConcurrentHashMap(); - private ObjectMapper jsonMapper = new ObjectMapper(); - public void store(AgentStat agentStat) { String agentId = AgentStatSupport.getAgentId(agentStat); @@ -43,7 +47,7 @@ public class DefaultAgentStatStore implements AgentStatStore { AgentStat agentStat = map.get(agentId); if (agentStat != null) { Object typeObject = agentStat.getFieldValue(agentStat.getSetField()); - result = jsonMapper.writeValueAsString(typeObject); + result = jsonObjectMapper.writeValueAsString(typeObject); } } catch (Exception e) { logger.error("failed to serialze the object to JSON : {}", e.getMessage()); @@ -51,7 +55,7 @@ public class DefaultAgentStatStore implements AgentStatStore { return result; } - public String toJson() { + public String getInJson() { StringBuilder sb = new StringBuilder(); sb.append("{"); sb.append("\"agentId\"").append(" : ").append("\"").append(map.keySet().toString()).append("\""); diff --git a/src/main/java/com/nhn/pinpoint/collector/monitor/servlet/AgentStatServlet.java b/src/main/java/com/nhn/pinpoint/collector/monitor/servlet/AgentStatServlet.java index 143a04e40..74e13a0f1 100644 --- a/src/main/java/com/nhn/pinpoint/collector/monitor/servlet/AgentStatServlet.java +++ b/src/main/java/com/nhn/pinpoint/collector/monitor/servlet/AgentStatServlet.java @@ -62,7 +62,7 @@ public class AgentStatServlet extends HttpServlet { jsonpCallback(req, res, "{\"error\": \"not found : " + agentId + "\"}"); } } else { - jsonpCallback(req, res, statServer.getStore().toJson()); + jsonpCallback(req, res, statServer.getStore().getInJson()); } } diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml index 9156762e9..ab07c7f74 100644 --- a/src/main/resources/applicationContext.xml +++ b/src/main/resources/applicationContext.xml @@ -74,4 +74,7 @@ + + + \ No newline at end of file