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

Unified Diff: net/socket/client_socket_pool_base.cc

Issue 2363003: Rework the logging for sockets/connectjobs.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/socket/client_socket_pool_base.h ('k') | net/socket/client_socket_pool_base_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/client_socket_pool_base.cc
===================================================================
--- net/socket/client_socket_pool_base.cc (revision 48758)
+++ net/socket/client_socket_pool_base.cc (working copy)
@@ -42,42 +42,46 @@
idle_(true) {
DCHECK(!group_name.empty());
DCHECK(delegate);
+ net_log.BeginEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB, NULL);
}
ConnectJob::~ConnectJob() {
- if (delegate_ && !idle_) {
- // If the delegate was not NULLed, then NotifyDelegateOfCompletion has
- // not been called yet. If we've started then we are cancelling.
- net_log_.AddEvent(NetLog::TYPE_CANCELLED, NULL);
- net_log_.EndEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB, NULL);
- }
+ net_log().EndEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB, NULL);
}
int ConnectJob::Connect() {
if (timeout_duration_ != base::TimeDelta())
timer_.Start(timeout_duration_, this, &ConnectJob::OnTimeout);
- net_log_.BeginEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB,
- new NetLogStringParameter("group_name", group_name_));
idle_ = false;
+ LogConnectStart();
+
int rv = ConnectInternal();
if (rv != ERR_IO_PENDING) {
+ LogConnectCompletion(rv);
delegate_ = NULL;
- net_log_.EndEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB, NULL);
}
return rv;
}
+void ConnectJob::set_socket(ClientSocket* socket) {
+ if (socket) {
+ net_log().AddEvent(NetLog::TYPE_CONNECT_JOB_SET_SOCKET,
+ new NetLogSourceParameter("source_dependency",
+ socket->NetLog().source()));
+ }
+ socket_.reset(socket);
+}
+
void ConnectJob::NotifyDelegateOfCompletion(int rv) {
// The delegate will delete |this|.
Delegate *delegate = delegate_;
delegate_ = NULL;
- net_log_.EndEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB, NULL);
-
+ LogConnectCompletion(rv);
delegate->OnConnectJobComplete(rv, this);
}
@@ -86,6 +90,18 @@
timer_.Start(remaining_time, this, &ConnectJob::OnTimeout);
}
+void ConnectJob::LogConnectStart() {
+ net_log().BeginEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_CONNECT,
+ new NetLogStringParameter("group_name", group_name_));
+}
+
+void ConnectJob::LogConnectCompletion(int net_error) {
+ scoped_refptr<NetLog::EventParameters> params;
+ if (net_error != OK)
+ params = new NetLogIntegerParameter("net_error", net_error);
+ net_log().EndEvent(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_CONNECT, params);
+}
+
void ConnectJob::OnTimeout() {
// Make sure the socket is NULL before calling into |delegate|.
set_socket(NULL);
@@ -236,21 +252,12 @@
}
// We couldn't find a socket to reuse, so allocate and connect a new one.
- BoundNetLog job_net_log = BoundNetLog::Make(
- request->net_log().net_log(), NetLog::SOURCE_CONNECT_JOB);
- request->net_log().BeginEvent(
- NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID,
- new NetLogIntegerParameter("source_id", job_net_log.source().id));
-
scoped_ptr<ConnectJob> connect_job(
- connect_job_factory_->NewConnectJob(group_name, *request, this,
- job_net_log));
+ connect_job_factory_->NewConnectJob(group_name, *request, this));
int rv = connect_job->Connect();
if (rv == OK) {
- request->net_log().EndEvent(
- NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID,
- new NetLogIntegerParameter("source_id", job_net_log.source().id));
+ LogBoundConnectJobToRequest(connect_job->net_log().source(), request);
HandOutSocket(connect_job->ReleaseSocket(), false /* not reused */,
handle, base::TimeDelta(), &group, request->net_log());
} else if (rv == ERR_IO_PENDING) {
@@ -260,8 +267,7 @@
if (group.IsEmpty() && !group.backup_job && backup_jobs_enabled_) {
group.backup_job = connect_job_factory_->NewConnectJob(group_name,
*request,
- this,
- job_net_log);
+ this);
StartBackupSocketTimer(group_name);
}
@@ -270,9 +276,7 @@
ConnectJob* job = connect_job.release();
group.jobs.insert(job);
} else {
- request->net_log().EndEvent(
- NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID,
- new NetLogIntegerParameter("source_id", job_net_log.source().id));
+ LogBoundConnectJobToRequest(connect_job->net_log().source(), request);
if (group.IsEmpty())
group_map_.erase(group_name);
}
@@ -280,6 +284,14 @@
return rv;
}
+// static
+void ClientSocketPoolBaseHelper::LogBoundConnectJobToRequest(
+ const NetLog::Source& connect_job_source, const Request* request) {
+ request->net_log().AddEvent(
+ NetLog::TYPE_SOCKET_POOL_BOUND_TO_CONNECT_JOB,
+ new NetLogSourceParameter("source_dependency", connect_job_source));
+}
+
void ClientSocketPoolBaseHelper::StartBackupSocketTimer(
const std::string& group_name) {
CHECK(ContainsKey(group_map_, group_name));
@@ -312,8 +324,6 @@
if (ReachedMaxSocketsLimit() ||
!group.HasAvailableSocketSlot(max_sockets_per_group_) ||
(*group.jobs.begin())->GetLoadState() == LOAD_STATE_RESOLVING_HOST) {
- group.backup_job->net_log().AddEvent(
- NetLog::TYPE_SOCKET_BACKUP_TIMER_EXTENDED, NULL);
StartBackupSocketTimer(group_name);
return;
}
@@ -583,13 +593,11 @@
if (!group.pending_requests.empty()) {
scoped_ptr<const Request> r(RemoveRequestFromQueue(
group.pending_requests.begin(), &group.pending_requests));
- r->net_log().EndEvent(
- NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID,
- new NetLogIntegerParameter("source_id", job_log.source().id));
- r->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL, NULL);
+ LogBoundConnectJobToRequest(job_log.source(), r.get());
HandOutSocket(
socket.release(), false /* unused socket */, r->handle(),
base::TimeDelta(), &group, r->net_log());
+ r->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL, NULL);
r->callback()->Run(result);
} else {
AddIdleSocket(socket.release(), false /* unused socket */, &group);
@@ -600,10 +608,9 @@
if (!group.pending_requests.empty()) {
scoped_ptr<const Request> r(RemoveRequestFromQueue(
group.pending_requests.begin(), &group.pending_requests));
- r->net_log().EndEvent(
- NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID,
- new NetLogIntegerParameter("source_id", job_log.source().id));
- r->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL, NULL);
+ LogBoundConnectJobToRequest(job_log.source(), r.get());
+ r->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL,
+ new NetLogIntegerParameter("net_error", result));
r->callback()->Run(result);
}
MaybeOnAvailableSocketSlot(group_name);
@@ -667,7 +674,11 @@
if (rv != ERR_IO_PENDING) {
scoped_ptr<const Request> r(RemoveRequestFromQueue(
group->pending_requests.begin(), &group->pending_requests));
- r->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL, NULL);
+
+ scoped_refptr<NetLog::EventParameters> params;
+ if (rv != OK)
+ params = new NetLogIntegerParameter("net_error", rv);
+ r->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL, params);
r->callback()->Run(rv);
if (rv != OK) {
// |group| may be invalid after the callback, we need to search
@@ -696,9 +707,9 @@
"idle_ms", static_cast<int>(idle_time.InMilliseconds())));
}
- net_log.AddEvent(NetLog::TYPE_SOCKET_POOL_SOCKET_ID,
- new NetLogIntegerParameter(
- "source_id", socket->NetLog().source().id));
+ net_log.AddEvent(NetLog::TYPE_SOCKET_POOL_BOUND_TO_SOCKET,
+ new NetLogSourceParameter(
+ "source_dependency", socket->NetLog().source()));
handed_out_socket_count_++;
group->active_socket_count++;
« no previous file with comments | « net/socket/client_socket_pool_base.h ('k') | net/socket/client_socket_pool_base_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698