Author: markt
Date: Tue Nov 1 15:23:13 2016
New Revision: 1767505
URL: http://svn.apache.org/viewvc?rev=1767505&view=rev
Log:
Improve detection of I/O errors during async processing on non-container
threads and trigger async error handling when they are detected.
Modified:
tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java
tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java?rev=1767505&r1=1767504&r2=1767505&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java Tue Nov 1
15:23:13 2016
@@ -310,7 +310,11 @@ public abstract class AbstractProcessor
case CLOSE_NOW: {
// Prevent further writes to the response
setSwallowResponse();
- setErrorState(ErrorState.CLOSE_NOW, null);
+ if (param instanceof Throwable) {
+ setErrorState(ErrorState.CLOSE_NOW, (Throwable) param);
+ } else {
+ setErrorState(ErrorState.CLOSE_NOW, null);
+ }
break;
}
case DISABLE_SWALLOW_INPUT: {
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1767505&r1=1767504&r2=1767505&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Tue Nov 1
15:23:13 2016
@@ -1392,9 +1392,15 @@ public class AjpProcessor extends Abstra
int len = 0;
if (!swallowResponse) {
- len = chunk.remaining();
- writeData(chunk);
- len -= chunk.remaining();
+ try {
+ len = chunk.remaining();
+ writeData(chunk);
+ len -= chunk.remaining();
+ } catch (IOException ioe) {
+ setErrorState(ErrorState.CLOSE_CONNECTION_NOW, ioe);
+ // Re-throw
+ throw ioe;
+ }
}
return len;
}
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java?rev=1767505&r1=1767504&r2=1767505&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java Tue Nov
1 15:23:13 2016
@@ -535,11 +535,17 @@ public class Http11OutputBuffer implemen
*/
@Override
public int doWrite(ByteBuffer chunk) throws IOException {
- int len = chunk.remaining();
- socketWrapper.write(isBlocking(), chunk);
- len -= chunk.remaining();
- byteCount += len;
- return len;
+ try {
+ int len = chunk.remaining();
+ socketWrapper.write(isBlocking(), chunk);
+ len -= chunk.remaining();
+ byteCount += len;
+ return len;
+ } catch (IOException ioe) {
+ response.action(ActionCode.CLOSE_NOW, ioe);
+ // Re-throw
+ throw ioe;
+ }
}
@Override
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1767505&r1=1767504&r2=1767505&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Nov 1 15:23:13 2016
@@ -170,6 +170,10 @@
thread, ensure that the <code>onError()</code> event is triggered.
(markt)
</fix>
+ <fix>
+ Improve detection of I/O errors during async processing on
non-container
+ threads and trigger async error handling when they are detected.
(markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Jasper">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]