You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2019/06/04 11:17:52 UTC

[tomcat] branch master updated: Add fake parameters on two tests which (rarely) fail for me

This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new 2eb2d84  Add fake parameters on two tests which (rarely) fail for me
2eb2d84 is described below

commit 2eb2d843f68b9b224f5d8457f340c9bd1e9240c9
Author: remm <re...@apache.org>
AuthorDate: Tue Jun 4 13:17:44 2019 +0200

    Add fake parameters on two tests which (rarely) fail for me
    
    5_3 has a timeout problem.
    Async flush has a window update manager waitForNonBlocking ISE problem.
    This should make problems far easier to detect.
---
 test/org/apache/coyote/http2/TestAsyncFlush.java       | 8 ++++++++
 test/org/apache/coyote/http2/TestHttp2Section_5_3.java | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/test/org/apache/coyote/http2/TestAsyncFlush.java b/test/org/apache/coyote/http2/TestAsyncFlush.java
index 8de4c54..3c4373b 100644
--- a/test/org/apache/coyote/http2/TestAsyncFlush.java
+++ b/test/org/apache/coyote/http2/TestAsyncFlush.java
@@ -28,6 +28,8 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Wrapper;
@@ -46,8 +48,14 @@ import org.apache.catalina.startup.Tomcat;
  *       while the specification allows this to work - it doesn't require that
  *       it does work.
  */
