Ignore missing rankings in GroupCoalescer

Companion change to one we made in NotifCollection.

Due to a race condition outside of our control, we have to disable this
check and just accept that rankings may sometimes be malformed.

Test: atest
Fixes: 149912196
Change-Id: Iff53944553d0da22df915b55709b9feef5c8d1a4
This commit is contained in:
Ned Burns
2020-02-20 18:51:46 -05:00
parent 4723328cee
commit 168a8165ac
2 changed files with 15 additions and 4 deletions

View File

@@ -260,11 +260,14 @@ public class GroupCoalescer implements Dumpable {
private void applyRanking(RankingMap rankingMap) {
for (CoalescedEvent event : mCoalescedEvents.values()) {
Ranking ranking = new Ranking();
if (!rankingMap.getRanking(event.getKey(), ranking)) {
throw new IllegalStateException(
"Ranking map doesn't contain key: " + event.getKey());
if (rankingMap.getRanking(event.getKey(), ranking)) {
event.setRanking(ranking);
} else {
// TODO: (b/148791039) We should crash if we are ever handed a ranking with
// incomplete entries. Right now, there's a race condition in NotificationListener
// that means this might occur when SystemUI is starting up.
mLogger.logMissingRanking(event.getKey());
}
event.setRanking(ranking);
}
}

View File

@@ -57,6 +57,14 @@ class GroupCoalescerLogger @Inject constructor(
"Modification of notif $str1 triggered TIMEOUT emit of batched group $str2"
})
}
fun logMissingRanking(forKey: String) {
buffer.log(TAG, LogLevel.WARNING, {
str1 = forKey
}, {
"RankingMap is missing an entry for coalesced notification $str1"
})
}
}
private const val TAG = "GroupCoalescer"