From bc11943ed50cef962cc059b6e24493f84c4de5fa Mon Sep 17 00:00:00 2001 From: zhongyi Date: Wed, 26 Apr 2017 11:01:28 -0700 Subject: [PATCH] Change QuicStreamFactory::active_jobs_ to a Map from QuicServerId to Job as auxiliary Job is no longer supported. There should be at most one Job serving the same QuicServerId. BUG=707953 Review-Url: https://codereview.chromium.org/2842883002 Cr-Commit-Position: refs/heads/master@{#467380} --- net/log/net_log_event_type_list.h | 3 -- net/quic/chromium/quic_stream_factory.cc | 39 ++++--------------- net/quic/chromium/quic_stream_factory.h | 3 +- net/quic/chromium/quic_stream_factory_peer.cc | 9 ----- 4 files changed, 9 insertions(+), 45 deletions(-) diff --git a/net/log/net_log_event_type_list.h b/net/log/net_log_event_type_list.h index 9653c7a34c326a..043cf8e12e3e2a 100644 --- a/net/log/net_log_event_type_list.h +++ b/net/log/net_log_event_type_list.h @@ -1687,9 +1687,6 @@ EVENT_TYPE(QUIC_STREAM_FACTORY_JOB) // } EVENT_TYPE(QUIC_STREAM_FACTORY_JOB_BOUND_TO_HTTP_STREAM_JOB) -// Measures the time taken to load server information. -EVENT_TYPE(QUIC_STREAM_FACTORY_JOB_LOAD_SERVER_INFO) - // Measures the time taken to establish a QUIC connection. // The event parameters are: // { diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc index 30a09c3851d9d8..61f79e0a5a2950 100644 --- a/net/quic/chromium/quic_stream_factory.cc +++ b/net/quic/chromium/quic_stream_factory.cc @@ -898,19 +898,13 @@ int QuicStreamFactory::Create(const QuicServerId& server_id, // Associate with active job to |server_id| if such exists. auto it = active_jobs_.find(server_id); if (it != active_jobs_.end()) { - const JobSet& job_set = it->second; - // TODO(zhongyi): figure out how to link the NetLogs if there are more than - // one job serving the same server id, i.e., auxiliary job is also - // created. - if (job_set.size() == 1) { - const NetLogWithSource& job_net_log = job_set.begin()->first->net_log(); - job_net_log.AddEvent( - NetLogEventType::QUIC_STREAM_FACTORY_JOB_BOUND_TO_HTTP_STREAM_JOB, - net_log.source().ToEventParametersCallback()); - net_log.AddEvent( - NetLogEventType::HTTP_STREAM_JOB_BOUND_TO_QUIC_STREAM_FACTORY_JOB, - job_net_log.source().ToEventParametersCallback()); - } + const NetLogWithSource& job_net_log = it->second->net_log(); + job_net_log.AddEvent( + NetLogEventType::QUIC_STREAM_FACTORY_JOB_BOUND_TO_HTTP_STREAM_JOB, + net_log.source().ToEventParametersCallback()); + net_log.AddEvent( + NetLogEventType::HTTP_STREAM_JOB_BOUND_TO_QUIC_STREAM_FACTORY_JOB, + job_net_log.source().ToEventParametersCallback()); job_requests_map_[server_id].insert(request); return ERR_IO_PENDING; } @@ -942,8 +936,7 @@ int QuicStreamFactory::Create(const QuicServerId& server_id, base::Unretained(this), job.get())); if (rv == ERR_IO_PENDING) { job_requests_map_[server_id].insert(request); - Job* job_ptr = job.get(); - active_jobs_[server_id][job_ptr] = std::move(job); + active_jobs_[server_id] = std::move(job); return rv; } if (rv == OK) { @@ -1007,16 +1000,6 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) { // Copy |server_id|, because |job| might be destroyed before this method // returns. const QuicServerId server_id(job->key().server_id()); - if (rv != OK) { - JobSet* jobs = &(active_jobs_[server_id]); - if (jobs->size() > 1) { - // If there is another pending job, then we can delete this job and let - // the other job handle the request. - job->Cancel(); - jobs->erase(job); - return; - } - } ServerIDRequestsMap::iterator requests_iter = job_requests_map_.find(server_id); @@ -1045,12 +1028,6 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) { request->OnRequestComplete(rv); } - for (auto& other_job : active_jobs_[server_id]) { - if (other_job.first != job) - other_job.first->Cancel(); - } - - active_jobs_[server_id].clear(); active_jobs_.erase(server_id); job_requests_map_.erase(requests_iter); } diff --git a/net/quic/chromium/quic_stream_factory.h b/net/quic/chromium/quic_stream_factory.h index 916c2f9792afa4..9feedb36b5eb6c 100644 --- a/net/quic/chromium/quic_stream_factory.h +++ b/net/quic/chromium/quic_stream_factory.h @@ -392,8 +392,7 @@ class NET_EXPORT_PRIVATE QuicStreamFactory typedef std::set SessionSet; typedef std::map IPAliasMap; typedef std::map SessionPeerIPMap; - typedef std::map> JobSet; - typedef std::map JobMap; + typedef std::map> JobMap; typedef std::set RequestSet; typedef std::map ServerIDRequestsMap; typedef std::map> diff --git a/net/quic/chromium/quic_stream_factory_peer.cc b/net/quic/chromium/quic_stream_factory_peer.cc index f801fada43aea1..40fcd9bbf52313 100644 --- a/net/quic/chromium/quic_stream_factory_peer.cc +++ b/net/quic/chromium/quic_stream_factory_peer.cc @@ -104,15 +104,6 @@ void QuicStreamFactoryPeer::SetYieldAfterDuration( factory->yield_after_duration_ = yield_after_duration; } -size_t QuicStreamFactoryPeer::GetNumberOfActiveJobs( - QuicStreamFactory* factory, - const QuicServerId& server_id) { - auto it = factory->active_jobs_.find(server_id); - if (it == factory->active_jobs_.end()) - return 0; - return it->second.size(); -} - bool QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty( QuicStreamFactory* factory, const QuicServerId& quic_server_id) {