[ 
https://issues.apache.org/jira/browse/HTTPCORE-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16936886#comment-16936886
 ] 

Roy Hashimoto commented on HTTPCORE-599:
----------------------------------------

It looks like the change broke the fix for HTTP and isn't obviously better for 
HTTPS.

When I run my initial test attached to the original submission (which tests 
HTTP only) I get this output which doesn't seem to be throttling at all:

{{2019-09-24 7:38:07.973 -0700 SlowConsumerTest main FINE: Listening on 
/0:0:0:0:0:0:0:0:8080 }}
{{2019-09-24 7:42:15.085 -0700 SlowConsumerTest$MyExchangeHandler handleRequest 
FINEST: handleRequest called }}
{{2019-09-24 7:42:15.110 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 8192 total 8192 }}
{{capacity = 0}}
{{2019-09-24 7:42:15.116 -0700 SlowConsumerTest$MyExchangeHandler 
updateCapacity FINEST: updateCapacity called }}
{{2019-09-24 7:42:15.118 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 8192 total 16384 }}
{{capacity = -8192}}
{{2019-09-24 7:42:15.130 -0700 SlowConsumerTest$MyExchangeHandler 
updateCapacity FINEST: updateCapacity called }}
{{2019-09-24 7:42:15.131 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 8192 total 24576 }}
{{capacity = -16384}}
{{2019-09-24 7:42:15.137 -0700 SlowConsumerTest$MyExchangeHandler 
updateCapacity FINEST: updateCapacity called }}
{{2019-09-24 7:42:15.138 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 8192 total 32768 }}
{{capacity = -24576}}
{{2019-09-24 7:42:15.141 -0700 SlowConsumerTest$MyExchangeHandler 
updateCapacity FINEST: updateCapacity called }}
{{2019-09-24 7:42:15.142 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 8192 total 40960 }}
{{capacity = -32768}}
{{2019-09-24 7:42:15.147 -0700 SlowConsumerTest$MyExchangeHandler 
updateCapacity FINEST: updateCapacity called }}
{{2019-09-24 7:42:15.148 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 8192 total 49152 }}
{{capacity = -40960}}
{{2019-09-24 7:42:15.152 -0700 SlowConsumerTest$MyExchangeHandler 
updateCapacity FINEST: updateCapacity called }}
{{2019-09-24 7:42:15.153 -0700 SlowConsumerTest$MyExchangeHandler consume 
FINEST: consume 1882 total 51034 }}
{{capacity = -42842}}
{{2019-09-24 7:42:15.156 -0700 SlowConsumerTest$MyExchangeHandler streamEnd 
FINEST: streamEnd called}}

I also reran the test described in my comment on the first fix:

https://issues.apache.org/jira/browse/HTTPCORE-599?focusedCommentId=16926693&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16926693

It now looks worse for HTTP and about the same for HTTPS:

HTTP

{{capacity = 5}}
{{capacity = -251}}
{{capacity = -507}}
{{capacity = -763}}
{{capacity = -1017}}
{{capacity = -1273}}
{{capacity = -1344 }}

HTTPS

{{capacity = 0}}
{{capacity = -240}}
{{capacity = -496}}
{{capacity = -752}}
{{capacity = 0}}
{{capacity = 496}}
{{capacity = 432}}

 

> Capacity feedback does not throttle AsyncDataConsumer.consume() for Http1
> -------------------------------------------------------------------------
>
>                 Key: HTTPCORE-599
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-599
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 5.0-beta8
>         Environment: macOS Mojave using the IntelliJ CE 2019.2.1 runtime
>            Reporter: Roy Hashimoto
>            Priority: Blocker
>             Fix For: 5.0-beta9
>
>         Attachments: SlowConsumerTest.java
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> The capacity window mechanism in AbstractHttp1StreamDuplexer does not appear 
> to be throttling calls to AsyncDataConsumer.consume(). This affects both 
> client and server asynchronous entity consumers.
> The attached test program implements a simple 5.0 asynchronous HTTP/1.1 
> server. Aside from boilerplate code, the significant parts are:
>  # Set the HTTP1 initial window size to 8192.
>  # Add an AsyncExchangeHandler that creates an empty response and logs the 
> AsyncDataConsumer method calls to the console.
>  # Updating the capacity channel is intentionally omitted, effectively 
> providing an infinitely slow consumer.
> To test, post data of more than 8 KB to the server (e.g. using curl). I 
> expect to see in the log consume() calls totaling at least 8192 and nothing 
> after that until the socket times out. Instead, what I see is consume() calls 
> delivering all the data and then streamEnd().
> Here is sample output for uploading almost 32 KB. I have used my IDE to add a 
> logging breakpoint to show the capacity window on this line:
> [https://github.com/apache/httpcomponents-core/blob/a60528ea58877d55dab266bd2813e065aac6ff2c/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractHttp1StreamDuplexer.java#L313]
> so those are also included in the output below.
> {{Mon Sep 09, 2019 10:27:18.893 AM SlowConsumerTest main FINE: Listening on 
> /0:0:0:0:0:0:0:0:8080}}
>  {{Mon Sep 09, 2019 10:27:31.294 AM SlowConsumerTest$MyExchangeHandler 
> handleRequest FINEST: handleRequest called}}
>  {{Mon Sep 09, 2019 10:27:31.332 AM SlowConsumerTest$MyExchangeHandler 
> consume FINEST: consume 8192 total 8192}}
>  {{AbstractHttp1StreamDuplexer:313 capacity=0}}
>  {{Mon Sep 09, 2019 10:27:31.341 AM SlowConsumerTest$MyExchangeHandler 
> updateCapacity FINEST: updateCapacity called}}
>  {{Mon Sep 09, 2019 10:27:31.342 AM SlowConsumerTest$MyExchangeHandler 
> consume FINEST: consume 8192 total 16384}}
>  {{AbstractHttp1StreamDuplexer:313 capacity=-8192}}
>  {{Mon Sep 09, 2019 10:27:31.346 AM SlowConsumerTest$MyExchangeHandler 
> updateCapacity FINEST: updateCapacity called}}
>  {{Mon Sep 09, 2019 10:27:31.348 AM SlowConsumerTest$MyExchangeHandler 
> consume FINEST: consume 8192 total 24576}}
>  {{AbstractHttp1StreamDuplexer:313 capacity=-16384}}
>  {{Mon Sep 09, 2019 10:27:31.352 AM SlowConsumerTest$MyExchangeHandler 
> updateCapacity FINEST: updateCapacity called}}
>  {{Mon Sep 09, 2019 10:27:31.354 AM SlowConsumerTest$MyExchangeHandler 
> consume FINEST: consume 8150 total 32726}}
>  {{AbstractHttp1StreamDuplexer:313 capacity=-24534}}
>  {{Mon Sep 09, 2019 10:27:31.357 AM SlowConsumerTest$MyExchangeHandler 
> streamEnd FINEST: streamEnd called}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to