Page MenuHomePhabricator

Receive network latency reports from the browsers
Closed, ResolvedPublic

Description

  1. Create a custom library to generate a network report in the browser. See Probenet
  2. Add a schema of the report sent from the browser after calculating various network parameters. This needs to be added in schemas/event/primary repo.
  3. Add the Probenet library and fetch code in MediaWiki. This needs to be added in mediawiki/extensions/WikimediaEvents repo.

Event Timeline

Change 907508 had a related patch set uploaded (by Jameel Kaisar; author: Jameel Kaisar):

[schemas/event/primary@master] Created experimental/geoip/network_latency 1.0.0 schema

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

Change 907508 merged by Ottomata:

[schemas/event/primary@master] Created development/network/probe 1.0.0 schema

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

Change 913379 had a related patch set uploaded (by Jameel Kaisar; author: Jameel Kaisar):

[schemas/event/primary@master] Update development/network/probe 1.0.0 schem

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

Change 913394 had a related patch set uploaded (by Jameel Kaisar; author: Jameel Kaisar):

[mediawiki/extensions/WikimediaEvents@master] Add Probenet library and fetch code

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

Change 913379 merged by jenkins-bot:

[schemas/event/primary@master] Update development/network/probe 1.0.0 schem

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

Fixed eslint warnings in WikimediaEvents repo. This patch is not directly related to this task but the warnings were generated after the upgradation of eslint config in WikimediaEvents repo which was necessary for this task.
https://gerrit.wikimedia.org/r/c/mediawiki/extensions/WikimediaEvents/+/920376

Change 913394 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] Add Probenet library and fetch code

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

Change 929387 had a related patch set uploaded (by Jameel Kaisar; author: Jameel Kaisar):

[mediawiki/extensions/WikimediaEvents@master] Fix: Validation errors for status_code in Probenet reports

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

Change 929387 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] Fix: Validation errors for status_code in Probenet reports

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

Change 930286 had a related patch set uploaded (by Jameel Kaisar; author: Jameel Kaisar):

[mediawiki/extensions/WikimediaEvents@master] Fix: Validation errors for status_code in Probenet reports

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

Change 930286 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] probenet: Fix validation errors for status_code in Probenet reports

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

FYI, still lots of validation errors for network probe. E.g.

https://logstash.wikimedia.org/app/discover#/doc/logstash-*/logstash-default-1-7.0.0-1-2023.06.22?id=dvgM5IgBaSyKCtwGvU49

 '.reports[0].pulses[0].actual_bytes' should be number,
 '.reports[0].pulses[0].status_code' should be number,
 '.reports[0].pulses[0].transfer_bytes' should be number,
...

The patch that was submitted for fixing the 'status_code' was later found out would not fix the error. So, a new patch was submitted. But this will fix validation errors for 'status_code' only and will be merged in wmf.15. I will submit a new patch now which do fix the validation errors for all fields .reports[i].pulses[i].*

Change 932354 had a related patch set uploaded (by Jameel Kaisar; author: Jameel Kaisar):

[mediawiki/extensions/WikimediaEvents@master] probenet: Fix validation errors in Probenet reports

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

The patch that was submitted for fixing the 'status_code' […]
[…] I will submit a new patch now which do fix the validation errors for all fields .reports[i].pulses[i].*

https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus

Chrome: Yes
Firefox: Not implemented
Safari: Not implemented

https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/decodedBodySize

Mobile Safari: iOS 16.4 and later

T334417#8956738 => https://logstash.wikimedia.org/app/discover#/doc/logstash-*/logstash-default-1-7.0.0-1-2023.06.22?id=dvgM5IgBaSyKCtwGvU49

"status_code":null,"transfer_bytes":null,"actual_bytes":null

"Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_1 …) Version/16.1 Mobile/… Safari/…"

Mobile Safari 16.1.

These three ResourceTiming/probe_result properties were being standardised in a later iteration of this browser feature, and thus are effectively optional / can be undefined in some browsers. And myObject.somethingElse === undefined, and undefined - undefined, or Math.round(undefined), or Number(undefined), all produce NaN => JSON.stringify(NaN) => null.

Thanks for the detailed explanation. It was very confusing to find some properties being set as null.

Change 932354 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] probenet: Fix validation errors in Probenet reports

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

Change 939239 had a related patch set uploaded (by Phuedx; author: Phuedx):

[mediawiki/extensions/WikimediaEvents@master] probenet: Reduce Probenet#extractProbeData()

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

Change 939239 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] probenet: Reduce Probenet#extractProbeData()

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

The aforementioned validation errors essentially ceased once the above patches were deployed:

Screenshot 2023-07-31 at 16.26.12.png (2×3 px, 1 MB)