提交 a2f7b1f5 编写于 作者: Y youyong205

Merge pull request #879 from youyong205/master

refactor code
......@@ -5,14 +5,14 @@ import java.util.List;
public class StatusExtensionRegister {
private List<StatusExtension> m_extensions = new ArrayList<StatusExtension>();
public static StatusExtensionRegister s_register = new StatusExtensionRegister();
public static StatusExtensionRegister getInstance() {
return s_register;
}
private List<StatusExtension> m_extensions = new ArrayList<StatusExtension>();
public static StatusExtensionRegister s_register = new StatusExtensionRegister();
private StatusExtensionRegister() {
}
......@@ -27,4 +27,10 @@ public class StatusExtensionRegister {
m_extensions.add(monitor);
}
}
public void unregister(StatusExtension monitor) {
synchronized (this) {
m_extensions.remove(monitor);
}
}
}
......@@ -135,7 +135,11 @@ public class HeartbeatAnalyzer extends AbstractMessageAnalyzer<HeartbeatReport>
Period period = buildHeartBeatInfo(machine, heartbeat, heartbeat.getTimestamp());
if (period != null) {
machine.getPeriods().add(period);
List<Period> periods = machine.getPeriods();
if (periods.size() <= 60) {
machine.getPeriods().add(period);
}
}
}
......
......@@ -62,6 +62,25 @@ public class MetricConfigManager implements Initializable, LogEnabled {
return domain + ":" + type + ":" + metricKey;
}
public boolean deleteBatchDomainConfig(String domain) {
Set<String> keys = new HashSet<String>();
Map<String, MetricItemConfig> metricItemConfigs = getMetricConfig().getMetricItemConfigs();
for (Entry<String, MetricItemConfig> entry : metricItemConfigs.entrySet()) {
String currentKey = entry.getKey();
if (currentKey.startsWith(domain + ":Metric:")) {
keys.add(currentKey);
}
}
for (String key : keys) {
getMetricConfig().removeMetricItemConfig(key);
}
return storeConfig();
}
public boolean deleteDomainConfig(String key) {
getMetricConfig().removeMetricItemConfig(key);
return storeConfig();
......
......@@ -263,7 +263,6 @@ public class IpService implements Initializable {
initForeignAreaMap(foreignAreaFile);
initForeignIpTable(foreignIpFile);
}
public void initIpTable(InputStream ipFile) {
......
package com.dianping.cat.report.page.cross;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import org.unidal.helper.Files;
import org.unidal.lookup.annotation.Inject;
import org.unidal.lookup.util.StringUtils;
import org.unidal.web.mvc.PageHandler;
import org.unidal.web.mvc.annotation.InboundActionMeta;
import org.unidal.web.mvc.annotation.OutboundActionMeta;
import org.unidal.web.mvc.annotation.PayloadMeta;
import org.xml.sax.SAXException;
import com.dianping.cat.consumer.cross.CrossAnalyzer;
import com.dianping.cat.consumer.cross.model.entity.CrossReport;
import com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser;
import com.dianping.cat.mvc.PayloadNormalizer;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.cross.display.HostInfo;
......@@ -51,6 +55,13 @@ public class Handler implements PageHandler<Context> {
ModelResponse<CrossReport> response = m_service.invoke(request);
CrossReport report = response.getModel();
try {
String xml = Files.forIO().readFrom(new File("/Users/youyong/Desktop/cross.xml"), "utf-8");
report = DefaultSaxParser.parse(xml);
} catch (Exception e) {
e.printStackTrace();
}
return report;
} else {
throw new RuntimeException("Internal error: no eligable cross service registered for " + request + "!");
......
......@@ -62,6 +62,8 @@ public enum Action implements org.unidal.web.mvc.Action {
METRIC_RULE_ADD_OR_UPDATE_SUBMIT("metricRuleAddSubmit"),
METRIC_CONFIG_DELETE("metricConfigDelete"),
METRIC_CONFIG_BATCH_DELETE("metricConfigBatchDelete"),
METRIC_RULE_CONFIG_UPDATE("metricRuleConfigUpdate"),
......
......@@ -174,6 +174,7 @@ public class Handler implements PageHandler<Context> {
case METRIC_RULE_ADD_OR_UPDATE_SUBMIT:
case METRIC_CONFIG_LIST:
case METRIC_CONFIG_DELETE:
case METRIC_CONFIG_BATCH_DELETE:
case METRIC_RULE_CONFIG_UPDATE:
m_metricConfigProcessor.process(action, payload, model);
break;
......
......@@ -69,8 +69,8 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
case METRIC_CONFIG_ADD_OR_UPDATE_SUBMIT:
return JspFile.METRIC_CONFIG_ADD_OR_UPDATE_SUBMIT.getPath();
case METRIC_CONFIG_LIST:
return JspFile.METRIC_CONFIG_LIST.getPath();
case METRIC_CONFIG_DELETE:
case METRIC_CONFIG_BATCH_DELETE:
return JspFile.METRIC_CONFIG_LIST.getPath();
case METRIC_RULE_CONFIG_UPDATE:
return JspFile.METRIC_RULE_CONFIG_UPDATE.getPath();
......
......@@ -157,6 +157,10 @@ public class MetricConfigProcessor extends BaseProcesser {
payload.getDomain(), payload.getType(), payload.getMetricKey())));
metricConfigList(payload, model);
break;
case METRIC_CONFIG_BATCH_DELETE:
model.setOpState(m_metricConfigManager.deleteBatchDomainConfig(payload.getDomain()));
metricConfigList(payload, model);
break;
case METRIC_RULE_CONFIG_UPDATE:
String domainMetricRuleConfig = payload.getContent();
if (!StringUtils.isEmpty(domainMetricRuleConfig)) {
......@@ -170,5 +174,4 @@ public class MetricConfigProcessor extends BaseProcesser {
throw new RuntimeException("Error action name " + action.getName());
}
}
}
......@@ -118,8 +118,8 @@ public class RouterConfigHandler implements LogEnabled {
processBackServer(servers, routerConfig, numbers);
routerConfig.setStartTime(end);
routerConfig.setEndTime(new Date(end.getTime() + TimeHelper.ONE_DAY));
routerConfig.setStartTime(period);
routerConfig.setEndTime(end);
return routerConfig;
}
......
......@@ -186,20 +186,34 @@ public class RouterConfigManager implements Initializable, LogEnabled {
refreshReportInfo();
}
private void refreshReportInfo() throws DalException, SAXException, IOException {
private void refreshReportInfo() throws Exception {
Date period = TimeHelper.getCurrentDay(-1);
long time = period.getTime();
DailyReport report = m_dailyReportDao.findByDomainNamePeriod(Constants.CAT, RouterConfigBuilder.ID, period,
DailyReportEntity.READSET_FULL);
long modifyTime = report.getCreationDate().getTime();
Pair<RouterConfig, Long> pair = m_routerConfigs.get(time);
if (pair == null || modifyTime > pair.getValue()) {
DailyReportContent reportContent = m_dailyReportContentDao.findByPK(report.getId(),
DailyReportContentEntity.READSET_FULL);
RouterConfig routerConfig = DefaultNativeParser.parse(reportContent.getContent());
m_routerConfigs.put(time, new Pair<RouterConfig, Long>(routerConfig, modifyTime));
try {
DailyReport report = m_dailyReportDao.findByDomainNamePeriod(Constants.CAT, RouterConfigBuilder.ID, period,
DailyReportEntity.READSET_FULL);
long modifyTime = report.getCreationDate().getTime();
Pair<RouterConfig, Long> pair = m_routerConfigs.get(time);
if (pair == null || modifyTime > pair.getValue()) {
try {
DailyReportContent reportContent = m_dailyReportContentDao.findByPK(report.getId(),
DailyReportContentEntity.READSET_FULL);
RouterConfig routerConfig = DefaultNativeParser.parse(reportContent.getContent());
m_routerConfigs.put(time, new Pair<RouterConfig, Long>(routerConfig, modifyTime));
Cat.logEvent("ReloadConfig", "router");
} catch (DalNotFoundException e) {
// ignore
} catch (Exception e) {
throw e;
}
}
} catch (DalNotFoundException e) {
// ignore
} catch (Exception e) {
throw e;
}
}
......
<?xml version="1.0" encoding="utf-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1">
<description>web-core JSP tag library</description>
<display-name>web-core</display-name>
<tlib-version>1.2</tlib-version>
<short-name>w</short-name>
<uri>http://www.unidal.org/web/core</uri>
<tag>
<description>Errors tag of MVC framework.</description>
<name>errors</name>
<tag-class>org.unidal.web.jsp.tag.ErrorsTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description></description>
<name>bundle</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>class java.lang.String</type>
</attribute>
<dynamic-attributes>false</dynamic-attributes>
</tag>
<tag>
<description>Error tag of MVC framework.</description>
<name>error</name>
<tag-class>org.unidal.web.jsp.tag.ErrorTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description></description>
<name>code</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>class java.lang.String</type>
</attribute>
<attribute>
<description></description>
<name>enabled</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>boolean</type>
</attribute>
<dynamic-attributes>false</dynamic-attributes>
</tag>
<function>
<description>Min value of field value of list elements</description>
<name>min</name>
<function-class>org.unidal.web.jsp.function.CalculatorFunction</function-class>
<function-signature>int min(java.util.List, java.lang.String)</function-signature>
<example>${w:min(list, 'count')}</example>
</function>
<function>
<description>Max value of field value of list elements</description>
<name>max</name>
<function-class>org.unidal.web.jsp.function.CalculatorFunction</function-class>
<function-signature>int max(java.util.List, java.lang.String)</function-signature>
<example>${w:max(list, 'count')}</example>
</function>
<function>
<description>Sum of field value of list elements</description>
<name>sum</name>
<function-class>org.unidal.web.jsp.function.CalculatorFunction</function-class>
<function-signature>double sum(java.util.List, java.lang.String)</function-signature>
<example>${w:sum(list, 'amount')}</example>
</function>
<function>
<description>HTML encode</description>
<name>htmlEncode</name>
<function-class>org.unidal.web.jsp.function.CodecFunction</function-class>
<function-signature>java.lang.String htmlEncode(java.lang.String)</function-signature>
<example>${w:htmlEncode(str)}</example>
</function>
<function>
<description>URL decode</description>
<name>urlDecode</name>
<function-class>org.unidal.web.jsp.function.CodecFunction</function-class>
<function-signature>java.lang.String urlDecode(java.lang.String)</function-signature>
<example>${w:urlDecode(str)}</example>
</function>
<function>
<description>URL encode</description>
<name>urlEncode</name>
<function-class>org.unidal.web.jsp.function.CodecFunction</function-class>
<function-signature>java.lang.String urlEncode(java.lang.String)</function-signature>
<example>${w:urlEncode(str)}</example>
</function>
<function>
<description>Show checkbox from an object's properties in a form</description>
<name>showCheckbox</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.String showCheckbox(java.lang.String, java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showCheckbox('groupBy', groupBy, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Show multiple checkboxes from a list or array object's properties in a form</description>
<name>showCheckboxes</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.String showCheckboxes(java.lang.String, java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showCheckboxes('groupBy', groupBys, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Show select option from an object's properties in a form</description>
<name>showOption</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.String showOption(java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showOption(groupBy, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Show multiple select options from a list or array object's properties in a form</description>
<name>showOptions</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.String showOptions(java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showOptions(groupBys, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Show radio from an object's properties in a form</description>
<name>showRadio</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.String showRadio(java.lang.String, java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showRadio('groupBy', groupBy, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Show multiple radios from a list or array object's properties in a form</description>
<name>showRadios</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.String showRadios(java.lang.String, java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showRadios('groupBy', groupBys, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Show selected result of checkbox, radio or option from an object's properties in a form</description>
<name>showResult</name>
<function-class>org.unidal.web.jsp.function.FormFunction</function-class>
<function-signature>java.lang.Object showResult(java.lang.Object, java.lang.Object, java.lang.String, java.lang.String)</function-signature>
<example>${w:showResult(groupBys, payload.groupBy, 'name', 'description')}</example>
</function>
<function>
<description>Format object using message pattern</description>
<name>format</name>
<function-class>org.unidal.web.jsp.function.FormatFunction</function-class>
<function-signature>java.lang.String format(java.lang.Object, java.lang.String)</function-signature>
<example>${w:format(payload.dateFrom,'yyyy-MM-dd')}</example>
</function>
<function>
<description>Format number with message pattern with auto scaling</description>
<name>formatNumber</name>
<function-class>org.unidal.web.jsp.function.FormatFunction</function-class>
<function-signature>java.lang.String formatNumber(java.lang.Number, java.lang.String, java.lang.String)</function-signature>
<example>${w:formatNumber(12345, '0.#', 'B')}</example>
</function>
<function>
<description>Format number in percentage</description>
<name>percentage</name>
<function-class>org.unidal.web.jsp.function.FormatFunction</function-class>
<function-signature>java.lang.String percentage(int, int, int)</function-signature>
<example>${w:percentage(4, 11, 2)}</example>
</function>
<function>
<description>Shorten a message</description>
<name>shorten</name>
<function-class>org.unidal.web.jsp.function.FormatFunction</function-class>
<function-signature>java.lang.String shorten(java.lang.String, int)</function-signature>
<example>${w:shorten('123456789', 5)} will be '1...9'</example>
</function>
<function>
<description>Translate code based on a mapping table</description>
<name>translate</name>
<function-class>org.unidal.web.jsp.function.MappingFunction</function-class>
<function-signature>java.lang.String translate(java.lang.String, java.lang.String, java.lang.String, java.lang.String)</function-signature>
<example>${w:translate('2', '1|2|3', 'one|two|three', 'not found')}</example>
</function>
<function>
<description>Length of String, or array</description>
<name>length</name>
<function-class>org.unidal.web.jsp.function.ObjectFunction</function-class>
<function-signature>java.lang.Object length(java.lang.Object)</function-signature>
<example>${w:length(obj)}</example>
</function>
<function>
<description>size of colection, or map</description>
<name>size</name>
<function-class>org.unidal.web.jsp.function.ObjectFunction</function-class>
<function-signature>java.lang.Object size(java.lang.Object)</function-signature>
<example>${w:size(obj)}</example>
</function>
<function>
<description>Check if the value is equal or is one of value in the given values.</description>
<name>in</name>
<function-class>org.unidal.web.jsp.function.ObjectFunction</function-class>
<function-signature>boolean in(java.lang.Object, java.lang.Object)</function-signature>
<example>${w:in(values, value)}</example>
</function>
</taglib>
......@@ -249,6 +249,7 @@ function graphMetricChartForDay(container, data, datePair) {
}
return Highcharts.dateFormat('%Y-%m-%d %H:%M', this.x*300000 + Date.parse(datePair[this.series.name]))
+ '~' + Highcharts.dateFormat('%H:%M', (this.x+1)*300000 + Date.parse(datePair[this.series.name]))
+ '<br/>[' + this.series.name + '] ' + '<b>'
+ number + '</b>';
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册