gecko/services
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
..
common Bug 993173 - Use encoding option in readJSON. r=Yoric 2014-04-08 04:47:00 +02:00
crypto Bug 973142 - Get rid of the MOZILLA_INTERNAL_API makefile variable; r=glandium 2014-02-18 01:56:51 -05:00
datareporting Bug 992363 - Fix a few uncaught async errors in services. r=rnewman 2014-04-07 10:33:56 -04:00
docs Bug 961146 - Refactor Health Report documentation, import external docs; r=rnewman 2014-01-22 17:47:15 -08:00
fxaccounts Bug 989549 - Call signOut() in FxAccountsClient.jsm from signOut() in FxAccounts.jsm. r=markh 2014-04-09 16:14:19 -07:00
healthreport Bug 968419 - Store and submit a persistent health report identifier; r=rnewman, r=bsmedberg 2014-02-20 11:30:52 -08:00
metrics Bug 987146 - Represent SQL queries more efficiently. r=gps. 2014-03-24 11:31:29 -04:00
sync Bug 988301 - Avoid main-thread IO in Sync code. r=Yoric, r=rnewman 2014-04-07 10:49:32 -04:00
moz.build Bug 976002 - Build time flag to enable/disable FxA. r=fabrice, r=gps 2014-03-17 09:58:16 -07:00