Tethering offload stats updates are eventually consistent
This patch removes the call to runWithScissors() in OffloadController#getTetherStats() that was causing a deadlock when NetworkStatsService would be polled for stats in certain threading contexts. Instead of trying to query the tethering offload HAL synchronously all the time, this patch: - changes getTetherStats() to only call into the offload HAL when it detects that it is called on the same thread as the Tethering handler thread. - changes the map of interface to accumulated tethering forwarded stats to be concurrent. This makes stats reading from getTetherStats() eventually consistent. From the point of view of getTetherStats(), it preserves the guarantees that tethering stats are monotonically increasing, and also guarantees no tearing between rx bytes and tx bytes. Bug: 29337859 Bug: 32163131 Bug: 64771555 Test: runtest frameworks-net Merged-In: Ibcd351ad0225ef146b00a807833f76d2a886f6c1 Merged-In: I61786d61fe1422e429c0dd9eadaff6f02eb850e7 Merged-In: I999d1d1bf72e7ab02c5d17f37aad00bc711d3fc5 (cherry pick from commit eb5e465e) Change-Id: I28646b962cee8c8a6efd66059f84873c02ac5810
Loading
Please register or sign in to comment