Work on issue #16629489: Google (Play?) Services eating through battery
There is a bug in how we deal with name overflows combined with resetting the battery stats data. If we do a reset while a wakelock is being actively held that has been put into the overflow bucket, then we can end up reducing the number of known wake locks in the list so when after that it is released we try to release it under its real name rather than the overflow name. This means we need to keep track of which wake locks have been placed in the overflow bucket while they are actively being used, so we can be sure to properly handle it as part of that bucket until it is eventually released. This makes things... somewhat more complicated. So now we have a class to take care of all these details, and also use it for other places where we have the same overflow semantics sync and job stats. Also fix potential deadlock -- BatteryStatsHelper needs to call on to ConnectivityManager to find out of there is telepohny, however we use that class when doing a dump while the battery stats lock is held. To fix this, we check the connectivity state up in the battery stats service before acquiring the lock and propagate that information through to the dump code. Change-Id: Ib452206af5c36f4b0f03cc94d2845d36613d1ba5
Loading
Please register or sign in to comment