Variations "fetch shortly" logic is shadowed by http fallback.
Here's the relevant code:
// If the current fetch attempt was over an HTTPS connection, retry the
// fetch immediately over an HTTP connection.
// Currently we only do this if if the 'VariationsHttpRetry' feature is
// enabled.
if (was_https && !insecure_variations_server_url_.is_empty()) {
// When re-trying via HTTP, return immediately. OnURLFetchComplete() will
// be called with the result of that retry.
if (DoFetchFromURL(insecure_variations_server_url_, true))
return;
}
// It's common for the very first fetch attempt to fail (e.g. the network
// may not yet be available). In such a case, try again soon, rather than
// waiting the full time interval.
// |request_scheduler_| will be null during unit tests.
if (is_first_request && request_scheduler_)
request_scheduler_->ScheduleFetchShortly();
Given the comment on the second if, the consequence is that we'll often retry via HTTP in cases where it's actually common for the first HTTPS request to fail. This is wrong, we should only fall back to HTTP after the "fetch shortly" request fails.
Comment 1 by bugdroid1@chromium.org
, Nov 21