+@RunWith(Parameterized.class)
 public class TestAsyncFlush extends Http2TestBase {
 
+    @Parameterized.Parameters
+    public static Object[][] data() {
+        return new Object[10][0];
+    }
+
     private static final int BLOCK_SIZE = 1024;
 
     @Test
diff --git a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java
index a0bcbaf..64e86de 100644
--- a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java
+++ b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java
@@ -18,6 +18,8 @@ package org.apache.coyote.http2;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Unit tests for Section 5.3 of
@@ -29,8 +31,14 @@ import org.junit.Test;
  * Note: Unit tests for the examples described by each of the figures may be
  * found in {@link TestAbstractStream}.
  */
+@RunWith(Parameterized.class)
 public class TestHttp2Section_5_3 extends Http2TestBase {
 
+    @Parameterized.Parameters
+    public static Object[][] data() {
+        return new Object[10][0];
+    }
+
     // Section 5.3.1
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch master updated: Add fake parameters on two tests which (rarely) fail for me

Posted by Mark Thomas <ma...@apache.org>.
On 04/06/2019 17:32, Mark Thomas wrote:

<snip/>

> Initial testing looks good. I'm going to run through a few testing
> cycles to see how things look.

The unit tests runs are cleaner than they have been for a long time. I'm
not seeing anything that gives me cause for concern.

I'm intending to tag later today.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch master updated: Add fake parameters on two tests which (rarely) fail for me

Posted by Mark Thomas <ma...@apache.org>.
On 04/06/2019 15:29, Rémy Maucherat wrote:
> On Tue, Jun 4, 2019 at 3:46 PM Mark Thomas <markt@apache.org

<snip/>

>     > My plan is to tackle the 5_3 issue after the async flush issue.
> 
>     Starting this now.
> 
> 
> I can barely get it anymore (despite the parametrization loop), so it
> will be very difficult to verify any fix. This was a "Timeout waiting
> for allocation" with stream 19 or 21 in testWeighting.
> I will continue testing and investigating.

I've fixed a potential cause.

Initial testing looks good. I'm going to run through a few testing
cycles to see how things look.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch master updated: Add fake parameters on two tests which (rarely) fail for me

Posted by Rémy Maucherat <re...@apache.org>.
On Tue, Jun 4, 2019 at 3:46 PM Mark Thomas <ma...@apache.org> wrote:

> On 04/06/2019 12:25, Mark Thomas wrote:
> > On 04/06/2019 12:17, remm@apache.org wrote:
> >> This is an automated email from the ASF dual-hosted git repository.
> >>
> >> remm pushed a commit to branch master
> >> in repository https://gitbox.apache.org/repos/asf/tomcat.git
> >>
> >>
> >> The following commit(s) were added to refs/heads/master by this push:
> >>      new 2eb2d84  Add fake parameters on two tests which (rarely) fail
> for me
> >> 2eb2d84 is described below
> >>
> >> commit 2eb2d843f68b9b224f5d8457f340c9bd1e9240c9
> >> Author: remm <re...@apache.org>
> >> AuthorDate: Tue Jun 4 13:17:44 2019 +0200
> >>
> >>     Add fake parameters on two tests which (rarely) fail for me
> >>
> >>     5_3 has a timeout problem.
> >>     Async flush has a window update manager waitForNonBlocking ISE
> problem.
> >>     This should make problems far easier to detect.
> >
> > Thanks for testing my latest patch. I am going to apply it as I think it
> > is heading in the right direction.
>
> Done.
>
> > I'm currently looking at the debug logs for the async flush issue. I've
> > made progress tracing it back but I haven't quite got to the root cause.
>
> This should be fixed as well. Looks like a long-standing bug in
> flush(boolean).
>

I agree, my debug showed concurrent traces dealing exclusively with
"legacy" output stream flushes, one caused by response commit and the other
one by the flush at the start of doing onWritePossible.
The item I was looking at first to solve it is the FIXME line 65 of
StreamProcessor, but indeed any more "efficient" sync will deadlock in
various tests.

>
> > My plan is to tackle the 5_3 issue after the async flush issue.
>
> Starting this now.
>

I can barely get it anymore (despite the parametrization loop), so it will
be very difficult to verify any fix. This was a "Timeout waiting for
allocation" with stream 19 or 21 in testWeighting.
I will continue testing and investigating.

04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-4]
org.apache.coyote.http2.WindowAllocationManager.waitForConnection
Connection [5], Stream [21], Waiting for Connection flow control window
(blocking) with timeout [6000]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.WindowAllocationManager.notify Connection [5],
Stream [21], Notified
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.Http2UpgradeHandler.incrementWindowSize Connection
[5], Stream [19] released from backlog
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.WindowAllocationManager.notify Connection [5],
Stream [19], Waiting type [2], Notify type [2]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.WindowAllocationManager.notify Connection [5],
Stream [19], Notified
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch Entry,
Connection [5], SocketStatus [OPEN_READ]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.Http2UpgradeHandler.init Connection [5], State
[CONNECTED]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-2]
org.apache.coyote.http2.AbstractStream.decrementWindowSize Connection [5],
Stream [0], reduce flow control window by [256] to [-1]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-2]
org.apache.coyote.http2.Http2AsyncUpgradeHandler.writeBody Connection [5],
Stream [19], Data length [256]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-5]
org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch Exit,
Connection [5], SocketState [UPGRADED]
04-Jun-2019 16:26:26.110 FINE [http-nio2-127.0.0.1-auto-6-exec-2]
org.apache.coyote.http2.WindowAllocationManager.waitForConnection
Connection [5], Stream [19], Waiting for Connection flow control window
(blocking) with timeout [6000]
04-Jun-2019 16:26:26.110 FINE [main]
org.apache.coyote.http2.Http2Parser.validateFrame Connection [-1], Stream
[21], Frame type [DATA], Flags [0], Payload size [768]
04-Jun-2019 16:26:26.110 FINE [main]
org.apache.coyote.http2.Http2Parser.readDataFrame Connection [-1], Stream
[21], Data length, [768], Padding length [none]
04-Jun-2019 16:26:26.110 FINE [main]
org.apache.coyote.http2.Http2Parser.swallow Connection [-1], Stream [21],
Swallowed [768] bytes
04-Jun-2019 16:26:26.110 INFO [main]
org.apache.coyote.http2.TestHttp2Section_5_3.testWeighting 21-Body-768

04-Jun-2019 16:26:26.110 FINE [main]
org.apache.coyote.http2.Http2Parser.validateFrame Connection [-1], Stream
[19], Frame type [DATA], Flags [0], Payload size [256]
04-Jun-2019 16:26:26.111 FINE [main]
org.apache.coyote.http2.Http2Parser.readDataFrame Connection [-1], Stream
[19], Data length, [256], Padding length [none]
04-Jun-2019 16:26:26.111 FINE [http-nio2-127.0.0.1-auto-6-exec-4]
org.apache.coyote.http2.Http2UpgradeHandler.reserveWindowSize Connection
[5], Stream [21], Timeout waiting for allocation

Rémy


>
> Meanwhile I'm going to set the unit tests running on OSX and Windows as
> a double check.
>
> Mark
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

Re: [tomcat] branch master updated: Add fake parameters on two tests which (rarely) fail for me

