提交 1316c23d 编写于 作者: F Frankie Wu

abtest code wrapup for further test

上级 3a083392
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>com.dianping.cat</groupId>
<artifactId>parent</artifactId>
<version>0.6.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.dianping.cat</groupId>
<artifactId>abtest-sample</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>abtest-sample Maven Webapp</name>
<name>ABTest Sample</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-core</artifactId>
<version>0.5.2.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
......
......@@ -44,13 +44,15 @@ public final class ABTestManager {
}
}
public static void onRequestBegin(HttpServletRequest request,HttpServletResponse response) {
public static void onRequestBegin(HttpServletRequest request, HttpServletResponse response) {
initialize();
s_contextManager.onRequestBegin(request,response);
s_contextManager.onRequestBegin(request, response);
}
public static void onRequestEnd() {
initialize();
s_contextManager.onRequestEnd();
}
}
......@@ -4,7 +4,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface ABTestContext {
public final String DEFAULT_GROUP = "default";
public final String DEFAULT_GROUP = "";
public ABTestEntity getEntity();
......
......@@ -102,7 +102,7 @@ public class ABTestEntity {
}
public boolean isEligible(Date date) {
if (m_run.getDisabled() != null && m_run.getDisabled()) {
if (m_run.isDisabled()) {
return false;
}
......
package com.dianping.cat.abtest.spi.internal;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -11,9 +9,7 @@ import com.dianping.cat.abtest.spi.ABTestContext;
public interface ABTestContextManager {
public ABTestContext getContext(ABTestName testName);
public List<ABTestContext> getContexts();
public void onRequestBegin(HttpServletRequest request,HttpServletResponse response);
public void onRequestBegin(HttpServletRequest request, HttpServletResponse response);
public void onRequestEnd();
}
......@@ -18,28 +18,41 @@ public class DefaultABTestContext implements ABTestContext {
private ABTestEntity m_entity;
private HttpServletRequest m_request;
private HttpServletResponse m_response;
private ABTestGroupStrategy m_groupStrategy;
private boolean m_initialized;
private boolean m_applied;
public DefaultABTestContext(ABTestEntity entity) {
m_entity = entity;
}
@Override
public ABTestEntity getEntity() {
return m_entity;
}
@Override
public String getGroupName() {
if (!m_initialized) {
initialize(new Date());
}
initialize(new Date());
return m_groupName;
}
@Override
public HttpServletRequest getHttpServletRequest() {
return m_request;
}
@Override
public HttpServletResponse getHttpServletResponse() {
return m_response;
}
public void initialize(Date timestamp) {
if (!m_initialized) {
if (!m_applied) {
if (m_entity.isEligible(timestamp)) {
Transaction t = Cat.newTransaction("GroupStrategy", m_entity.getGroupStrategyName());
......@@ -53,9 +66,9 @@ public class DefaultABTestContext implements ABTestContext {
} finally {
t.complete();
}
}
m_initialized = true;
m_applied = true;
}
}
}
......@@ -64,29 +77,12 @@ public class DefaultABTestContext implements ABTestContext {
m_groupName = groupName;
}
public void setup(HttpServletRequest request,HttpServletResponse response) {
m_request = request;
m_response = response;
}
@Override
public HttpServletRequest getHttpServletRequest() {
return m_request;
}
@Override
public HttpServletResponse getHttpServletResponse() {
return m_response;
}
@Override
public ABTestEntity getEntity() {
return m_entity;
}
public void setGroupStrategy(ABTestGroupStrategy groupStrategy) {
m_groupStrategy = groupStrategy;
}
public void setup(HttpServletRequest request, HttpServletResponse response) {
m_request = request;
m_response = response;
}
}
package com.dianping.cat.abtest.spi.internal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.unidal.helper.Splitters;
import org.unidal.lookup.ContainerHolder;
import org.unidal.lookup.annotation.Inject;
......@@ -16,11 +17,18 @@ import com.dianping.cat.abtest.ABTestName;
import com.dianping.cat.abtest.spi.ABTestContext;
import com.dianping.cat.abtest.spi.ABTestEntity;
import com.dianping.cat.abtest.spi.ABTestGroupStrategy;
import com.dianping.cat.message.internal.DefaultMessageManager;
import com.dianping.cat.message.spi.MessageManager;
public class DefaultABTestContextManager extends ContainerHolder implements ABTestContextManager {
private static final String ABTEST_COOKIE_NAME = "ab";
@Inject
private ABTestEntityManager m_entityManager;
@Inject
private MessageManager m_messageManager;
private InheritableThreadLocal<Entry> m_threadLocal = new InheritableThreadLocal<Entry>() {
@Override
protected Entry initialValue() {
......@@ -31,114 +39,133 @@ public class DefaultABTestContextManager extends ContainerHolder implements ABTe
@Override
public ABTestContext getContext(ABTestName testName) {
Entry entry = m_threadLocal.get();
Map<String, DefaultABTestContext> map = entry.getContextMap();
String name = testName.getValue();
DefaultABTestContext ctx = map.get(name);
if (ctx == null) {
ABTestEntity entity = m_entityManager.getEntity(testName);
ctx = createContext(entity, entry.getHttpServletRequest(),entry.getHttpServletResponse());
map.put(name, ctx);
}
ABTestEntity entity = m_entityManager.getEntity(testName);
return ctx;
return entry.getContext(entity);
}
private DefaultABTestContext createContext(ABTestEntity entity, HttpServletRequest request,HttpServletResponse response) {
DefaultABTestContext ctx = new DefaultABTestContext(entity);
if (!entity.isDisabled()) {
ABTestGroupStrategy groupStrategy = entity.getGroupStrategy();
@Override
public void onRequestBegin(HttpServletRequest request, HttpServletResponse response) {
Entry entry = m_threadLocal.get();
ctx.setup(request,response);
ctx.setGroupStrategy(groupStrategy);
}
entry.setup(request, response);
}
return ctx;
@Override
public void onRequestEnd() {
m_threadLocal.remove();
}
public List<ABTestContext> getContexts() {
List<ABTestContext> ctxList = m_threadLocal.get().getContextList();
class Entry {
private Map<String, ABTestContext> m_map = new HashMap<String, ABTestContext>(4);
if (ctxList == null) {
ctxList = new ArrayList<ABTestContext>(4);
private ABTestContext createContext(ABTestEntity entity) {
DefaultABTestContext ctx = new DefaultABTestContext(entity);
List<ABTestEntity> entities = m_entityManager.getEntityList();
Map<String, DefaultABTestContext> ctxMap = m_threadLocal.get().getContextMap();
Date now = new Date();
if (!entity.isDisabled()) {
ABTestGroupStrategy groupStrategy = entity.getGroupStrategy();
for (ABTestEntity entity : entities) {
Entry entry = m_threadLocal.get();
String name = entity.getName();
DefaultABTestContext ctx = ctxMap.get(name);
ctx.setGroupStrategy(groupStrategy);
}
if (ctx == null) {
ctx = createContext(entity, entry.getHttpServletRequest(),entry.getHttpServletResponse());
return ctx;
}
ctxMap.put(name, ctx);
}
public ABTestContext getContext(ABTestEntity entity) {
String name = entity.getName();
ABTestContext ctx = m_map.get(name);
ctx.initialize(now);
ctxList.add(ctx);
if (ctx == null) {
ctx = createContext(entity);
m_map.put(name, ctx);
}
m_threadLocal.get().setContextList(ctxList);
return ctx;
}
return ctxList;
}
private Map<String, String> getGroupsFromCookie(HttpServletRequest request) {
Map<String, String> map = new HashMap<String, String>();
Cookie[] cookies = request.getCookies();
@Override
public void onRequestEnd() {
m_threadLocal.remove();
}
if (cookies != null) {
for (Cookie cookie : cookies) {
if (ABTEST_COOKIE_NAME.equals(cookie.getName())) {
String value = cookie.getValue();
List<String> parts = Splitters.by(',').noEmptyItem().trim().split(value);
@Override
public void onRequestBegin(HttpServletRequest request,HttpServletResponse response) {
Entry entry = m_threadLocal.get();
for (String part : parts) {
int pos = part.indexOf(':');
entry.setup(request,response);
if (pos > 0) {
map.put(part.substring(0, pos), part.substring(pos + 1));
}
}
}
}
}
Map<String, DefaultABTestContext> map = entry.getContextMap();
for (DefaultABTestContext ctx : map.values()) {
ctx.setup(request,response);
return map;
}
}
static class Entry {
private Map<String, DefaultABTestContext> m_map = new HashMap<String, DefaultABTestContext>(4);
private String setGroupsToCookie(HttpServletRequest request, HttpServletResponse response, Map<String, String> result) {
StringBuilder sb = new StringBuilder(64);
boolean first = true;
private List<ABTestContext> m_list;
for (Map.Entry<String, String> e : result.entrySet()) {
if (first) {
first = false;
} else {
sb.append(',');
}
private HttpServletRequest m_request;
private HttpServletResponse m_response;
sb.append(e.getKey()).append(':').append(e.getValue());
}
public Map<String, DefaultABTestContext> getContextMap() {
return m_map;
}
String value = sb.toString();
Cookie cookie = new Cookie(ABTEST_COOKIE_NAME, value);
String server = request.getServerName();
public void setup(HttpServletRequest request, HttpServletResponse response) {
m_request = request;
m_response = response;
}
if (server.endsWith(".dianping.com")) {
cookie.setDomain(".dianping.com");
} else if (server.endsWith(".51ping.com")) {
cookie.setDomain(".51ping.com");
} else {
cookie.setDomain(server);
}
public HttpServletResponse getHttpServletResponse() {
return m_response;
}
cookie.setMaxAge(30 * 24 * 60 * 60); // 30 days expiration
cookie.setPath("/");
public void setContextList(List<ABTestContext> ctxList) {
m_list = ctxList;
response.addCookie(cookie);
return value;
}
public List<ABTestContext> getContextList() {
return m_list;
}
public void setup(HttpServletRequest request, HttpServletResponse response) {
List<ABTestEntity> activeEntities = m_entityManager.getEntityList();
Map<String, String> map = getGroupsFromCookie(request);
Map<String, String> result = new HashMap<String, String>();
for (ABTestEntity entity : activeEntities) {
DefaultABTestContext ctx = (DefaultABTestContext) getContext(entity);
String key = String.valueOf(ctx.getEntity().getRun().getId());
String value = map.get(key);
if (value == null) {
ctx.setup(request, response);
ctx.initialize(new Date());
String groupName = ctx.getGroupName();
if (groupName != null && groupName.length() > 0) {
result.put(key, groupName);
}
} else {
result.put(key, value);
}
}
public HttpServletRequest getHttpServletRequest() {
return m_request;
String value = setGroupsToCookie(request, response, result);
((DefaultMessageManager) m_messageManager).setMetricType(value);
}
}
}
......@@ -13,26 +13,25 @@ import com.dianping.cat.abtest.ABTestName;
import com.dianping.cat.abtest.repository.ABTestEntityRepository;
import com.dianping.cat.abtest.spi.ABTestEntity;
import com.dianping.cat.abtest.spi.ABTestGroupStrategy;
import com.dianping.cat.message.Message;
public class DefaultABTestEntityManager extends ContainerHolder implements ABTestEntityManager, Initializable {
@Inject
private ABTestEntityRepository m_repository;
@Override
public ABTestEntity getEntity(ABTestName name) {
ABTestEntity entity = m_repository.getEntities().get(name.getValue());
String id = name.getValue();
ABTestEntity entity = m_repository.getEntities().get(id);
if (entity == null) {
entity = new ABTestEntity();
entity.setName(name.getValue());
entity.setName(id);
entity.setDisabled(true);
m_repository.getEntities().put(name.getValue(), entity);
m_repository.getEntities().put(id, entity);
StringBuilder sb = new StringBuilder();
sb.append("name ").append(name.getValue()).append(" doesn't exsit");
Cat.getProducer().logEvent("ABTest", "abtest-miss", sb.toString(), "");
Cat.getProducer().logEvent("ABTestDisabled", id, Message.SUCCESS, null);
}
return entity;
......@@ -40,9 +39,11 @@ public class DefaultABTestEntityManager extends ContainerHolder implements ABTes
public List<ABTestEntity> getEntityList() {
List<ABTestEntity> entitiesList = new ArrayList<ABTestEntity>();
for (ABTestEntity entity : m_repository.getEntities().values()) {
entitiesList.add(entity);
}
return entitiesList;
}
......
......@@ -13,6 +13,7 @@ import com.dianping.cat.abtest.spi.internal.ABTestEntityManager;
import com.dianping.cat.abtest.spi.internal.DefaultABTestContextManager;
import com.dianping.cat.abtest.spi.internal.DefaultABTestEntityManager;
import com.dianping.cat.configuration.ClientConfigManager;
import com.dianping.cat.message.spi.MessageManager;
class ABTestComponentConfigurator extends AbstractResourceConfigurator {
@Override
......@@ -20,15 +21,14 @@ class ABTestComponentConfigurator extends AbstractResourceConfigurator {
List<Component> all = new ArrayList<Component>();
all.add(C(ABTestContextManager.class, DefaultABTestContextManager.class) //
.req(ABTestEntityManager.class));
.req(ABTestEntityManager.class, MessageManager.class));
all.add(C(ABTestEntityRepository.class, HttpABTestEntityRepository.class) //
.req(ClientConfigManager.class)
.config(E("refreshTimeInSeconds").value("60")));
.req(ClientConfigManager.class).config(E("refreshTimeInSeconds").value("60")));
all.add(C(ABTestEntityManager.class, DefaultABTestEntityManager.class) //
.req(ABTestEntityRepository.class));
.req(ABTestEntityRepository.class));
return all;
}
}
......@@ -34,18 +34,14 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
@Inject
private MessageStatistics m_statistics;
private MessageIdFactory m_factory;
// we don't use static modifier since MessageManager is a singleton actually
private ThreadLocal<Context> m_context = new ThreadLocal<Context>();
private long m_throttleTimes = 0;
private InheritableThreadLocal<String> m_inheritableContext = new InheritableThreadLocal<String>();
// we don't use static modifier since MessageManager is a singleton in
// production actually
private ThreadLocal<Context> m_context = new ThreadLocal<Context>() {
@Override
protected Context initialValue() {
return null;
}
};
private MessageIdFactory m_factory;
private long m_throttleTimes;
private Domain m_domain;
......@@ -110,6 +106,10 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
return null;
}
public String getMetricType() {
return m_inheritableContext.get();
}
@Override
public Transaction getPeekTransaction() {
Context ctx = getContext();
......@@ -176,6 +176,10 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
m_context.remove();
}
public void setMetricType(String metricType) {
m_inheritableContext.set(metricType);
}
@Override
public void setup() {
Context ctx;
......
......@@ -12,7 +12,6 @@ import com.dianping.cat.message.MessageProducer;
import com.dianping.cat.message.Metric;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.message.spi.MessageManager;
import com.dianping.cat.message.spi.MessageTree;
public class DefaultMessageProducer implements MessageProducer {
@Inject
......@@ -74,8 +73,7 @@ public class DefaultMessageProducer implements MessageProducer {
@Override
public void logMetric(String name, String status, String nameValuePairs) {
MessageTree tree = m_manager.getThreadLocalMessageTree();
String type = tree == null ? null : tree.getMetricType();
String type = ((DefaultMessageManager) m_manager).getMetricType();
Metric event = newMetric(type, name);
if (nameValuePairs != null && nameValuePairs.length() > 0) {
......
......@@ -15,8 +15,6 @@ public interface MessageTree extends Cloneable {
public String getMessageId();
public String getMetricType();
public String getParentMessageId();
public String getRootMessageId();
......@@ -39,8 +37,6 @@ public interface MessageTree extends Cloneable {
public void setMessageId(String messageId);
public void setMetricType(String metricType);
public void setParentMessageId(String parentMessageId);
public void setRootMessageId(String rootMessageId);
......
......@@ -34,8 +34,6 @@ public class DefaultMessageTree implements MessageTree {
private String m_threadName;
private String m_metricType;
@Override
public DefaultMessageTree copy() {
DefaultMessageTree tree = new DefaultMessageTree();
......@@ -84,11 +82,6 @@ public class DefaultMessageTree implements MessageTree {
return m_messageId;
}
@Override
public String getMetricType() {
return m_metricType;
}
@Override
public String getParentMessageId() {
return m_parentMessageId;
......@@ -150,11 +143,6 @@ public class DefaultMessageTree implements MessageTree {
}
}
@Override
public void setMetricType(String metricType) {
m_metricType = metricType;
}
@Override
public void setParentMessageId(String parentMessageId) {
if (parentMessageId != null && parentMessageId.length() > 0) {
......
......@@ -26,27 +26,28 @@ public class CatFilter implements Filter {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
boolean isRoot = !Cat.getManager().hasContext();
HttpServletResponse res = (HttpServletResponse) response;
boolean top = !Cat.getManager().hasContext();
if (isRoot) {
if (top) {
String sessionToken = getSessionIdFromCookie(req);
Cat.setup(sessionToken);
}
MessageProducer cat = Cat.getProducer();
Transaction t = null;
if (isRoot) {
if (top) {
t = Cat.newTransaction(getTypeName(), getOriginalUrl(request));
ABTestManager.onRequestBegin(req, res);
logRequestClientInfo(cat, req);
ABTestManager.onRequestBegin(req,resp);
} else {
t = Cat.newTransaction(getTypeName() + ".Forward", getOriginalUrl(request));
}
}
logRequestPayload(cat, req);
......@@ -77,7 +78,7 @@ public class CatFilter implements Filter {
throw e;
} finally {
t.complete();
if (isRoot) {
if (top) {
Cat.reset();
ABTestManager.onRequestEnd();
}
......@@ -152,4 +153,3 @@ public class CatFilter implements Filter {
cat.logEvent(getTypeName(), CatConstants.NAME_PAYLOAD, Event.SUCCESS, sb.toString());
}
}
......@@ -262,6 +262,9 @@
<requirement>
<role>com.dianping.cat.abtest.spi.internal.ABTestEntityManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageManager</role>
</requirement>
</requirements>
</component>
<component>
......
package com.dianping.cat.abtest.demo.roundrobin;
import java.util.ArrayList;
import java.util.List;
import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import org.unidal.lookup.configuration.Component;
import com.dianping.cat.abtest.spi.internal.ABTestContextManager;
import com.dianping.cat.abtest.spi.internal.ABTestEntityManager;
import com.dianping.cat.abtest.spi.internal.DefaultABTestContextManager;
public class ABTestServerConfigurator extends AbstractResourceConfigurator {
@Override
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
all.add(C(ABTestContextManager.class, DefaultABTestContextManager.class) //
.req(ABTestEntityManager.class));
return all;
}
@Override
protected Class<?> getTestClass() {
return ABTestServer.class;
}
public static void main(String[] args) {
generatePlexusComponentsXmlFile(new ABTestServerConfigurator());
}
}
<plexus>
<components>
<component>
<role>com.dianping.cat.abtest.spi.internal.ABTestContextManager</role>
<implementation>com.dianping.cat.abtest.spi.internal.DefaultABTestContextManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.abtest.spi.internal.ABTestEntityManager</role>
</requirement>
</requirements>
</component>
</components>
</plexus>
......@@ -159,7 +159,7 @@
<plugin>
<groupId>org.unidal.maven.plugins</groupId>
<artifactId>codegen-maven-plugin</artifactId>
<version>2.0.6</version>
<version>2.0.5</version>
<executions>
<execution>
<id>generate plexus component descriptor</id>
......
......@@ -10,6 +10,7 @@ import java.util.Set;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.helper.Threads;
import org.unidal.helper.Threads.Task;
import org.unidal.lookup.annotation.Inject;
......@@ -130,8 +131,7 @@ public class ThresholdRuleManager implements Initializable {
String content = alarmTemplate.getContent();
ThresholdTemplate baseTemplate = DefaultSaxParser.parse(content);
List<AlarmRule> exceptionRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId,
AlarmRuleEntity.READSET_FULL);
List<AlarmRule> exceptionRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId, AlarmRuleEntity.READSET_FULL);
for (AlarmRule rule : exceptionRules) {
m_exceptionModifyTimes.put(rule.getId(), rule.getModifyDate());
......@@ -146,7 +146,8 @@ public class ThresholdRuleManager implements Initializable {
Cat.logError(e);
}
}
} catch (DalNotFoundException e) {
// ignore it
} catch (Exception e) {
throw new RuntimeException(e);
}
......@@ -160,8 +161,7 @@ public class ThresholdRuleManager implements Initializable {
String content = alarmTemplate.getContent();
ThresholdTemplate baseTemplate = DefaultSaxParser.parse(content);
List<AlarmRule> serviceRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId,
AlarmRuleEntity.READSET_FULL);
List<AlarmRule> serviceRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId, AlarmRuleEntity.READSET_FULL);
for (AlarmRule rule : serviceRules) {
m_serviceModifyTimes.put(rule.getId(), rule.getModifyDate());
......@@ -176,7 +176,8 @@ public class ThresholdRuleManager implements Initializable {
Cat.logError(e);
}
}
} catch (DalNotFoundException e) {
// ignore it
} catch (Exception e) {
throw new RuntimeException(e);
}
......@@ -214,14 +215,12 @@ public class ThresholdRuleManager implements Initializable {
private void refreshExceptionRules() {
synchronized (m_exceptionRules) {
try {
AlarmTemplate alarmTemplate = m_alarmTemplateDao.findAlarmTemplateByName("exception",
AlarmTemplateEntity.READSET_FULL);
AlarmTemplate alarmTemplate = m_alarmTemplateDao.findAlarmTemplateByName("exception", AlarmTemplateEntity.READSET_FULL);
int templateId = alarmTemplate.getId();
String content = alarmTemplate.getContent();
ThresholdTemplate baseTemplate = DefaultSaxParser.parse(content);
List<AlarmRule> exceptionRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId,
AlarmRuleEntity.READSET_FULL);
List<AlarmRule> exceptionRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId, AlarmRuleEntity.READSET_FULL);
Set<Integer> allIds = new HashSet<Integer>();
for (AlarmRule alarmRule : exceptionRules) {
......@@ -284,13 +283,11 @@ public class ThresholdRuleManager implements Initializable {
private void refreshServiceRules() {
synchronized (m_serviceRules) {
try {
AlarmTemplate alarmTemplate = m_alarmTemplateDao.findAlarmTemplateByName("service",
AlarmTemplateEntity.READSET_FULL);
AlarmTemplate alarmTemplate = m_alarmTemplateDao.findAlarmTemplateByName("service", AlarmTemplateEntity.READSET_FULL);
int templateId = alarmTemplate.getId();
String content = alarmTemplate.getContent();
ThresholdTemplate baseTemplate = DefaultSaxParser.parse(content);
List<AlarmRule> serviceRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId,
AlarmRuleEntity.READSET_FULL);
List<AlarmRule> serviceRules = m_alarmRuleDao.findAllAlarmRuleByTemplateId(templateId, AlarmRuleEntity.READSET_FULL);
Set<Integer> allIds = new HashSet<Integer>();
for (AlarmRule alarmRule : serviceRules) {
......
......@@ -14,6 +14,7 @@
<module>cat-hadoop</module>
<module>cat-consumer-advanced</module>
<module>cat-home</module>
<module>abtest-sample</module>
</modules>
<dependencyManagement>
<dependencies>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册