android / android/performance-samples

JankStatsAggregator.issueJankReport concurrency issues

Ouverte
#309 1 commentaire 1 réaction 1 personne assignée Réclamée par @AjeshRPai Voir sur GitHub
Langage dominant
Kotlin
Étoiles
1.4k
Forks
250
Merge moyen
9 min
PR mergées (30 j)
4

Description

The example JankStatsAggregator class can produce `ConcurrentModificationException` for listeners that perform some additional operations on it. Presumably because of how FrameData objects are internally mutated.

It appears that JankStatsAggregator.issueJankReport attempts to account for that with copies, but it may not be fully thread safe.

For example:

```
private val reportListener = JankStatsAggregator.OnJankReportListener { _, _, jankFrameData ->
jankFrameData.filter(...).map { frame ->
// Do something with FrameData and/or StateInfo
}
}
```

This usage results in rare concurrency exceptions. I'm not sure if it is a misusage on my end, but as a user I would expect the listener to be thread safe.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.