Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Issue 1856073002: Coalesce small buffers in net::BidirectionalStream (Closed)

Created:
4 years, 8 months ago by xunjieli
Modified:
4 years, 7 months ago
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Coalesce small buffers in net::BidirectionalStream This CL adds a flush mode and a flush() method to Cronet's BidirectionalStream API and buffers writes until flush() is called. By default, Cronet flushes after every write(). net::BidirectionalStreamQuicImpl uses ScopedPacketBundler to bundle small writes into one data packet along with request headers. net::BidirectionalStreamSpdyImpl will do an extra memcpy to combine small write buffers into a big one. BidirectionalStreamSpdyImpl doesn't combine header frame with data frame currently. BUG=599902 Committed: https://crrev.com/07a42ce317dfabf8764d5c3ea2887eef1e467905 Cr-Commit-Position: refs/heads/master@{#389865}

Patch Set 1 : #

Total comments: 10

Patch Set 2 : Fix Javadoc #

Total comments: 8

Patch Set 3 : Address Andrei's comments #

Total comments: 6

Patch Set 4 : Add missing documentation #

Patch Set 5 : Address Andrei's comments #

Patch Set 6 : Address Ryan's comments #

Total comments: 17

Patch Set 7 : Address Andrei's comments #

Patch Set 8 : Allow multiple in-flight Write() #

Patch Set 9 : Fix iOS and leak #

Patch Set 10 : Put back onSucceeded #

Patch Set 11 : self review #

Total comments: 18

Patch Set 12 : Address comments #

Patch Set 13 : Rebased #

Patch Set 14 : Fix test #

Patch Set 15 : Fix test #

Total comments: 3

Patch Set 16 : Address comments and add two tests in quic_chromium_client_stream_test.cc #

Patch Set 17 : Fix javadoc #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1278 lines, -293 lines) Patch
M components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 10 chunks +53 lines, -32 lines 0 comments Download
M components/cronet/android/api/src/org/chromium/net/CronetEngine.java View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +2 lines, -1 line 0 comments Download
M components/cronet/android/api/src/org/chromium/net/JavaCronetEngine.java View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +1 line, -1 line 0 comments Download
M components/cronet/android/cronet_bidirectional_stream_adapter.h View 1 2 3 4 5 6 7 8 9 10 11 12 6 chunks +24 lines, -17 lines 0 comments Download
M components/cronet/android/cronet_bidirectional_stream_adapter.cc View 1 2 3 4 5 6 7 8 9 10 11 12 10 chunks +115 lines, -45 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java View 1 2 3 4 5 6 7 8 9 10 11 18 chunks +156 lines, -86 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +3 lines, -3 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +92 lines, -3 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 chunks +163 lines, -25 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/TestBidirectionalStreamCallback.java View 1 2 3 4 5 6 7 8 9 14 chunks +60 lines, -18 lines 0 comments Download
M components/cronet/ios/cronet_bidirectional_stream.h View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +2 lines, -2 lines 0 comments Download
M components/cronet/ios/cronet_bidirectional_stream.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +3 lines, -3 lines 0 comments Download
M components/cronet/ios/cronet_c_for_grpc.h View 1 2 3 4 5 6 7 8 9 3 chunks +8 lines, -7 lines 0 comments Download
M components/cronet/ios/cronet_c_for_grpc.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +3 lines, -3 lines 0 comments Download
M net/http/bidirectional_stream.h View 1 2 3 4 5 6 8 chunks +19 lines, -10 lines 0 comments Download
M net/http/bidirectional_stream.cc View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +39 lines, -12 lines 0 comments Download
M net/http/bidirectional_stream_impl.h View 1 2 3 4 5 6 3 chunks +7 lines, -2 lines 0 comments Download
M net/http/bidirectional_stream_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +101 lines, -3 lines 0 comments Download
M net/http/http_stream_factory_impl_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +5 lines, -3 lines 0 comments Download
M net/quic/bidirectional_stream_quic_impl.h View 1 2 3 4 5 6 2 chunks +6 lines, -0 lines 0 comments Download
M net/quic/bidirectional_stream_quic_impl.cc View 1 2 3 4 5 6 6 chunks +34 lines, -2 lines 0 comments Download
M net/quic/bidirectional_stream_quic_impl_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 19 chunks +162 lines, -14 lines 0 comments Download
M net/quic/quic_chromium_client_stream.h View 1 2 3 4 5 2 chunks +7 lines, -0 lines 0 comments Download
M net/quic/quic_chromium_client_stream.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +21 lines, -0 lines 0 comments Download
M net/quic/quic_chromium_client_stream_test.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +47 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_test_packet_maker.h View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +18 lines, -0 lines 0 comments Download
M net/quic/test_tools/quic_test_packet_maker.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +83 lines, -0 lines 0 comments Download
M net/spdy/bidirectional_stream_spdy_impl.h View 1 2 3 4 5 6 2 chunks +9 lines, -0 lines 0 comments Download
M net/spdy/bidirectional_stream_spdy_impl.cc View 1 2 3 4 5 6 6 chunks +35 lines, -1 line 0 comments Download

