Kotlin: Set required client_info fields first #1633
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There's a chance that the app is killed at any point.
If that happens while setting core metrics, on next start a ping might
be sent, which is then missing data.
Some of this data is required; and if missing the pipeline rejects the
ping during validation. By moving these metrics first we increase the
chance for them to be set.
This is a very desperate attempt on mitigating missing data.
I've spent all day reading the code over and over again, starting Fenix, trying to capture any ping without the app_build data.
I've only found one tiny (forced) edge case:
When adding a delay (30s) right before setting
app_build
, then killing Fenix when it's waiting there, then starting it again, will trigger a ping that's missing the app build as expected.Now in production we of course don't have that delay.
But there's theoretically a teeny tiny window in which this could still happen.
For the lack of better approaches I propose to land this, get it into a release and land it in Fenix to gather some nightly data.
By just rearranging the data collection we merely change what would be affected by early app kills/crashes.
If we see a drop of missing app_build data after this it would underline that theory.