Page MenuHomePhabricator

Chrome bug makes us miss collecting Navigation Timing metrics for redirects.
Closed, ResolvedPublic

Description

There's a bug in Chrome (at least on Mac OS X) where redirects sets a wrong requestStart value for the Navigation Timing API. The value is lower than fetchStart (but should be higher) and we filter out those accesses with https://github.com/wikimedia/mediawiki-extensions-NavigationTiming/blob/master/modules/ext.navigationTiming.js#L59.

That means that we miss out of metrics when that happen when a user:

Upstream: https://bugs.chromium.org/p/chromium/issues/detail?id=813889

Event Timeline

Krinkle triaged this task as Medium priority.Feb 26 2018, 9:15 PM
Krinkle added a project: NavigationTiming.
Krinkle changed the task status from Open to Stalled.Mar 5 2018, 9:26 PM
Krinkle moved this task from Backlog to Reported Upstream on the Upstream board.

Seems to be fixed upstream, and I've confirmed the bug does not occur on a fresh https://en.wikipedia.org page view (which redirects to Main_Page), using Chrome canary 68.0.3409.0 (Mac).

The earliest chromium/src tag containing the fix is 67.0.3383.0, so looks like it'll make it in Chrome 67 rather than 68, which is already in Beta and should reach Stable on May 29.

Tested it manually in 67 (67.0.3396.79) and it seems to work correct now. Lets when we can see thing in the RUM metrics.

Need to check on what's driving error rate now.

Krinkle claimed this task.

Dump from navtiming.py logs on webperf1001 (last few hours, lightly normalised and sorted by frequency)

RankHitsNormalised message
#11987(is_compliant:443) Discarding event because responseEnd is out of order [{'os_minor': '4', 'os_major': '11', 'device_family': 'iPhone', 'os_family': 'iOS', 'browser_minor': '0', 'browser_major': '11', 'browser_family': 'Mobile Safari'}]
#21566(is_compliant:443) Discarding event because requestStart is out of order [{'os_minor': '3', 'os_major': '9', 'device_family': 'iPad', 'os_family': 'iOS', 'browser_minor': '0', 'browser_major': '9', 'browser_family': 'Mobile Safari'}]
#3821(is_compliant:443) Discarding event because responseEnd is out of order [{'os_minor': '3', 'os_major': '11', 'device_family': 'iPhone', 'os_family': 'iOS', 'browser_minor': '0', 'browser_major': '11', 'browser_family': 'Mobile Safari'}]
#4786(is_compliant:443) Discarding event because requestStart is out of order [{'os_minor': '3', 'os_major': '9', 'device_family': 'iPhone', 'os_family': 'iOS', 'browser_minor': '0', 'browser_major': '9', 'browser_family': 'Mobile Safari'}]
#5468(is_compliant:443) Discarding event because responseEnd is out of order [{'os_minor': '2', 'os_major': '11', 'device_family': 'iPhone', 'os_family': 'iOS', 'browser_minor': '0', 'browser_major': '11', 'browser_family': 'Mobile Safari'}]

Marking this as resolved given the Chrome errors are no longer common. I've created T197954 for the well-known issue with Safari given there was no task for it yet.