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

Issue 9861032: Close idle connections / SPDY sessions when needed (Closed)

Created:
8 years, 9 months ago by Ryan Hamilton
Modified:
8 years, 8 months ago
Reviewers:
eroman
CC:
chromium-reviews, cbentzel+watch_chromium.org, darin-cc_chromium.org
Visibility:
Public.

Description

Attempting to re-land this feature with instrumentation to track down the use-after-free. Revert 129034 - Revert 127893 - Revert 127730 - Revert 127717 - Revert 118788 - Revert 113405 - Revert 113305 - Revert 113300 - Revert 112134 - Revert 112130 - Close idle connections / SPDY sessions when needed Due to the idle connection state being held by different socket pools, it's possible for one socket pool to hold an idle socket in a lower layer socket pool. From the lower level socket pool's perspective, the socket is being "actively" used. From the higher socket pool's (including SpdySession, which is more of a connection manager) perspective, the connection is idle and can be closed if we have hit a limit. Normally this isn't a big deal, except when we have a lot of idle SPDY connections and are connecting via a proxy, so we have low connection limits through the proxy server. We address this problem by allowing lower-level socket pools to tell higher level socket pools to close a socket. Fixed ASAN test failures by removing .Times(1) and .Times(2) from CloseMultipleIdleSocketsHeldByLayeredPoolWhenNeeded unittest (this removes the tests relying on the order of std::set in CloseOneIdleConnectionInLayeredPool). ASAN is prob ably causing the memory allocator to allocate the pools differently. The std::set is ordered by LayeredPool* which is the address of the LayeredPool (willchan). Added NET_EXPORT for layered_pool class defintion to fix windows shared compile. BUG=62364, 92244, 109876, 110368, 119847 TEST= Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=130129

Patch Set 1 #

Patch Set 2 : Add instrumentation #

Total comments: 8

Patch Set 3 : Remove new SpdySession logic #

Patch Set 4 : Address eroman's comments. #

Total comments: 6

Patch Set 5 : Moar fixes from eroman #

Patch Set 6 : Rebase #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1424 lines, -37 lines) Patch
M net/http/http_network_transaction_spdy21_unittest.cc View 1 2 3 4 5 1 chunk +181 lines, -0 lines 0 comments Download
M net/http/http_network_transaction_spdy2_unittest.cc View 1 2 3 4 5 1 chunk +181 lines, -0 lines 0 comments Download
M net/http/http_network_transaction_spdy3_unittest.cc View 1 2 3 4 5 1 chunk +181 lines, -0 lines 0 comments Download
M net/http/http_proxy_client_socket_pool.h View 1 2 3 4 5 4 chunks +12 lines, -1 line 0 comments Download
M net/http/http_proxy_client_socket_pool.cc View 1 2 3 4 5 4 chunks +34 lines, -2 lines 0 comments Download
M net/socket/client_socket_handle.h View 1 2 chunks +7 lines, -0 lines 0 comments Download
M net/socket/client_socket_handle.cc View 1 3 chunks +28 lines, -0 lines 0 comments Download
M net/socket/client_socket_pool.h View 1 2 3 4 4 chunks +37 lines, -0 lines 0 comments Download
M net/socket/client_socket_pool.cc View 1 2 3 4 2 chunks +21 lines, -0 lines 0 comments Download
M net/socket/client_socket_pool_base.h View 11 chunks +41 lines, -12 lines 0 comments Download
M net/socket/client_socket_pool_base.cc View 1 9 chunks +87 lines, -15 lines 0 comments Download
M net/socket/client_socket_pool_base_unittest.cc View 16 chunks +219 lines, -4 lines 0 comments Download
M net/socket/socks_client_socket_pool.h View 4 chunks +11 lines, -1 line 0 comments Download
M net/socket/socks_client_socket_pool.cc View 4 chunks +26 lines, -1 line 0 comments Download
M net/socket/ssl_client_socket_pool.h View 4 chunks +10 lines, -0 lines 0 comments Download
M net/socket/ssl_client_socket_pool.cc View 1 2 3 4 5 4 chunks +33 lines, -0 lines 0 comments Download
M net/socket/transport_client_socket_pool.h View 2 chunks +3 lines, -0 lines 0 comments Download
M net/socket/transport_client_socket_pool.cc View 2 chunks +12 lines, -0 lines 0 comments Download
M net/spdy/spdy_session.h View 1 2 3 4 5 3 chunks +7 lines, -1 line 0 comments Download
M net/spdy/spdy_session.cc View 1 2 3 4 5 2 chunks +13 lines, -0 lines 0 comments Download
M net/spdy/spdy_session_spdy2_unittest.cc View 1 2 3 4 5 1 chunk +140 lines, -0 lines 0 comments Download
M net/spdy/spdy_session_spdy3_unittest.cc View 1 2 3 4 5 1 chunk +140 lines, -0 lines 0 comments Download

Messages

Total messages: 12 (0 generated)
Ryan Hamilton
eroman: I've added some use-after-free instrumentation to my earlier CL. I've also added a possibly ...
8 years, 9 months ago (2012-03-27 22:43:09 UTC) #1
Ryan Hamilton
FYI: I removed the logic in SpdySession after realizing that the behavior I attributed to ...
8 years, 8 months ago (2012-03-28 17:58:18 UTC) #2
eroman
https://chromiumcodereview.appspot.com/9861032/diff/2001/net/socket/client_socket_pool.cc File net/socket/client_socket_pool.cc (right): https://chromiumcodereview.appspot.com/9861032/diff/2001/net/socket/client_socket_pool.cc#newcode29 net/socket/client_socket_pool.cc:29: magic_value_ = 0; Two comments: (1) Define the magic ...
8 years, 8 months ago (2012-03-28 18:02:49 UTC) #3
Ryan Hamilton
Thanks for the review and all the help with this! https://chromiumcodereview.appspot.com/9861032/diff/2001/net/socket/client_socket_pool.cc File net/socket/client_socket_pool.cc (right): https://chromiumcodereview.appspot.com/9861032/diff/2001/net/socket/client_socket_pool.cc#newcode29 ...
8 years, 8 months ago (2012-03-28 18:15:44 UTC) #4
eroman
I only reviewed the deltas since patchset 1 -- I am assuming everything prior to ...
8 years, 8 months ago (2012-03-28 18:25:59 UTC) #5
Ryan Hamilton
> I only reviewed the deltas since patchset 1 -- I am assuming everything prior ...
8 years, 8 months ago (2012-03-28 18:35:28 UTC) #6
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/rch@chromium.org/9861032/7051
8 years, 8 months ago (2012-04-02 01:33:50 UTC) #7
commit-bot: I haz the power
Try job failure for 9861032-7051 (retry) on android for steps "Compile, build". It's a second ...
8 years, 8 months ago (2012-04-02 01:45:37 UTC) #8
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/rch@chromium.org/9861032/11002
8 years, 8 months ago (2012-04-02 02:27:01 UTC) #9
commit-bot: I haz the power
Try job failure for 9861032-11002 (retry) on win_rel for step "browser_tests". It's a second try, ...
8 years, 8 months ago (2012-04-02 05:36:26 UTC) #10
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/rch@chromium.org/9861032/11002
8 years, 8 months ago (2012-04-02 13:38:22 UTC) #11
commit-bot: I haz the power
8 years, 8 months ago (2012-04-02 15:22:45 UTC) #12
Change committed as 130129

Powered by Google App Engine
This is Rietveld 408576698