Posted by Mark Thomas <ma...@apache.org>.
On 04/06/2019 12:25, Mark Thomas wrote:
> On 04/06/2019 12:17, remm@apache.org wrote:
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> remm pushed a commit to branch master
>> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>>
>>
>> The following commit(s) were added to refs/heads/master by this push:
>>      new 2eb2d84  Add fake parameters on two tests which (rarely) fail for me
>> 2eb2d84 is described below
>>
>> commit 2eb2d843f68b9b224f5d8457f340c9bd1e9240c9
>> Author: remm <re...@apache.org>
>> AuthorDate: Tue Jun 4 13:17:44 2019 +0200
>>
>>     Add fake parameters on two tests which (rarely) fail for me
>>     
>>     5_3 has a timeout problem.
>>     Async flush has a window update manager waitForNonBlocking ISE problem.
>>     This should make problems far easier to detect.
> 
> Thanks for testing my latest patch. I am going to apply it as I think it
> is heading in the right direction.

Done.

> I'm currently looking at the debug logs for the async flush issue. I've
> made progress tracing it back but I haven't quite got to the root cause.

This should be fixed as well. Looks like a long-standing bug in
flush(boolean).

> My plan is to tackle the 5_3 issue after the async flush issue.

Starting this now.

Meanwhile I'm going to set the unit tests running on OSX and Windows as
a double check.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [tomcat] branch master updated: Add fake parameters on two tests which (rarely) fail for me

Posted by Mark Thomas <ma...@apache.org>.
On 04/06/2019 12:17, remm@apache.org wrote:
> This is an automated email from the ASF dual-hosted git repository.
> 
> remm pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
> 
> 
> The following commit(s) were added to refs/heads/master by this push:
>      new 2eb2d84  Add fake parameters on two tests which (rarely) fail for me
> 2eb2d84 is described below
> 
> commit 2eb2d843f68b9b224f5d8457f340c9bd1e9240c9
> Author: remm <re...@apache.org>
> AuthorDate: Tue Jun 4 13:17:44 2019 +0200
> 
>     Add fake parameters on two tests which (rarely) fail for me
>     
>     5_3 has a timeout problem.
>     Async flush has a window update manager waitForNonBlocking ISE problem.
>     This should make problems far easier to detect.

Thanks for testing my latest patch. I am going to apply it as I think it
is heading in the right direction.

I'm currently looking at the debug logs for the async flush issue. I've
made progress tracing it back but I haven't quite got to the root cause.

My plan is to tackle the 5_3 issue after the async flush issue.

Mark


> ---
>  test/org/apache/coyote/http2/TestAsyncFlush.java       | 8 ++++++++
>  test/org/apache/coyote/http2/TestHttp2Section_5_3.java | 8 ++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/test/org/apache/coyote/http2/TestAsyncFlush.java b/test/org/apache/coyote/http2/TestAsyncFlush.java
> index 8de4c54..3c4373b 100644
> --- a/test/org/apache/coyote/http2/TestAsyncFlush.java
> +++ b/test/org/apache/coyote/http2/TestAsyncFlush.java
> @@ -28,6 +28,8 @@ import javax.servlet.http.HttpServletResponse;
>  
>  import org.junit.Assert;
>  import org.junit.Test;
> +import org.junit.runner.RunWith;
> +import org.junit.runners.Parameterized;
>  
>  import org.apache.catalina.Context;
>  import org.apache.catalina.Wrapper;
> @@ -46,8 +48,14 @@ import org.apache.catalina.startup.Tomcat;
>   *       while the specification allows this to work - it doesn't require that
>   *       it does work.
>   */
> +@RunWith(Parameterized.class)
>  public class TestAsyncFlush extends Http2TestBase {
>  
> +    @Parameterized.Parameters
> +    public static Object[][] data() {
> +        return new Object[10][0];
> +    }
> +
>      private static final int BLOCK_SIZE = 1024;
>  
>      @Test
> diff --git a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java
> index a0bcbaf..64e86de 100644
> --- a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java
> +++ b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java
> @@ -18,6 +18,8 @@ package org.apache.coyote.http2;
>  
>  import org.junit.Assert;
>  import org.junit.Test;
> +import org.junit.runner.RunWith;
> +import org.junit.runners.Parameterized;
>  
>  /**
>   * Unit tests for Section 5.3 of
> @@ -29,8 +31,14 @@ import org.junit.Test;
>   * Note: Unit tests for the examples described by each of the figures may be
>   * found in {@link TestAbstractStream}.
>   */
> +@RunWith(Parameterized.class)
>  public class TestHttp2Section_5_3 extends Http2TestBase {
>  
> +    @Parameterized.Parameters
> +    public static Object[][] data() {
> +        return new Object[10][0];
> +    }
> +
>      // Section 5.3.1
>  
>      @Test
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org