[SP12] Remove the usage of getVtDataUsage
Currently NetworkStatsService holding a lock when invoking getVtDataUsage, which causes a lot of deadlock problems since Phone will also have binder calls to system_server. Thus, this change uses a new set of API to break such situation, that allows VT to report stats asynchronously. Test: atest FrameworksNetTests FrameworksTelephonyTests Bug: 130855321 Fix: 143923500 Change-Id: Ifdb8599c3bade09208b4730710fc99da1afad71d
This commit is contained in:
@@ -1249,7 +1249,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
final NetworkStats uidSnapshot = getNetworkStatsUidDetail(INTERFACES_ALL);
|
final NetworkStats uidSnapshot = getNetworkStatsUidDetail(INTERFACES_ALL);
|
||||||
Trace.traceEnd(TRACE_TAG_NETWORK);
|
Trace.traceEnd(TRACE_TAG_NETWORK);
|
||||||
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotXt");
|
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotXt");
|
||||||
final NetworkStats xtSnapshot = getNetworkStatsXt();
|
final NetworkStats xtSnapshot = readNetworkStatsSummaryXt();
|
||||||
Trace.traceEnd(TRACE_TAG_NETWORK);
|
Trace.traceEnd(TRACE_TAG_NETWORK);
|
||||||
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotDev");
|
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotDev");
|
||||||
final NetworkStats devSnapshot = readNetworkStatsSummaryDev();
|
final NetworkStats devSnapshot = readNetworkStatsSummaryDev();
|
||||||
@@ -1707,18 +1707,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
mUseBpfTrafficStats);
|
mUseBpfTrafficStats);
|
||||||
uidSnapshot.combineAllValues(tetherSnapshot);
|
uidSnapshot.combineAllValues(tetherSnapshot);
|
||||||
|
|
||||||
final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
|
|
||||||
Context.TELEPHONY_SERVICE);
|
|
||||||
|
|
||||||
// fold video calling data usage stats into uid snapshot
|
|
||||||
final NetworkStats vtStats = telephonyManager.getVtDataUsage(STATS_PER_UID);
|
|
||||||
if (vtStats != null) {
|
|
||||||
vtStats.filter(UID_ALL, ifaces, TAG_ALL);
|
|
||||||
mStatsFactory.apply464xlatAdjustments(uidSnapshot, vtStats,
|
|
||||||
mUseBpfTrafficStats);
|
|
||||||
uidSnapshot.combineAllValues(vtStats);
|
|
||||||
}
|
|
||||||
|
|
||||||
// get a stale copy of uid stats snapshot provided by providers.
|
// get a stale copy of uid stats snapshot provided by providers.
|
||||||
final NetworkStats providerStats = getNetworkStatsFromProviders(STATS_PER_UID);
|
final NetworkStats providerStats = getNetworkStatsFromProviders(STATS_PER_UID);
|
||||||
providerStats.filter(UID_ALL, ifaces, TAG_ALL);
|
providerStats.filter(UID_ALL, ifaces, TAG_ALL);
|
||||||
@@ -1730,24 +1718,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
return uidSnapshot;
|
return uidSnapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return snapshot of current XT statistics with video calling data usage statistics.
|
|
||||||
*/
|
|
||||||
private NetworkStats getNetworkStatsXt() throws RemoteException {
|
|
||||||
final NetworkStats xtSnapshot = readNetworkStatsSummaryXt();
|
|
||||||
|
|
||||||
final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
|
|
||||||
Context.TELEPHONY_SERVICE);
|
|
||||||
|
|
||||||
// Merge video calling data usage into XT
|
|
||||||
final NetworkStats vtSnapshot = telephonyManager.getVtDataUsage(STATS_PER_IFACE);
|
|
||||||
if (vtSnapshot != null) {
|
|
||||||
xtSnapshot.combineAllValues(vtSnapshot);
|
|
||||||
}
|
|
||||||
|
|
||||||
return xtSnapshot;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return snapshot of current tethering statistics. Will return empty
|
* Return snapshot of current tethering statistics. Will return empty
|
||||||
* {@link NetworkStats} if any problems are encountered.
|
* {@link NetworkStats} if any problems are encountered.
|
||||||
|
|||||||
Reference in New Issue
Block a user