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: [email protected]
For additional commands, e-mail: [email protected]