[Mobile] Don't manually invalidate cached connections
Remove our former call to `dropUnusedReposFromCache`, because there is a potential case where these dropped repos are still connected to downstream clients. For now, we will just keep weak references around to any connection that has been put in the cache (when it has been realized by connecting to the downstream). There really shouldn't be any performance impact, since the downstreams _will_ disconnect once the subscription is gone from the list. This just protects us against losing track of them in the meantime. In the future, we can look into something more robust such as upgrading the keys to have more information, or re-structuring the way that we allow subscribers to show up and request repos. Here's the pathological case that seems to be triggering the issue: 1. An existing subscription is feeding the views. Let's call it 1 for subId=1. 2. User toggles the SIM off. This action removes subId1 from the list of valid subscriptions. 3. Importantly, the active subscription is still 1, so it's not removed from the cache yet. 4. User toggles the SIM back on, which causes a somewhat chaotic set of changes. The first change removes the active subId which allows us to remove the cached repo. At the same time, a new list comes back to us with the same subId1. 5. In this state, the theory is that the views are still holding onto the now-invalid reference of the old repository, when they should have been transferred over to the new one. Test: manual Test: all tests in com.android.systemiu.statusbar.pipeline Bug: 332737118 Bug: 333912012 Flag: NONE Change-Id: Ib490062208506d646add2fe7e5e5d4df5fb3e66e
Loading
Please register or sign in to comment