Messages

Total messages: 50 (21 generated)
xunjieli
Hello reviewers! PTAL. This is an early draft, but I'd really appreciate some feedback.
4 years, 8 months ago (2016-04-11 19:25:57 UTC) #12
kapishnikov
Comments regarding the Java part. https://codereview.chromium.org/1856073002/diff/140001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java File components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/140001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java#newcode168 components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java:168: public Builder setDisableAutoFlush() { ...
4 years, 8 months ago (2016-04-11 23:09:42 UTC) #15
xunjieli
Thanks a lot for the review! PTAL. https://codereview.chromium.org/1856073002/diff/140001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java File components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/140001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java#newcode168 components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java:168: public Builder ...
4 years, 8 months ago (2016-04-12 18:01:48 UTC) #16
kapishnikov
https://codereview.chromium.org/1856073002/diff/180001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/180001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode267 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:267: if (mEndOfStreamWritten) { We should move it ahead of ...
4 years, 8 months ago (2016-04-12 19:27:39 UTC) #17
xunjieli
Thanks, Andrei! https://codereview.chromium.org/1856073002/diff/180001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/180001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode267 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:267: if (mEndOfStreamWritten) { On 2016/04/12 19:27:39, kapishnikov ...
4 years, 8 months ago (2016-04-12 19:59:03 UTC) #18
Ryan Hamilton
Looking good! https://codereview.chromium.org/1856073002/diff/160001/net/quic/bidirectional_stream_quic_impl.cc File net/quic/bidirectional_stream_quic_impl.cc (right): https://codereview.chromium.org/1856073002/diff/160001/net/quic/bidirectional_stream_quic_impl.cc#newcode135 net/quic/bidirectional_stream_quic_impl.cc:135: input_buffers.push_back(string_data); Instead of allocating a new std::vector ...
4 years, 8 months ago (2016-04-13 03:42:28 UTC) #19
xunjieli
Thanks for the review! PTAL. https://codereview.chromium.org/1856073002/diff/160001/net/quic/bidirectional_stream_quic_impl.cc File net/quic/bidirectional_stream_quic_impl.cc (right): https://codereview.chromium.org/1856073002/diff/160001/net/quic/bidirectional_stream_quic_impl.cc#newcode135 net/quic/bidirectional_stream_quic_impl.cc:135: input_buffers.push_back(string_data); On 2016/04/13 03:42:28, ...
4 years, 8 months ago (2016-04-13 14:53:15 UTC) #20
xunjieli
Ryan, Andrei: a friendly ping. Thank you!
4 years, 8 months ago (2016-04-18 17:46:05 UTC) #21
kapishnikov
Helen, sorry for the delay. The CL looks very good. Here are some comments. https://codereview.chromium.org/1856073002/diff/240001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java ...
4 years, 8 months ago (2016-04-19 03:22:22 UTC) #22
xunjieli
Thanks a lot, Andrei! PTAL. https://codereview.chromium.org/1856073002/diff/240001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java File components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/240001/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java#newcode165 components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java:165: * By default, data ...
4 years, 8 months ago (2016-04-19 19:30:03 UTC) #23
kapishnikov
https://codereview.chromium.org/1856073002/diff/240001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/240001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode175 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:175: maybeSucceedLocked(); On 2016/04/19 19:30:03, xunjieli wrote: > On 2016/04/19 ...
4 years, 8 months ago (2016-04-19 19:56:39 UTC) #24
xunjieli
Thanks, Andrei, for the incredibly helpful comments and suggestions! I have uploaded a new patch ...
4 years, 8 months ago (2016-04-20 16:36:39 UTC) #25
kapishnikov
On 2016/04/20 16:36:39, xunjieli wrote: > Thanks, Andrei, for the incredibly helpful comments and suggestions! ...
4 years, 8 months ago (2016-04-20 17:43:37 UTC) #26
xunjieli
On 2016/04/20 17:43:37, kapishnikov wrote: > On 2016/04/20 16:36:39, xunjieli wrote: > > Thanks, Andrei, ...
4 years, 8 months ago (2016-04-20 19:08:35 UTC) #27
kapishnikov
Looks great! Here are some extra comments/questions: https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode170 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:170: public OnWriteCompletedRunnable(ByteBuffer ...
4 years, 8 months ago (2016-04-20 22:05:43 UTC) #28
xunjieli
Thanks a lot, Andrei! The comments are very useful! You've caught some serious bugs. Thanks! ...
4 years, 8 months ago (2016-04-21 14:56:25 UTC) #29
kapishnikov
https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode336 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:336: mWriteState = State.WAITING_FOR_WRITE; On 2016/04/21 14:56:24, xunjieli wrote: > ...
4 years, 8 months ago (2016-04-21 15:24:05 UTC) #30
xunjieli
https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode336 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:336: mWriteState = State.WAITING_FOR_WRITE; On 2016/04/21 15:24:04, kapishnikov wrote: > ...
4 years, 8 months ago (2016-04-21 16:10:28 UTC) #31
kapishnikov
https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode336 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:336: mWriteState = State.WAITING_FOR_WRITE; On 2016/04/21 16:10:27, xunjieli wrote: > ...
4 years, 8 months ago (2016-04-21 17:06:11 UTC) #32
xunjieli
https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java (right): https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java#newcode336 components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java:336: mWriteState = State.WAITING_FOR_WRITE; On 2016/04/21 17:06:11, kapishnikov wrote: > ...
4 years, 8 months ago (2016-04-21 17:16:46 UTC) #33
kapishnikov
Great job! One comment that can be addressed in another CL. LGTM https://codereview.chromium.org/1856073002/diff/340001/components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java File components/cronet/android/java/src/org/chromium/net/CronetBidirectionalStream.java ...
4 years, 8 months ago (2016-04-21 19:41:25 UTC) #34
xunjieli
Hi Ryan: Andrei helped me to polish the Java API design. I think the Java ...
4 years, 8 months ago (2016-04-21 19:47:52 UTC) #35
xunjieli
Ryan: Ping. PTAL net/*. Thanks!
4 years, 8 months ago (2016-04-25 18:06:54 UTC) #37
Ryan Hamilton
QUIC changes LGTM, modulo a suggestion to add a unit test. https://codereview.chromium.org/1856073002/diff/440001/net/quic/quic_chromium_client_stream.cc File net/quic/quic_chromium_client_stream.cc (right): ...
4 years, 7 months ago (2016-04-26 16:52:16 UTC) #38
xunjieli
Thanks a lot for the review! I added two tests in quic_chromium_client_stream_test.cc (one for the ...
4 years, 7 months ago (2016-04-26 18:11:27 UTC) #39
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1856073002/460001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1856073002/460001
4 years, 7 months ago (2016-04-26 18:11:56 UTC) #42
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1856073002/480001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1856073002/480001
4 years, 7 months ago (2016-04-26 18:16:52 UTC) #46
commit-bot: I haz the power
Committed patchset #17 (id:480001)
4 years, 7 months ago (2016-04-26 20:05:45 UTC) #48
commit-bot: I haz the power
4 years, 7 months ago (2016-04-26 20:07:10 UTC) #50
Message was sent while issue was closed.
Patchset 17 (id:??) landed as
https://crrev.com/07a42ce317dfabf8764d5c3ea2887eef1e467905
Cr-Commit-Position: refs/heads/master@{#389865}

Powered by Google App Engine
This is Rietveld 408576698