Author: markt Date: Sun Jan 16 12:55:55 2011 New Revision: 1059548 URL: http://svn.apache.org/viewvc?rev=1059548&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50582 Refactor access logging so chunked encoding is not forced if bytes sent is logged
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1059548&r1=1059547&r2=1059548&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Sun Jan 16 12:55:55 2011 @@ -404,6 +404,9 @@ public class CoyoteAdapter implements Ad async = true; } else if (!comet) { response.finishResponse(); + ((Context) request.getMappingData().context).logAccess(request, + response, + System.currentTimeMillis() - req.getStartTime(), false); req.action(ActionCode.POST_REQUEST , null); } @@ -435,9 +438,10 @@ public class CoyoteAdapter implements Ad Request request = (Request) req.getNote(ADAPTER_NOTES); Response response = (Response) res.getNote(ADAPTER_NOTES); - + boolean create = false; + if (request == null) { - + create = true; // Create objects request = connector.createRequest(); request.setCoyoteRequest(req); @@ -460,8 +464,10 @@ public class CoyoteAdapter implements Ad connector.getService().getContainer().logAccess( request, response, time, true); - request.recycle(); - response.recycle(); + if (create) { + request.recycle(); + response.recycle(); + } } Modified: tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=1059548&r1=1059547&r2=1059548&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java Sun Jan 16 12:55:55 2011 @@ -538,36 +538,14 @@ public class AccessLogValve extends Valv @Override public void invoke(Request request, Response response) throws IOException, ServletException { - if (getState().isAvailable() && getEnabled()) { - final String t1Name = AccessLogValve.class.getName()+".t1"; - // Pass this request on to the next valve in our pipeline - long t1 = System.currentTimeMillis(); - boolean asyncdispatch = request.isAsyncDispatching(); - if (!asyncdispatch) { - request.setAttribute(t1Name, Long.valueOf(t1)); - } - - getNext().invoke(request, response); - - //we're not done with the request - if (request.isAsyncDispatching()) { - return; - } else if (asyncdispatch && request.getAttribute(t1Name)!=null) { - t1 = ((Long)request.getAttribute(t1Name)).longValue(); - } - - long t2 = System.currentTimeMillis(); - long time = t2 - t1; - - log(request,response, time); - } else - getNext().invoke(request, response); + getNext().invoke(request, response); } @Override public void log(Request request, Response response, long time) { - if (logElements == null || condition != null + if (!getState().isAvailable() || !getEnabled() || + logElements == null || condition != null && null != request.getRequest().getAttribute(condition)) { return; } @@ -1057,7 +1035,9 @@ public class AccessLogValve extends Valv @Override public void addElement(StringBuilder buf, Date date, Request request, Response response, long time) { - long length = response.getBytesWritten(true); + // Don't need to flush since trigger for log message is after the + // response has been committed + long length = response.getBytesWritten(false); if (length <= 0 && conversion) { buf.append('-'); } else { Modified: tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java?rev=1059548&r1=1059547&r2=1059548&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java Sun Jan 16 12:55:55 2011 @@ -436,17 +436,18 @@ public final class JDBCAccessLogValve ex * in a ServletException. */ @Override - public void invoke(Request request, Response response) - throws IOException, ServletException { - + public void invoke(Request request, Response response) throws IOException, + ServletException { getNext().invoke(request, response); - - log (request, response, 0); } @Override public void log(Request request, Response response, long time) { + if (!getState().isAvailable()) { + return; + } + final String EMPTY = "" ; String remoteHost; Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java?rev=1059548&r1=1059547&r2=1059548&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java Sun Jan 16 12:55:55 2011 @@ -289,7 +289,7 @@ public abstract class AbstractOutputBuff lastActiveFilter = -1; committed = false; finished = false; - + byteCount = 0; } /** @@ -315,7 +315,6 @@ public abstract class AbstractOutputBuff if (lastActiveFilter != -1) activeFilters[lastActiveFilter].end(); finished = true; - byteCount = 0; } public abstract void sendAck() throws IOException; Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1059548&r1=1059547&r2=1059548&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Sun Jan 16 12:55:55 2011 @@ -65,6 +65,10 @@ <fix> Fix NPE in RemoteAddrFilter, RemoteHostFilter. (kkolinko) </fix> + <fix> + <bug>50582</bug>: Refactor access logging so chunked encoding is not + forced for all requests if bytes sent is logged. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org