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

Bug Fix & Cat log

上级 5822b0fb
......@@ -20,18 +20,18 @@ public class ABTestSampleServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (m_abtest.isGroupA()) {
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index2.jsp");
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index1.jsp");
rd.forward(request, response);
// Cat.logMetric(...);
} else {
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index1.jsp");
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index2.jsp");
rd.forward(request, response);
// Cat.logMetric(...);
}
}
public static enum MyABTestId implements ABTestId {
CASE1(2);
CASE1(11);
private int m_id;
......
......@@ -52,7 +52,7 @@ public class IPDistributionStrategy implements ABTestGroupStrategy {
}
if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
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();
}
}
......
......@@ -38,7 +38,6 @@ public class DefaultABTestContextManager extends ContainerHolder implements ABTe
ABTestEntity entity = m_entityManager.getEntity(testId);
ctx = createContext(entity, entry.getHttpServletRequest());
map.put(id, ctx);
}
......
......@@ -29,6 +29,10 @@ public class DefaultABTestEntityManager extends ContainerHolder implements ABTes
entity.setDisabled(true);
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;
......
......@@ -25,22 +25,32 @@ 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;
String sessionToken = getSessionIdFromCookie(req);
boolean isRoot = !Cat.getManager().hasContext();
// setup for thread local data
if (isRoot) {
String sessionToken = getSessionIdFromCookie(req);
Cat.setup(sessionToken);
ABTestManager.onRequestBegin(req);
}
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));
}
logRequestPayload(cat, req);
try {
chain.doFilter(request, response);
doNextFilter(request, response, chain);
Object catStatus = request.getAttribute("cat-state");
if (catStatus != null) {
......@@ -66,10 +76,17 @@ public class CatFilter implements Filter {
throw e;
} finally {
t.complete();
if (isRoot) {
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) {
return ((HttpServletRequest) request).getRequestURI();
......@@ -89,6 +106,10 @@ public class CatFilter implements Filter {
return null;
}
protected String getTypeName() {
return CatConstants.TYPE_URL;
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
......@@ -112,7 +133,7 @@ public class CatFilter implements Filter {
sb.append("&Referer=").append(req.getHeader("referer"));
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) {
......@@ -127,6 +148,7 @@ public class CatFilter implements Filter {
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.
先完成此消息的编辑!
想要评论请 注册