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

Issue 1984723002: Support setReadTimeout in CronetHttpURLConnection (Closed)

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

Description

Support setReadTimeout in CronetHttpURLConnection This CL adds support for setReadTimeout in CronetHttpURLConnection. Because of late binding of sockets to requests, we cannot support per-request connect timeout. This CL adds an UnsupportedOperationException when setConnectTimeout is invoked. The implementation part of the CL is mostly taken from a patch by rohitagr@. This CL also adds unit tests. BUG=611851 Committed: https://crrev.com/5d1f9896cfc04ffcd76f5995c5725891a0ed8882 Cr-Commit-Position: refs/heads/master@{#394541}

Patch Set 1 : #

Total comments: 3

Patch Set 2 : Rebased #

Total comments: 2

Patch Set 3 #

Patch Set 4 : Use getConnectTimeout + getReadTimeout as the timeout for waiting for headers #

Total comments: 1

Patch Set 5 : Address John's comments #

Total comments: 8

Patch Set 6 : Address Andrei's comments #

Patch Set 7 : Throw UnsupportedOperationException for setConnectTimeout #

Patch Set 8 : self review #

Patch Set 9 : self review #

Total comments: 1

Patch Set 10 : remove outdated include #

Total comments: 1

Messages

Total messages: 43 (17 generated)
xunjieli
Paul: PTAL. Thanks!
4 years, 7 months ago (2016-05-16 17:14:30 UTC) #7
rohitagr
https://codereview.chromium.org/1984723002/diff/80001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/1984723002/diff/80001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode519 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:519: mMessageLoop.loop(getConnectTimeout()); I don't think this is safe: as I ...
4 years, 7 months ago (2016-05-16 17:21:56 UTC) #8
rohitagr
4 years, 7 months ago (2016-05-16 17:21:58 UTC) #9
xunjieli
https://codereview.chromium.org/1984723002/diff/80001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/1984723002/diff/80001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode519 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:519: mMessageLoop.loop(getConnectTimeout()); On 2016/05/16 17:21:56, rohitagr wrote: > I don't ...
4 years, 7 months ago (2016-05-16 17:28:10 UTC) #10
xunjieli
Andrei, would you mind taking over the review? Paul is out this week. Our embedder's ...
4 years, 7 months ago (2016-05-17 14:35:04 UTC) #12
kapishnikov
On 2016/05/17 14:35:04, xunjieli wrote: > Andrei, would you mind taking over the review? Paul ...
4 years, 7 months ago (2016-05-17 14:57:36 UTC) #13
jdcormie
Hello from GMM! Thanks for taking a look at this issue! https://codereview.chromium.org/1984723002/diff/100001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): ...
4 years, 7 months ago (2016-05-17 17:48:34 UTC) #14
xunjieli
Thanks, John! PTAL. https://codereview.chromium.org/1984723002/diff/100001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/1984723002/diff/100001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode408 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:408: mMessageLoop.loop(getReadTimeout()); On 2016/05/17 17:48:34, jdcormie wrote: ...
4 years, 7 months ago (2016-05-17 19:43:07 UTC) #16
xunjieli
Andrei: I have changed the CL to use getConnectTimeout() + getReadTimeout() as the timeout for ...
4 years, 7 months ago (2016-05-17 20:06:03 UTC) #18
kapishnikov
https://codereview.chromium.org/1984723002/diff/80001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/1984723002/diff/80001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode519 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:519: mMessageLoop.loop(getConnectTimeout()); On 2016/05/16 17:28:10, xunjieli wrote: > On 2016/05/16 ...
4 years, 7 months ago (2016-05-17 20:33:25 UTC) #19
jdcormie
I believe you that it works today. I'm worried that it is fragile because the ...
4 years, 7 months ago (2016-05-17 20:45:00 UTC) #20
xunjieli
On 2016/05/17 20:45:00, jdcormie wrote: > I believe you that it works today. I'm worried ...
4 years, 7 months ago (2016-05-17 21:33:48 UTC) #21
kapishnikov
https://codereview.chromium.org/1984723002/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java File components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java (right): https://codereview.chromium.org/1984723002/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java#newcode55 components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java:55: private Runnable take(boolean useTimeout, int timeout) throws InterruptedIOException { ...
4 years, 7 months ago (2016-05-18 01:13:43 UTC) #22
pauljensen
I don't really have time to review this, but I just wanted to make sure ...
4 years, 7 months ago (2016-05-18 11:58:53 UTC) #23
xunjieli
> Especially the part about waiting for the timeout to elapse for each IP address. ...
4 years, 7 months ago (2016-05-18 13:31:27 UTC) #24
kapishnikov
On 2016/05/18 11:58:53, pauljensen wrote: > I don't really have time to review this, but ...
4 years, 7 months ago (2016-05-18 15:25:36 UTC) #25
pauljensen
On 2016/05/18 13:31:27, xunjieli wrote: > > Especially the part about waiting for the timeout ...
4 years, 7 months ago (2016-05-18 15:26:43 UTC) #26
xunjieli
> Actually I believe this is how the reference platform operates too, and if I'm ...
4 years, 7 months ago (2016-05-18 15:36:38 UTC) #27
xunjieli
On 2016/05/18 15:36:38, xunjieli wrote: > > Actually I believe this is how the reference ...
4 years, 7 months ago (2016-05-18 17:09:07 UTC) #29
kapishnikov
Looks good. LGTM https://codereview.chromium.org/1984723002/diff/240001/components/cronet/android/test/mock_url_request_job_factory.cc File components/cronet/android/test/mock_url_request_job_factory.cc (right): https://codereview.chromium.org/1984723002/diff/240001/components/cronet/android/test/mock_url_request_job_factory.cc#newcode12 components/cronet/android/test/mock_url_request_job_factory.cc:12: #include "net/test/url_request/url_request_hanging_connect_job.h" This line should also ...
4 years, 7 months ago (2016-05-18 17:44:58 UTC) #30
xunjieli
Misha, could you do a OWNERs review?
4 years, 7 months ago (2016-05-18 18:10:47 UTC) #33
mef
lgtm
4 years, 7 months ago (2016-05-18 19:35:58 UTC) #34
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1984723002/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1984723002/260001
4 years, 7 months ago (2016-05-18 19:37:48 UTC) #37
commit-bot: I haz the power
Committed patchset #10 (id:260001)
4 years, 7 months ago (2016-05-18 20:44:45 UTC) #39
commit-bot: I haz the power
Patchset 10 (id:??) landed as https://crrev.com/5d1f9896cfc04ffcd76f5995c5725891a0ed8882 Cr-Commit-Position: refs/heads/master@{#394541}
4 years, 7 months ago (2016-05-18 20:47:29 UTC) #41
pauljensen
4 years, 7 months ago (2016-05-19 00:51:59 UTC) #43
Message was sent while issue was closed.
https://codereview.chromium.org/1984723002/diff/260001/components/cronet/andr...
File
components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java
(right):

https://codereview.chromium.org/1984723002/diff/260001/components/cronet/andr...
components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:405:
throw new UnsupportedOperationException("Not supported");
I'm not sure throwing an exception here is what we want to do.  I think
generally for compatibility layers, where the goal is to allow old apps to use
new technology, we should log an error but not throw an exception for
functionality that isn't required for general use.  This way embedders can try
out Cronet without having to modify their code, at least for the common use case
where timeouts are not hit.

This is essentially what we do for things like:
1. trying to use the HTTP cache with our HttpURLConnection API impl
2. ten different JavaCronetEngine functions

By throwing an exception here Cronet no longer becomes a drop in replacement
they can try out.

Anyhow, this is just my 2 cents.

Powered by Google App Engine
This is Rietveld 408576698