# 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.

