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

Issue 10389007: Change TCPListenSocket::SendInternal to use a non-blocking implementation. (Closed)

Created:
8 years, 7 months ago by Marshall
Modified:
8 years, 7 months ago
CC:
chromium-reviews, cbentzel+watch_chromium.org, darin-cc_chromium.org
Visibility:
Public.

Description

Change TCPListenSocket::SendInternal to use a non-blocking implementation. HttpServer uses TCPListenSocket to create a server that runs on the browser process IO thread. The IO thread should not be blocked as this can introduce jank and deadlocks. BUG=125191 TEST=TCPListenSocketTest.*, DevTools works (see bug report) Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=136572

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Total comments: 26

Patch Set 4 : #

Total comments: 6

Patch Set 5 : #

Patch Set 6 : #

Patch Set 7 : #

Total comments: 18

Patch Set 8 : #

Total comments: 12

Patch Set 9 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+172 lines, -31 lines) Patch
M net/base/tcp_listen_socket.h View 1 2 3 4 5 6 7 3 chunks +15 lines, -0 lines 0 comments Download
M net/base/tcp_listen_socket.cc View 1 2 3 4 5 6 7 8 7 chunks +116 lines, -27 lines 0 comments Download
M net/base/tcp_listen_socket_unittest.h View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
M net/base/tcp_listen_socket_unittest.cc View 1 2 3 4 5 6 7 8 3 chunks +39 lines, -4 lines 0 comments Download

Messages

