[ 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