Bug 1354409 - Add telemetry for how often we race network and cache r=michal draft
authorValentin Gosu <valentin.gosu@gmail.com>
Thu, 20 Apr 2017 16:42:10 +0800
changeset 566214 5bfeed6c1fb8f1379844947bd391ac352700b411
parent 565531 20dff607fb88ee69135a280bbb7f32df75a86237
child 566215 47a604e25ce879b929dbb2eba7bca36e371845ae
push id55144
push uservalentin.gosu@gmail.com
push dateFri, 21 Apr 2017 06:47:37 +0000
reviewersmichal
bugs1354409
milestone55.0a1
Bug 1354409 - Add telemetry for how often we race network and cache r=michal MozReview-Commit-ID: 1D1KyGbLxdW
netwerk/protocol/http/nsHttpChannel.cpp
toolkit/components/telemetry/Histograms.json
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -6977,16 +6977,33 @@ nsHttpChannel::OnStopRequest(nsIRequest 
             nsresult rv = gHttpHandler->CancelTransaction(mTransaction, status);
             if (NS_FAILED(rv)) {
                 LOG(("  CancelTransaction failed (%08x)",
                      static_cast<uint32_t>(rv)));
             }
         }
     }
 
+    enum RaceCacheAndNetStatus
+    {
+        kDidNotRaceUsedNetwork = 0,
+        kDidNotRaceUsedCache = 1,
+        kRaceUsedNetwork = 2,
+        kRaceUsedCache = 3
+    };
+
+    RaceCacheAndNetStatus rcwnStatus = kDidNotRaceUsedNetwork;
+    if (request == mTransactionPump) {
+        rcwnStatus = mRaceCacheWithNetwork ?  kRaceUsedNetwork : kDidNotRaceUsedNetwork;
+    } else if (request == mCachePump) {
+        rcwnStatus = mRaceCacheWithNetwork ? kRaceUsedCache : kDidNotRaceUsedCache;
+    }
+    Telemetry::Accumulate(Telemetry::NETWORK_RACE_CACHE_WITH_NETWORK_USAGE,
+                          rcwnStatus);
+
     nsCOMPtr<nsICompressConvStats> conv = do_QueryInterface(mCompressListener);
     if (conv) {
         conv->GetDecodedDataLength(&mDecodedBodySize);
     }
 
     if (mTransaction) {
         // determine if we should call DoAuthRetry
         bool authRetry = mAuthRetryPending && NS_SUCCEEDED(status);
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -2142,16 +2142,24 @@
     "expires_in_version": "58",
       "alert_emails": ["necko@mozilla.com"],
       "bug_numbers": [1347948],
       "kind": "exponential",
       "high": 60000,
       "n_buckets": 100,
       "description": "Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest."
   },
+  "NETWORK_RACE_CACHE_WITH_NETWORK_USAGE": {
+    "expires_in_version": "58",
+    "alert_emails": ["necko@mozilla.com"],
+    "bug_numbers": [1354409],
+    "kind": "enumerated",
+    "n_values": 4,
+    "description": "Whether we raced network with the cache. (0=network & no racing, 1=cache & no racing, 2=network & raced, 3=cache & raced)"
+  },
   "HTTP_AUTH_DIALOG_STATS": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 4,
     "description": "Stats about what kind of resource requested http authentication. (0=top-level doc, 1=same origin subresources, 2=cross-origin subresources, 3=xhr)"
   },
   "HTTP_AUTH_TYPE_STATS": {
     "alert_emails": ["rbarnes@mozilla.com"],