提交 69959615 编写于 作者: Y yong.you

modify the dependency report of top exception

上级 ede54d06
......@@ -67,7 +67,7 @@ public class TopAnalyzer extends AbstractMessageAnalyzer<TopReport> implements L
topReport.setEndTime(new Date(m_startTime + 60 * MINUTE - 1));
for (String temp : domains) {
if (!temp.equals("FrontEnd")) {
if (validate(temp)) {
TransactionReport report = m_transactionAnalyzer.getReport(temp);
new TransactionReportVisitor(topReport).visitTransactionReport(report);
......@@ -82,6 +82,10 @@ public class TopAnalyzer extends AbstractMessageAnalyzer<TopReport> implements L
return topReport;
}
private boolean validate(String domain) {
return !domain.equals("FrontEnd");
}
@Override
protected void process(MessageTree tree) {
// do nothing
......
......@@ -50,6 +50,7 @@ import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.page.top.TopMetric;
import com.dianping.cat.report.service.ReportService;
public class Handler implements PageHandler<Context> {
......@@ -62,6 +63,9 @@ public class Handler implements PageHandler<Context> {
@Inject
private TopologyGraphManager m_graphManager;
@Inject
private ReportService m_reportService;
@Inject
private JspViewer m_jspViewer;
......@@ -268,7 +272,12 @@ public class Handler implements PageHandler<Context> {
if (m_topService.isEligable(request)) {
ModelResponse<TopReport> response = m_topService.invoke(request);
return response.getModel();
TopReport report = response.getModel();
if (report == null || report.getDomains().size() == 0) {
report = m_reportService.queryTopReport(domain, new Date(payload.getDate()), new Date(payload.getDate()
+ TimeUtil.ONE_HOUR));
}
return report;
} else {
throw new RuntimeException("Internal error: no eligable top service registered for " + request + "!");
}
......@@ -276,17 +285,20 @@ public class Handler implements PageHandler<Context> {
private void buildTopErrorInfo(Payload payload, Model model) {
int minuteCount = payload.getMinuteCounts();
if (!payload.getPeriod().isCurrent()) {
minuteCount = 60;
}
int minute = model.getMinute();
TopReport report = queryTopReport(payload);
TopMetric topMetric = new TopMetric(minuteCount, payload.getTopCounts());
int minute = model.getMinute();
Date end = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * minute);
Date start = new Date(end.getTime() - TimeUtil.ONE_MINUTE * minuteCount);
topMetric.setStart(start).setEnd(end);
if (minuteCount > minute) {
Payload lastPayload = new Payload();
Date lastHour = new Date(payload.getDate() - TimeUtil.ONE_HOUR);
lastPayload.setDate(new SimpleDateFormat("yyyyMMddHH").format(lastHour));
topMetric.visitTopReport(queryTopReport(lastPayload));
}
topMetric.visitTopReport(report);
model.setTopReport(report);
model.setTopMetric(topMetric);
......@@ -322,13 +334,15 @@ public class Handler implements PageHandler<Context> {
Action action = payload.getAction();
Date reportTime = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * model.getMinute());
DependencyReport report = queryDependencyReport(payload);
DependencyReport report = null;
switch (action) {
case TOPOLOGY:
TopologyGraph topologyGraph = m_graphManager.buildTopologyGraph(model.getDomain(), reportTime.getTime());
Map<String, List<String>> graphDependency = parseDependencies(topologyGraph);
Map<String, List<Event>> externalErrors = queryDependencyEvent(graphDependency, model.getDomain(), reportTime);
report = queryDependencyReport(payload);
buildHourlyReport(report, model, payload);
model.setEvents(externalErrors);
m_nodes = new HashSet<String>();
......@@ -339,6 +353,7 @@ public class Handler implements PageHandler<Context> {
model.setTopologyGraph(new DefaultJsonBuilder().buildJson(topologyGraph));
break;
case LINE_CHART:
report = queryDependencyReport(payload);
buildHourlyReport(report, model, payload);
buildHourlyLineGraph(report, model);
......
......@@ -281,10 +281,17 @@ public class TopMetric extends BaseVisitor {
@Override
public int compare(String o1, String o2) {
String first = o1.substring(3, 5);
String end = o2.substring(3, 5);
String hour1 = o1.substring(0, 2);
String hour2 = o2.substring(0, 2);
return Integer.parseInt(end) - Integer.parseInt(first);
if (!hour1.equals(hour2)) {
return Integer.parseInt(hour2) - Integer.parseInt(hour1);
} else {
String first = o1.substring(3, 5);
String end = o2.substring(3, 5);
return Integer.parseInt(end) - Integer.parseInt(first);
}
}
}
}
......@@ -2539,6 +2539,9 @@
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.JspViewer</role>
</requirement>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册