gecko/services/healthreport
Gregory Szorc 4adb89bc72 Bug 968419 - Store and submit a persistent health report identifier; r=rnewman, r=bsmedberg
Up to this point, Firefox Health Report has generated and submitted a
random UUID with each upload. Generated UUIDs were stored on the client.
During upload, the client asked the server to delete all old UUIDs.
Well-behaving clients thus left at most one record/ID on the server.

Unfortunately, clients in the wild have not been behaving properly. We
are seeing multiple documents on the server that appear to come from the
same client. Clients are uploading new records but failing to delete the
old ones. These old, undeleted "orphan" records are severely impacting
the ability to derive useful knowledge from FHR data because it is
difficult, resource intensive, and error prone to filter the records on
the server. This is undermining the ability for FHR data to be put to
good use.

This patch introduces a persistent client identifier. When the client is
initialized, it generates a random UUID. That UUID is persisted to the
profile and sent as part of every upload.

For privacy reasons, if a client opts out of data submission, the client
ID will be reset as soon as all remote data has been deleted.

We still issue and send upload IDs. They exist mostly for forensics
purposes so we may log client behavior and more accurately determine
what exactly misbehaving, orphan-producing clients are doing.

It is worth noting that this persistent client identifier will not solve
all problems of branching and orphaned records. For example, profile
copying will result in multiple clients sharing a client identifier. A
"client ID version" field has been added to facilitate an upgrade path
towards client IDs with different generation semantics.

--HG--
extra : rebase_source : b761daab39fb07b6ab8883819d68bf53462314a0
2014-02-20 11:30:52 -08:00
..
docs Bug 968419 - Store and submit a persistent health report identifier; r=rnewman, r=bsmedberg 2014-02-20 11:30:52 -08:00
modules-testing Bug 946604 - Move makeFakeAppDir into testing/modules. r=rnewman 2013-12-05 16:54:15 +08:00
tests Bug 968419 - Store and submit a persistent health report identifier; r=rnewman, r=bsmedberg 2014-02-20 11:30:52 -08:00
healthreport-prefs.js bug 867737 - update FHR reporting URL, r=gps 2013-05-05 10:04:38 -04:00
HealthReport.jsm Bug 854018 - Record counts for FHR upload actions; r=rnewman 2013-05-01 09:41:55 -07:00
HealthReportComponents.manifest Bug 875562 - Part 9: Change Health Report to pull from crashes manager; r=bsmedberg, r=rnewman 2014-01-30 16:48:52 -08:00
healthreporter.jsm Bug 968419 - Store and submit a persistent health report identifier; r=rnewman, r=bsmedberg 2014-02-20 11:30:52 -08:00
Makefile.in Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
moz.build Bug 875562 - Part 9: Change Health Report to pull from crashes manager; r=bsmedberg, r=rnewman 2014-01-30 16:48:52 -08:00
profile.jsm Bug 451283 - Move log4moz.js to Toolkit as Log.jsm. r=gps,Mossop 2013-08-26 11:55:58 -07:00
providers.jsm Bug 986582 - Get rid of the toolkit.telemetry.enabledPreRelease pref and make the toolkit.telemetry.enabled pref do the right thing for beta users who are testing a final release build, r=rnewman 2014-04-03 14:55:42 -04:00