Page MenuHomePhabricator

Move most Navigation Timing logic to backend
Closed, ResolvedPublic

Description

Especially the isCompliant check I'd prefer to have in the backend so that there is less burden on the client (for an unlikely scenario), and also so that our raw throughput is not affected by it.

This also allows us to improve and change the compliancy check without having to roll it out for everyone at once (similar to how we are doing with the navtiming2 experiment right now).


From T190977: When we move the isCompliant() filter to the server, let's also improve its instrumentation to be more details. E.g. In addition to incrementing the nonCompliant counter, we could also log to navtiming's stderr an log message more details about the issue (eg. browser, version, property).

Event Timeline

Krinkle triaged this task as Medium priority.Jan 16 2018, 5:31 PM

Change 423959 had a related patch set uploaded (by Imarlier; owner: Imarlier):
[operations/puppet@production] NavigationTiming: Move logic to the server side

https://gerrit.wikimedia.org/r/423959

Change 424024 had a related patch set uploaded (by Imarlier; owner: Imarlier):
[mediawiki/extensions/NavigationTiming@master] ext.NavigationTiming: Remove isCompliant

https://gerrit.wikimedia.org/r/424024

Change 423959 merged by Elukey:
[operations/puppet@production] NavigationTiming: Move logic to the server side

https://gerrit.wikimedia.org/r/423959

Change 424024 merged by jenkins-bot:
[mediawiki/extensions/NavigationTiming@master] ext.NavigationTiming: Remove isCompliant

https://gerrit.wikimedia.org/r/424024

Server side is deployed, extension change is merged but figuring that it'll just be on the train next week.

isCompliant check has been moved to the backend, and is working as expected. Log messages look like this:

Apr 13 11:58:25 hafnium python[27879]: 2018-04-13 11:58:25,706 Discarding event because requestStart is out of order [{u'wmf_app_version': u'-', u'os_minor': u'4', u'os_major': u'4', u'is_bot': False, u'device_family': u'Samsung GT-N8010', u'os_family': u'Android', u'browser_minor': u'0', u'is_mediawiki': False, u'browser_major': u'65', u'browser_family': u'Chrome'}]