Clearing metrics when disabling/enabling Glean

When disabling upload (Glean.setUploadEnabled(false)), metrics are also cleared to prevent their storage on the local device, and lessen the likelihood of accidentally sending them. There are a couple of exceptions to this:

  • first_run_date and first_run_hour are retained so they aren't reset if metrics are later re-enabled.

  • client_id is set to the special value "c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0". This should make it possible to detect the error case when metrics are sent from a client that has been disabled.

When re-enabling metrics:

  • first_run_date and first_run_hour are left as-is. (They should remain a correct time of first run of the application, unaffected by disabling/enabling the Glean SDK).

  • The client_id is set to a newly-generated random UUID. It has no connection to the client_id used prior to disabling the Glean SDK.

  • Application lifetime metrics owned by Glean are regenerated from scratch so that they will appear in subsequent pings. This is the same process that happens during every startup of the application when the Glean SDK is enabled. The application is also responsible for setting any application lifetime metrics that it manages at this time.

  • Ping lifetime metrics do not need special handling. They will begin recording again after metric uploading is re-enabled.