提交 6c746cbe 编写于 作者: A ainilife

Bug Fix & Cat log

上级 5822b0fb
...@@ -20,18 +20,18 @@ public class ABTestSampleServlet extends HttpServlet { ...@@ -20,18 +20,18 @@ public class ABTestSampleServlet extends HttpServlet {
@Override @Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (m_abtest.isGroupA()) { if (m_abtest.isGroupA()) {
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index2.jsp"); RequestDispatcher rd = getServletContext().getRequestDispatcher("/index1.jsp");
rd.forward(request, response); rd.forward(request, response);
// Cat.logMetric(...); // Cat.logMetric(...);
} else { } else {
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index1.jsp"); RequestDispatcher rd = getServletContext().getRequestDispatcher("/index2.jsp");
rd.forward(request, response); rd.forward(request, response);
// Cat.logMetric(...); // Cat.logMetric(...);
} }
} }
public static enum MyABTestId implements ABTestId { public static enum MyABTestId implements ABTestId {
CASE1(2); CASE1(11);
private int m_id; private int m_id;
......
...@@ -52,7 +52,7 @@ public class IPDistributionStrategy implements ABTestGroupStrategy { ...@@ -52,7 +52,7 @@ public class IPDistributionStrategy implements ABTestGroupStrategy {
} }
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = req.getRemoteAddr(); ip = req.getRemoteAddr();
if(ip.equals("127.0.0.1") && ip.startsWith("0:0:0:0:0:0:0:1")){ if(ip.equals("127.0.0.1") || ip.startsWith("0:0:0:0:0:0:0:1")){
ip = IPUtils.getFirstNoLoopbackIP4Address(); ip = IPUtils.getFirstNoLoopbackIP4Address();
} }
} }
......
...@@ -38,7 +38,6 @@ public class DefaultABTestContextManager extends ContainerHolder implements ABTe ...@@ -38,7 +38,6 @@ public class DefaultABTestContextManager extends ContainerHolder implements ABTe
ABTestEntity entity = m_entityManager.getEntity(testId); ABTestEntity entity = m_entityManager.getEntity(testId);
ctx = createContext(entity, entry.getHttpServletRequest()); ctx = createContext(entity, entry.getHttpServletRequest());
map.put(id, ctx); map.put(id, ctx);
} }
......
...@@ -29,6 +29,10 @@ public class DefaultABTestEntityManager extends ContainerHolder implements ABTes ...@@ -29,6 +29,10 @@ public class DefaultABTestEntityManager extends ContainerHolder implements ABTes
entity.setDisabled(true); entity.setDisabled(true);
m_repository.getEntities().put(id.getValue(), entity); m_repository.getEntities().put(id.getValue(), entity);
StringBuilder sb = new StringBuilder();
sb.append("id ").append(id.getValue()).append(" doesn't exsit");
Cat.getProducer().logEvent("ABTest.IDMiss", "id-miss", sb.toString(), "");
} }
return entity; return entity;
......
...@@ -25,22 +25,32 @@ public class CatFilter implements Filter { ...@@ -25,22 +25,32 @@ public class CatFilter implements Filter {
} }
@Override @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; HttpServletRequest req = (HttpServletRequest) request;
String sessionToken = getSessionIdFromCookie(req); boolean isRoot = !Cat.getManager().hasContext();
// setup for thread local data if (isRoot) {
Cat.setup(sessionToken); String sessionToken = getSessionIdFromCookie(req);
ABTestManager.onRequestBegin(req); Cat.setup(sessionToken);
}
MessageProducer cat = Cat.getProducer(); MessageProducer cat = Cat.getProducer();
Transaction t = cat.newTransaction(CatConstants.TYPE_URL, getOriginalUrl(request)); Transaction t = null;
if (isRoot) {
t = Cat.newTransaction(getTypeName(), getOriginalUrl(request));
logRequestClientInfo(cat, req);
ABTestManager.onRequestBegin(req);
} else {
t = Cat.newTransaction(getTypeName() + ".Forward", getOriginalUrl(request));
}
logRequestClientInfo(cat, req);
logRequestPayload(cat, req); logRequestPayload(cat, req);
try { try {
chain.doFilter(request, response); doNextFilter(request, response, chain);
Object catStatus = request.getAttribute("cat-state"); Object catStatus = request.getAttribute("cat-state");
if (catStatus != null) { if (catStatus != null) {
...@@ -66,11 +76,18 @@ public class CatFilter implements Filter { ...@@ -66,11 +76,18 @@ public class CatFilter implements Filter {
throw e; throw e;
} finally { } finally {
t.complete(); t.complete();
Cat.reset(); if (isRoot) {
ABTestManager.onRequestEnd(); Cat.reset();
ABTestManager.onRequestEnd();
}
} }
} }
protected void doNextFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
chain.doFilter(request, response);
}
protected String getOriginalUrl(ServletRequest request) { protected String getOriginalUrl(ServletRequest request) {
return ((HttpServletRequest) request).getRequestURI(); return ((HttpServletRequest) request).getRequestURI();
} }
...@@ -89,6 +106,10 @@ public class CatFilter implements Filter { ...@@ -89,6 +106,10 @@ public class CatFilter implements Filter {
return null; return null;
} }
protected String getTypeName() {
return CatConstants.TYPE_URL;
}
@Override @Override
public void init(FilterConfig filterConfig) throws ServletException { public void init(FilterConfig filterConfig) throws ServletException {
} }
...@@ -112,7 +133,7 @@ public class CatFilter implements Filter { ...@@ -112,7 +133,7 @@ public class CatFilter implements Filter {
sb.append("&Referer=").append(req.getHeader("referer")); sb.append("&Referer=").append(req.getHeader("referer"));
sb.append("&Agent=").append(req.getHeader("user-agent")); sb.append("&Agent=").append(req.getHeader("user-agent"));
cat.logEvent("URL", "ClientInfo", Message.SUCCESS, sb.toString()); cat.logEvent(getTypeName(), "ClientInfo", Message.SUCCESS, sb.toString());
} }
protected void logRequestPayload(MessageProducer cat, HttpServletRequest req) { protected void logRequestPayload(MessageProducer cat, HttpServletRequest req) {
...@@ -127,6 +148,7 @@ public class CatFilter implements Filter { ...@@ -127,6 +148,7 @@ public class CatFilter implements Filter {
sb.append('?').append(qs); sb.append('?').append(qs);
} }
cat.logEvent(CatConstants.TYPE_URL, CatConstants.NAME_PAYLOAD, Event.SUCCESS, sb.toString()); cat.logEvent(getTypeName(), CatConstants.NAME_PAYLOAD, Event.SUCCESS, sb.toString());
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册