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

Side by Side Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_bypass_stats.cc

Issue 2777823002: Bypass DRP if a redirect cycle is detected (Closed)
Patch Set: ryansturm comments Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_bypa ss_stats.h" 5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_bypa ss_stats.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/metrics/sparse_histogram.h" 9 #include "base/metrics/sparse_histogram.h"
10 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf ig.h" 10 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_conf ig.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 } else { 93 } else {
94 UMA_HISTOGRAM_ENUMERATION("DataReductionProxy.BypassTypeFallback", 94 UMA_HISTOGRAM_ENUMERATION("DataReductionProxy.BypassTypeFallback",
95 bypass_type, BYPASS_EVENT_TYPE_MAX); 95 bypass_type, BYPASS_EVENT_TYPE_MAX);
96 } 96 }
97 } 97 }
98 } 98 }
99 99
100 // static 100 // static
101 void DataReductionProxyBypassStats::DetectAndRecordMissingViaHeaderResponseCode( 101 void DataReductionProxyBypassStats::DetectAndRecordMissingViaHeaderResponseCode(
102 bool is_primary, 102 bool is_primary,
103 const net::HttpResponseHeaders* headers) { 103 const net::HttpResponseHeaders& headers) {
104 if (HasDataReductionProxyViaHeader(headers, NULL)) { 104 if (HasDataReductionProxyViaHeader(headers, nullptr)) {
105 // The data reduction proxy via header is present, so don't record anything. 105 // The data reduction proxy via header is present, so don't record anything.
106 return; 106 return;
107 } 107 }
108 108
109 if (is_primary) { 109 if (is_primary) {
110 UMA_HISTOGRAM_SPARSE_SLOWLY( 110 UMA_HISTOGRAM_SPARSE_SLOWLY(
111 "DataReductionProxy.MissingViaHeader.ResponseCode.Primary", 111 "DataReductionProxy.MissingViaHeader.ResponseCode.Primary",
112 headers->response_code()); 112 headers.response_code());
113 } else { 113 } else {
114 UMA_HISTOGRAM_SPARSE_SLOWLY( 114 UMA_HISTOGRAM_SPARSE_SLOWLY(
115 "DataReductionProxy.MissingViaHeader.ResponseCode.Fallback", 115 "DataReductionProxy.MissingViaHeader.ResponseCode.Fallback",
116 headers->response_code()); 116 headers.response_code());
117 } 117 }
118 } 118 }
119 119
120 DataReductionProxyBypassStats::DataReductionProxyBypassStats( 120 DataReductionProxyBypassStats::DataReductionProxyBypassStats(
121 DataReductionProxyConfig* config, 121 DataReductionProxyConfig* config,
122 UnreachableCallback unreachable_callback) 122 UnreachableCallback unreachable_callback)
123 : data_reduction_proxy_config_(config), 123 : data_reduction_proxy_config_(config),
124 unreachable_callback_(unreachable_callback), 124 unreachable_callback_(unreachable_callback),
125 last_bypass_type_(BYPASS_EVENT_TYPE_MAX), 125 last_bypass_type_(BYPASS_EVENT_TYPE_MAX),
126 triggering_request_(true), 126 triggering_request_(true),
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 378
379 void DataReductionProxyBypassStats::RecordMissingViaHeaderBytes( 379 void DataReductionProxyBypassStats::RecordMissingViaHeaderBytes(
380 const net::URLRequest& request) { 380 const net::URLRequest& request) {
381 DCHECK(thread_checker_.CalledOnValidThread()); 381 DCHECK(thread_checker_.CalledOnValidThread());
382 // Responses that were served from cache should have been filtered out 382 // Responses that were served from cache should have been filtered out
383 // already. 383 // already.
384 DCHECK(!request.was_cached()); 384 DCHECK(!request.was_cached());
385 385
386 if (!data_reduction_proxy_config_->WasDataReductionProxyUsed(&request, 386 if (!data_reduction_proxy_config_->WasDataReductionProxyUsed(&request,
387 NULL) || 387 NULL) ||
388 HasDataReductionProxyViaHeader(request.response_headers(), NULL)) { 388 HasDataReductionProxyViaHeader(*request.response_headers(), NULL)) {
389 // Only track requests that used the data reduction proxy and had responses 389 // Only track requests that used the data reduction proxy and had responses
390 // that were missing the data reduction proxy via header. 390 // that were missing the data reduction proxy via header.
391 return; 391 return;
392 } 392 }
393 393
394 if (request.GetResponseCode() >= net::HTTP_BAD_REQUEST && 394 if (request.GetResponseCode() >= net::HTTP_BAD_REQUEST &&
395 request.GetResponseCode() < net::HTTP_INTERNAL_SERVER_ERROR) { 395 request.GetResponseCode() < net::HTTP_INTERNAL_SERVER_ERROR) {
396 // Track 4xx responses that are missing via headers separately. 396 // Track 4xx responses that are missing via headers separately.
397 UMA_HISTOGRAM_COUNTS("DataReductionProxy.MissingViaHeader.Bytes.4xx", 397 UMA_HISTOGRAM_COUNTS("DataReductionProxy.MissingViaHeader.Bytes.4xx",
398 request.received_response_content_length()); 398 request.received_response_content_length());
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 UMA_HISTOGRAM_COUNTS( 530 UMA_HISTOGRAM_COUNTS(
531 "DataReductionProxy.BypassedBytes.Status502HttpBadGateway", 531 "DataReductionProxy.BypassedBytes.Status502HttpBadGateway",
532 content_length); 532 content_length);
533 break; 533 break;
534 case BYPASS_EVENT_TYPE_STATUS_503_HTTP_SERVICE_UNAVAILABLE: 534 case BYPASS_EVENT_TYPE_STATUS_503_HTTP_SERVICE_UNAVAILABLE:
535 UMA_HISTOGRAM_COUNTS( 535 UMA_HISTOGRAM_COUNTS(
536 "DataReductionProxy.BypassedBytes." 536 "DataReductionProxy.BypassedBytes."
537 "Status503HttpServiceUnavailable", 537 "Status503HttpServiceUnavailable",
538 content_length); 538 content_length);
539 break; 539 break;
540 case BYPASS_EVENT_TYPE_URL_REDIRECT_CYCLE:
541 UMA_HISTOGRAM_COUNTS(
542 "DataReductionProxy.BypassedBytes.URLRedirectCycle",
543 content_length);
544 break;
540 default: 545 default:
541 break; 546 break;
542 } 547 }
543 break; 548 break;
544 } 549 }
545 } 550 }
546 551
547 } // namespace data_reduction_proxy 552 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698