From 1ffdda87e3cb1f6183723831cf65d0469495d7cc Mon Sep 17 00:00:00 2001 From: "szym@chromium.org" Date: Wed, 12 Dec 2012 23:04:22 +0000 Subject: Add AsyncDNS.DnsClientDisabledReason to record the last error in the streak which disabled DnsClient. BUG=114833 Review URL: https://codereview.chromium.org/11552023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172687 0039d316-1c4b-4281-b951-d872f2087c98 --- net/base/host_resolver_impl.cc | 11 +++++++---- net/base/host_resolver_impl.h | 7 +++---- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'net/base') diff --git a/net/base/host_resolver_impl.cc b/net/base/host_resolver_impl.cc index b56524c..64c9d2a 100644 --- a/net/base/host_resolver_impl.cc +++ b/net/base/host_resolver_impl.cc @@ -1411,7 +1411,7 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job { UMA_HISTOGRAM_CUSTOM_ENUMERATION("AsyncDNS.ResolveError", std::abs(dns_task_error_), GetAllErrorCodesForUma()); - resolver_->OnDnsTaskResolve(false); + resolver_->OnDnsTaskResolve(dns_task_error_); } else { DNS_HISTOGRAM("AsyncDNS.FallbackFail", duration); UmaAsyncDnsResolveStatus(RESOLVE_STATUS_FAIL); @@ -1474,7 +1474,7 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job { UmaAsyncDnsResolveStatus(RESOLVE_STATUS_DNS_SUCCESS); RecordTTL(ttl); - resolver_->OnDnsTaskResolve(true); + resolver_->OnDnsTaskResolve(OK); base::TimeDelta bounded_ttl = std::max(ttl, base::TimeDelta::FromSeconds(kMinimumTTLSeconds)); @@ -2137,9 +2137,9 @@ bool HostResolverImpl::HaveDnsConfig() const { return (dns_client_.get() != NULL) && (dns_client_->GetConfig() != NULL); } -void HostResolverImpl::OnDnsTaskResolve(bool success) { +void HostResolverImpl::OnDnsTaskResolve(int net_error) { DCHECK(dns_client_); - if (success) { + if (net_error == OK) { num_dns_failures_ = 0; return; } @@ -2151,6 +2151,9 @@ void HostResolverImpl::OnDnsTaskResolve(bool success) { it->second->AbortDnsTask(); dns_client_->SetConfig(DnsConfig()); UMA_HISTOGRAM_BOOLEAN("AsyncDNS.DnsClientEnabled", false); + UMA_HISTOGRAM_CUSTOM_ENUMERATION("AsyncDNS.DnsClientDisabledReason", + std::abs(net_error), + GetAllErrorCodesForUma()); } void HostResolverImpl::SetDnsClient(scoped_ptr dns_client) { diff --git a/net/base/host_resolver_impl.h b/net/base/host_resolver_impl.h index 8d28ab3..61096641 100644 --- a/net/base/host_resolver_impl.h +++ b/net/base/host_resolver_impl.h @@ -224,10 +224,9 @@ class NET_EXPORT HostResolverImpl // True if have a DnsClient with a valid DnsConfig. bool HaveDnsConfig() const; - // Called when a host name is successfully resolved and DnsTask was run on it. - // |success| is false iff the DnsTask failed to resolve it, but getaddrinfo - // succeeded. - void OnDnsTaskResolve(bool success); + // Called when a host name is successfully resolved and DnsTask was run on it + // and resulted in |net_error|. + void OnDnsTaskResolve(int net_error); // Allows the tests to catch slots leaking out of the dispatcher. size_t num_running_jobs_for_tests() const { -- cgit v1.1