use of com.navercorp.pinpoint.thrift.dto.command.TActiveThreadDump in project pinpoint by naver.
the class AgentCommandController method getActiveThreadDump.
@RequestMapping(value = "/activeThreadDump", method = RequestMethod.GET)
public ModelAndView getActiveThreadDump(@RequestParam(value = "applicationName") String applicationName, @RequestParam(value = "agentId") String agentId, @RequestParam(value = "limit", required = false, defaultValue = "-1") int limit, @RequestParam(value = "threadName", required = false) String[] threadNameList, @RequestParam(value = "localTraceId", required = false) Long[] localTraceIdList) throws TException {
if (!webProperties.isEnableActiveThreadDump()) {
return createResponse(false, "Disable activeThreadDump option. 'config.enable.activeThreadDump=false'");
}
AgentInfo agentInfo = agentService.getAgentInfo(applicationName, agentId);
if (agentInfo == null) {
return createResponse(false, String.format("Can't find suitable Agent(%s/%s)", applicationName, agentId));
}
TCmdActiveThreadDump threadDump = new TCmdActiveThreadDump();
if (limit > 0) {
threadDump.setLimit(limit);
}
if (threadNameList != null) {
threadDump.setThreadNameList(Arrays.asList(threadNameList));
}
if (localTraceIdList != null) {
threadDump.setLocalTraceIdList(Arrays.asList(localTraceIdList));
}
try {
PinpointRouteResponse pinpointRouteResponse = agentService.invoke(agentInfo, threadDump);
if (isSuccessResponse(pinpointRouteResponse)) {
TBase<?, ?> result = pinpointRouteResponse.getResponse();
if (result instanceof TCmdActiveThreadDumpRes) {
TCmdActiveThreadDumpRes activeThreadDumpResponse = (TCmdActiveThreadDumpRes) result;
List<TActiveThreadDump> activeThreadDumps = activeThreadDumpResponse.getThreadDumps();
AgentActiveThreadDumpFactory factory = new AgentActiveThreadDumpFactory();
AgentActiveThreadDumpList activeThreadDumpList = factory.create1(activeThreadDumps);
Map<String, Object> responseData = createResponseData(activeThreadDumpList, activeThreadDumpResponse.getType(), activeThreadDumpResponse.getSubType(), activeThreadDumpResponse.getVersion());
return createResponse(true, responseData);
}
}
return handleFailedResponse(pinpointRouteResponse);
} catch (TException e) {
return createResponse(false, e.getMessage());
}
}
use of com.navercorp.pinpoint.thrift.dto.command.TActiveThreadDump in project pinpoint by naver.
the class ActiveThreadDumpService method requestCommandService.
@Override
public TBase<?, ?> requestCommandService(TBase tBase) {
TCmdActiveThreadDump request = (TCmdActiveThreadDump) tBase;
List<TActiveThreadDump> activeThreadDumpList = getActiveThreadDumpList(request);
TCmdActiveThreadDumpRes response = new TCmdActiveThreadDumpRes();
response.setType("JAVA");
response.setSubType(JvmUtils.getType().name());
response.setVersion(JvmUtils.getVersion().name());
response.setThreadDumps(activeThreadDumpList);
return response;
}
use of com.navercorp.pinpoint.thrift.dto.command.TActiveThreadDump in project pinpoint by naver.
the class ActiveThreadDumpService method getActiveThreadDumpList.
private List<TActiveThreadDump> getActiveThreadDumpList(TCmdActiveThreadDump request, int limit, List<ActiveTraceInfo> activeTraceInfoList) {
int targetThreadNameListSize = request.getThreadNameListSize();
int localTraceIdListSize = request.getLocalTraceIdListSize();
boolean filterEnable = (targetThreadNameListSize + localTraceIdListSize) > 0;
List<TActiveThreadDump> activeThreadDumpList = new ArrayList<TActiveThreadDump>(Math.min(limit, activeTraceInfoList.size()));
if (filterEnable) {
for (ActiveTraceInfo activeTraceInfo : activeTraceInfoList) {
if (!ActiveThreadDumpUtils.isTraceThread(activeTraceInfo, request.getThreadNameList(), request.getLocalTraceIdList())) {
continue;
}
TActiveThreadDump activeThreadDump = createActiveThreadDump(activeTraceInfo);
if (activeThreadDump != null) {
if (limit > activeThreadDumpList.size()) {
activeThreadDumpList.add(activeThreadDump);
}
}
}
} else {
for (ActiveTraceInfo activeTraceInfo : activeTraceInfoList) {
TActiveThreadDump activeThreadDump = createActiveThreadDump(activeTraceInfo);
if (activeThreadDump != null) {
if (limit > activeThreadDumpList.size()) {
activeThreadDumpList.add(activeThreadDump);
}
}
}
}
return activeThreadDumpList;
}
use of com.navercorp.pinpoint.thrift.dto.command.TActiveThreadDump in project pinpoint by naver.
the class ActiveThreadDumpService method toTActiveThreadDump.
private List<TActiveThreadDump> toTActiveThreadDump(Collection<ThreadDump> activeTraceInfoList) {
final List<TActiveThreadDump> result = new ArrayList<TActiveThreadDump>(activeTraceInfoList.size());
for (ThreadDump threadDump : activeTraceInfoList) {
TActiveThreadDump tActiveThreadDump = createTActiveThreadDump(threadDump);
result.add(tActiveThreadDump);
}
return result;
}
use of com.navercorp.pinpoint.thrift.dto.command.TActiveThreadDump in project pinpoint by naver.
the class ActiveThreadDumpService method requestCommandService.
@Override
public TBase<?, ?> requestCommandService(TBase<?, ?> tBase) {
TCmdActiveThreadDump request = (TCmdActiveThreadDump) tBase;
List<TActiveThreadDump> activeThreadDumpList = getActiveThreadDumpList(request);
TCmdActiveThreadDumpRes response = new TCmdActiveThreadDumpRes();
response.setType(JAVA);
response.setSubType(JvmUtils.getType().name());
response.setVersion(JvmUtils.getVersion().name());
response.setThreadDumps(activeThreadDumpList);
return response;
}
Aggregations