Total messages: 32 (0 generated)
Marshall
Please review. willchan@ = OWNER michaeln@, pfeldman@ = FYI
8 years, 7 months ago (2012-05-07 20:07:21 UTC) #1
Marshall
Additionally, this patch set fixes a problem on Windows where running: net_unittests.exe --gtest_filter=TCPListenSocketTest.* fails because ...
8 years, 7 months ago (2012-05-07 20:23:30 UTC) #2
willchan no longer on Chromium
I'm at a conference. Adding mmenke to review this since he's reviewing other stuff here ...
8 years, 7 months ago (2012-05-07 20:24:50 UTC) #3
mmenke
The unit tests seem to assume that a single call to SendInternal always sends everything ...
8 years, 7 months ago (2012-05-08 15:51:57 UTC) #4
mmenke
http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode222 net/base/tcp_listen_socket.cc:222: send_data_ = send_data_.substr(sent, len_left - sent); This is so ...
8 years, 7 months ago (2012-05-08 17:08:46 UTC) #5
michaeln
https://chromiumcodereview.appspot.com/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): https://chromiumcodereview.appspot.com/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode142 net/base/tcp_listen_socket.cc:142: void TCPListenSocket::SendInternal(const char* bytes, int len) { Are there ...
8 years, 7 months ago (2012-05-08 18:17:11 UTC) #6
Marshall
http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode142 net/base/tcp_listen_socket.cc:142: void TCPListenSocket::SendInternal(const char* bytes, int len) { On 2012/05/08 ...
8 years, 7 months ago (2012-05-08 20:27:06 UTC) #7
Marshall
On 2012/05/08 15:51:57, Matt Menke wrote: > The unit tests seem to assume that a ...
8 years, 7 months ago (2012-05-08 20:28:55 UTC) #8
mmenke
http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode142 net/base/tcp_listen_socket.cc:142: void TCPListenSocket::SendInternal(const char* bytes, int len) { On 2012/05/08 ...
8 years, 7 months ago (2012-05-08 20:51:43 UTC) #9
Marshall
http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode195 net/base/tcp_listen_socket.cc:195: send_data_.append(bytes, len); On 2012/05/08 20:51:43, Matt Menke wrote: > ...
8 years, 7 months ago (2012-05-08 21:04:57 UTC) #10
mmenke
http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode222 net/base/tcp_listen_socket.cc:222: send_data_ = send_data_.substr(sent, len_left - sent); On 2012/05/08 21:04:57, ...
8 years, 7 months ago (2012-05-08 21:21:34 UTC) #11
mmenke
http://codereview.chromium.org/10389007/diff/5/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/5/net/base/tcp_listen_socket.cc#newcode45 net/base/tcp_listen_socket.cc:45: 100, If we're sending megabytes locally, 100 milliseconds might ...
8 years, 7 months ago (2012-05-08 21:23:37 UTC) #12
Marshall
Added a new TCPListenSocketTest.ServerSendMultiple test to test the buffering and async continuation. http://codereview.chromium.org/10389007/diff/5/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc ...
8 years, 7 months ago (2012-05-08 21:44:51 UTC) #13
Marshall
http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/8001/net/base/tcp_listen_socket.cc#newcode222 net/base/tcp_listen_socket.cc:222: send_data_ = send_data_.substr(sent, len_left - sent); On 2012/05/08 21:21:35, ...
8 years, 7 months ago (2012-05-08 21:53:44 UTC) #14
mmenke
On 2012/05/08 21:53:44, Marshall wrote: > Keeping a list of send buffers sounds like a ...
8 years, 7 months ago (2012-05-08 22:20:18 UTC) #15
Marshall
Changed to use a vector of DrainableIOBuffer instead of std::string for storing pending data.
8 years, 7 months ago (2012-05-09 16:26:49 UTC) #16
mmenke
I'm reasonably happy with this CL, though still a bit concerned about how the backoff ...
8 years, 7 months ago (2012-05-09 19:20:08 UTC) #17
michaeln
this is looking pretty good to me https://chromiumcodereview.appspot.com/10389007/diff/6005/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): https://chromiumcodereview.appspot.com/10389007/diff/6005/net/base/tcp_listen_socket.cc#newcode192 net/base/tcp_listen_socket.cc:192: if (!send_backoff_.ShouldRejectRequest()) ...
8 years, 7 months ago (2012-05-09 20:55:34 UTC) #18
mmenke
https://chromiumcodereview.appspot.com/10389007/diff/6005/net/base/tcp_listen_socket_unittest.cc File net/base/tcp_listen_socket_unittest.cc (right): https://chromiumcodereview.appspot.com/10389007/diff/6005/net/base/tcp_listen_socket_unittest.cc#newcode202 net/base/tcp_listen_socket_unittest.cc:202: int r = HANDLE_EINTR(recv(test_socket_, buf, buf_len-1, 0)); On 2012/05/09 ...
8 years, 7 months ago (2012-05-09 21:08:20 UTC) #19
Marshall
http://codereview.chromium.org/10389007/diff/6005/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/6005/net/base/tcp_listen_socket.cc#newcode37 net/base/tcp_listen_socket.cc:37: const int kMaxSendBufSize = 1024*1024*5; // 5MB On 2012/05/09 ...
8 years, 7 months ago (2012-05-10 16:28:04 UTC) #20
michaeln
lgtm, i just have some style nits, please do with them as you see fit ...
8 years, 7 months ago (2012-05-10 16:52:21 UTC) #21
mmenke
LGTM as well http://codereview.chromium.org/10389007/diff/9/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/9/net/base/tcp_listen_socket.cc#newcode371 net/base/tcp_listen_socket.cc:371: send_buffers_.erase(send_buffers_.begin()); nit: send_buffers_.pop_front() http://codereview.chromium.org/10389007/diff/9/net/base/tcp_listen_socket_unittest.cc File net/base/tcp_listen_socket_unittest.cc ...
8 years, 7 months ago (2012-05-10 17:17:19 UTC) #22
Marshall
http://codereview.chromium.org/10389007/diff/6005/net/base/tcp_listen_socket.cc File net/base/tcp_listen_socket.cc (right): http://codereview.chromium.org/10389007/diff/6005/net/base/tcp_listen_socket.cc#newcode375 net/base/tcp_listen_socket.cc:375: if (sent == kSocketError) { On 2012/05/09 20:55:34, michaeln ...
8 years, 7 months ago (2012-05-10 19:01:09 UTC) #23
mmenke
And still LGTM
8 years, 7 months ago (2012-05-10 19:04:05 UTC) #24
michaeln
still lgtm2, thnx marshall and please run some tryjobs prior to committing
8 years, 7 months ago (2012-05-10 19:18:02 UTC) #25
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/marshall@chromium.org/10389007/11009
8 years, 7 months ago (2012-05-10 19:27:15 UTC) #26
commit-bot: I haz the power
Try job failure for 10389007-11009 (retry) on android for steps "Compile, build". It's a second ...
8 years, 7 months ago (2012-05-10 19:38:54 UTC) #27
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/marshall@chromium.org/10389007/11009
8 years, 7 months ago (2012-05-11 14:09:36 UTC) #28
commit-bot: I haz the power
Change committed as 136572
8 years, 7 months ago (2012-05-11 15:52:48 UTC) #29
benjhayden
On 2012/05/11 15:52:48, I haz the power (commit-bot) wrote: > Change committed as 136572 This ...
8 years, 7 months ago (2012-05-11 17:02:00 UTC) #30
mmenke
On 2012/05/11 17:02:00, benjhayden_chromium wrote: > On 2012/05/11 15:52:48, I haz the power (commit-bot) wrote: ...
8 years, 7 months ago (2012-05-11 17:07:36 UTC) #31
michaeln
8 years, 7 months ago (2012-05-11 18:11:48 UTC) #32
bummer... i guess there is an existing consumer that's unhappy with the change
:(

Powered by Google App Engine
This is Rietveld 408576698