|
|
Created:
4 years, 11 months ago by ramant (doing other things) Modified:
4 years, 11 months ago Reviewers:
Ryan Hamilton 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. |
DescriptionQUIC - Whne alternate job decides to delay the main(TCP) job and if the
TCP job hasn't started, then delay the job by the given delay when it
starts.
Added logging of the delayed time in the main(TCP) job.
R=rch@chromium.org
Committed: https://crrev.com/e0e7f968e7ee05a89720892696ea5757562392de
Cr-Commit-Position: refs/heads/master@{#371123}
Patch Set 1 #Patch Set 2 : rebase TOT #
Total comments: 12
Patch Set 3 : Rebase and fix comments #
Depends on Patchset: Messages
Total messages: 38 (20 generated)
The CQ bit was checked by rtenneti@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1586513002/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1586513002/1
Patchset #1 (id:1) has been deleted
Patchset #1 (id:20001) has been deleted
Patchset #1 (id:40001) has been deleted
The CQ bit was checked by rtenneti@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1586513002/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1586513002/60001
Description was changed from ========== QUIC - Whne alternate job decides to delay the main(TCP) job and if the TCP job hasn't started, then delay the job by the given delay when it starts. Added logging of the delayed time in the main(TCP) job. ========== to ========== QUIC - Whne alternate job decides to delay the main(TCP) job and if the TCP job hasn't started, then delay the job by the given delay when it starts. Added logging of the delayed time in the main(TCP) job. R=rch@chromium.org ==========
rtenneti@chromium.org changed reviewers: + rch@chromium.org
Hi Ryan, When I was logging how long the TCP job is being delayed, I found out if the TCP is not started when QUIC starts its 0RTT handshake, then we weren't delaying the TCP job. I think, it is good to delay the TCP job in this case (when delay_tcp_race option is enabled). Would appreciate if you could take a quick look at this CL and see if this is the right way to fix it or not. thanks much raman
The CQ bit was checked by rtenneti@chromium.org to run a CQ dry run
Dry run: Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator...) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device_ni...)
Patchset #1 (id:60001) has been deleted
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1586513002/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1586513002/80001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator...)
Patchset #1 (id:80001) has been deleted
The CQ bit was checked by rtenneti@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1586513002/120001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1586513002/120001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: cast_shell_linux on tryserver.chromium.linux (JOB_TIMED_OUT, no build URL)
https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... File net/http/http_stream_factory_impl_job.cc (right): https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:246: void HttpStreamFactoryImpl::Job::ResumeWaitingJobAfterDelay( Does this resume the current job, or a job which is waiting on this job? I believe it's this job, right? In which case, I think I'd remove "WaitingJob" from the method name. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:247: const base::TimeDelta& delay) { Instead if passing in delay here, an alternative would be to set wait_time_ and use that exclusively. That would be nice, because it would explain why wait_time_ is cleared after the task is posted. (Though perhaps that should be cleared in the WaitComplete() method. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:265: // If the job hasn't started, delay that job by |wait_time_| when it starts. "that job" or "this job"? https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:274: ResumeWaitingJobAfterDelay(delay); Is the only case we need to schedule a future wait the case where we're at STATE_NONE? What if we've made some progress but not all the way to waiting? I think I might be inclined to write this as: if (next_state_ == STATE_WAIT_FOR_JOB_COMPLETE) ResumeWaitingJobAfterDelay(delay) if (next_state_ < STATE_WAIT_FOR_JOB) // or something wait_time_ = delay; https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:855: if (blocking_job_ || !wait_time_.is_zero()) Alternatively, we could always move to the WAIT_FOR_JOB state, and do this logic there. I wonder if that might be cleaner. what do you think? https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... File net/http/http_stream_factory_impl_job.h (right): https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.h:137: // existing SpdySession. In that case, the http and npn-spdy jobs will race. Can you update this comment when you have a chance?
Patchset #3 (id:140001) has been deleted
Patchset #3 (id:160001) has been deleted
The CQ bit was checked by rtenneti@chromium.org to run a CQ dry run
Thanks very much Ryan for comments. Made all the changes. PTAL. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... File net/http/http_stream_factory_impl_job.cc (right): https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:246: void HttpStreamFactoryImpl::Job::ResumeWaitingJobAfterDelay( On 2016/01/19 23:23:27, Ryan Hamilton wrote: > Does this resume the current job, or a job which is waiting on this job? I > believe it's this job, right? In which case, I think I'd remove "WaitingJob" > from the method name. You are right. Done. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:247: const base::TimeDelta& delay) { On 2016/01/19 23:23:27, Ryan Hamilton wrote: > Instead if passing in delay here, an alternative would be to set wait_time_ and > use that exclusively. That would be nice, because it would explain why > wait_time_ is cleared after the task is posted. (Though perhaps that should be > cleared in the WaitComplete() method. Done. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:265: // If the job hasn't started, delay that job by |wait_time_| when it starts. On 2016/01/19 23:23:27, Ryan Hamilton wrote: > "that job" or "this job"? :-). It is |this| job. Updated the comment. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:274: ResumeWaitingJobAfterDelay(delay); On 2016/01/19 23:23:27, Ryan Hamilton wrote: > Is the only case we need to schedule a future wait the case where we're at > STATE_NONE? What if we've made some progress but not all the way to waiting? > > I think I might be inclined to write this as: > > if (next_state_ == STATE_WAIT_FOR_JOB_COMPLETE) > ResumeWaitingJobAfterDelay(delay) > > if (next_state_ < STATE_WAIT_FOR_JOB) // or something > wait_time_ = delay; +1 to the above and thanks for the very good point. Done. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.cc:855: if (blocking_job_ || !wait_time_.is_zero()) On 2016/01/19 23:23:27, Ryan Hamilton wrote: > Alternatively, we could always move to the WAIT_FOR_JOB state, and do this logic > there. I wonder if that might be cleaner. what do you think? Done. https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... File net/http/http_stream_factory_impl_job.h (right): https://codereview.chromium.org/1586513002/diff/120001/net/http/http_stream_f... net/http/http_stream_factory_impl_job.h:137: // existing SpdySession. In that case, the http and npn-spdy jobs will race. On 2016/01/19 23:23:27, Ryan Hamilton wrote: > Can you update this comment when you have a chance? Done.
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1586513002/180001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1586513002/180001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Hi Ryan, Would appreciate if you could take another look at this CL. thanks very much raman
lgtm
The CQ bit was checked by rtenneti@chromium.org
lgtm
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1586513002/180001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1586513002/180001
Message was sent while issue was closed.
Description was changed from ========== QUIC - Whne alternate job decides to delay the main(TCP) job and if the TCP job hasn't started, then delay the job by the given delay when it starts. Added logging of the delayed time in the main(TCP) job. R=rch@chromium.org ========== to ========== QUIC - Whne alternate job decides to delay the main(TCP) job and if the TCP job hasn't started, then delay the job by the given delay when it starts. Added logging of the delayed time in the main(TCP) job. R=rch@chromium.org ==========
Message was sent while issue was closed.
Committed patchset #3 (id:180001)
Message was sent while issue was closed.
Description was changed from ========== QUIC - Whne alternate job decides to delay the main(TCP) job and if the TCP job hasn't started, then delay the job by the given delay when it starts. Added logging of the delayed time in the main(TCP) job. R=rch@chromium.org ========== to ========== QUIC - Whne alternate job decides to delay the main(TCP) job and if the TCP job hasn't started, then delay the job by the given delay when it starts. Added logging of the delayed time in the main(TCP) job. R=rch@chromium.org Committed: https://crrev.com/e0e7f968e7ee05a89720892696ea5757562392de Cr-Commit-Position: refs/heads/master@{#371123} ==========
Message was sent while issue was closed.
Patchset 3 (id:??) landed as https://crrev.com/e0e7f968e7ee05a89720892696ea5757562392de Cr-Commit-Position: refs/heads/master@{#371123} |