2017-03-07 11:24 GMT+01:00 <r...@apache.org>:

> Author: remm
> Date: Tue Mar  7 10:24:38 2017
> New Revision: 1785820
>
> URL: http://svn.apache.org/viewvc?rev=1785820&view=rev
> Log:
> Unlock a blocking read (with an IOE) when a stream exception occurs. The
> likely bad behavior is seen in many tests in the testsuite. Originally I
> think this is supposed to wait for a reset frame, but I don't really see a
> benefit.
>

Mark, are you ok with that ? It's really heavy handed ...
For whatever reason, it's not fixing the issue in CI:
https://ci.apache.org/projects/tomcat/tomcat9/logs/1785823/TEST-org.apache.coyote.http2.TestHttp2Section_6_9.NIO.txt

Supposed to be replaced with an IOE:
    [junit]  java.io.IOException: Stream reset
    [junit]     at
org.apache.coyote.http2.Stream$StreamInputBuffer.doRead(Stream.java:698)
    [junit]     at org.apache.coyote.Request.doRead(Request.java:511)

Rémy

>
> Modified:
>     tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties
>     tomcat/trunk/java/org/apache/coyote/http2/Stream.java
>
> Modified: tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.
> properties
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/
> coyote/http2/LocalStrings.properties?rev=1785820&r1=
> 1785819&r2=1785820&view=diff
> ============================================================
> ==================
> --- tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties
> (original)
> +++ tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties Tue
> Mar  7 10:24:38 2017
> @@ -85,6 +85,7 @@ stream.write=Connection [{0}], Stream [{
>  stream.inputBuffer.copy=Copying [{0}] bytes from inBuffer to outBuffer
>  stream.inputBuffer.dispatch=Data added to inBuffer when read interest is
> registered. Triggering a read dispatch
>  stream.inputBuffer.empty=The Stream input buffer is empty. Waiting for
> more data
> +stream.inputBuffer.reset=Stream reset
>  stream.inputBuffer.signal=Data added to inBuffer when read thread is
> waiting. Signalling that thread to continue
>
>  stream.outputBuffer.flush.debug=Connection [{0}], Stream [{1}], flushing
> output with buffer at position [{2}], writeInProgress [{3}] and closed [{4}]
>
> Modified: tomcat/trunk/java/org/apache/coyote/http2/Stream.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/
> coyote/http2/Stream.java?rev=1785820&r1=1785819&r2=1785820&view=diff
> ============================================================
> ==================
> --- tomcat/trunk/java/org/apache/coyote/http2/Stream.java (original)
> +++ tomcat/trunk/java/org/apache/coyote/http2/Stream.java Tue Mar  7
> 10:24:38 2017
> @@ -470,6 +470,10 @@ class Stream extends AbstractStream impl
>          } else {
>              handler.closeConnection(http2Exception);
>          }
> +        // Reads wait internally so need to call a method to break the
> wait()
> +        if (inputBuffer != null) {
> +            inputBuffer.receiveReset();
> +        }
>      }
>
>
> @@ -691,8 +695,7 @@ class Stream extends AbstractStream impl
>                          }
>                          inBuffer.wait();
>                          if (reset) {
> -                            // TODO: i18n
> -                            throw new IOException("HTTP/2 Stream reset");
> +                            throw new IOException(sm.getString("
> stream.inputBuffer.reset"));
>                          }
>                      } catch (InterruptedException e) {
>                          // Possible shutdown / rst or similar. Use an
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>

Reply via email to