diff options
author | Chiachang Wang <chiachangwang@google.com> | 2020-01-17 02:23:45 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-01-17 02:23:45 +0000 |
commit | d22d5b2870ccea8de9842dc728421ca235053d6c (patch) | |
tree | c54d3f3babaae82811ed250506fb0fb448a7a7b9 | |
parent | 97ccc3386992795c7245c521f433dc62c360fec9 (diff) | |
parent | d740dc382aaf8ede8c1143f35bff28c1c4401a82 (diff) |
Merge "Reduce redundant network probing and prevent probing loop"
-rw-r--r-- | src/com/android/networkstack/netlink/TcpSocketTracker.java | 2 | ||||
-rw-r--r-- | src/com/android/server/connectivity/NetworkMonitor.java | 23 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/com/android/networkstack/netlink/TcpSocketTracker.java b/src/com/android/networkstack/netlink/TcpSocketTracker.java index 8929cdb..78813bd 100644 --- a/src/com/android/networkstack/netlink/TcpSocketTracker.java +++ b/src/com/android/networkstack/netlink/TcpSocketTracker.java @@ -311,7 +311,7 @@ public class TcpSocketTracker { } } final SocketInfo info = new SocketInfo(tcpInfo, family, mark, time); - log("pollSocketsInfo, " + info); + log("parseSockInfo, " + info); return info; } diff --git a/src/com/android/server/connectivity/NetworkMonitor.java b/src/com/android/server/connectivity/NetworkMonitor.java index f950b47..a991156 100644 --- a/src/com/android/server/connectivity/NetworkMonitor.java +++ b/src/com/android/server/connectivity/NetworkMonitor.java @@ -752,9 +752,20 @@ public class NetworkMonitor extends StateMachine { } mEvaluationState.reportEvaluationResult(result, null /* redirectUrl */); mValidations++; + initSocketTrackingIfRequired(); + // start periodical polling. sendTcpPollingEvent(); } + private void initSocketTrackingIfRequired() { + if (!isValidationRequired()) return; + + final TcpSocketTracker tst = getTcpSocketTracker(); + if (tst != null) { + tst.pollSocketsInfo(); + } + } + @Override public boolean processMessage(Message message) { switch (message.what) { @@ -2229,7 +2240,7 @@ public class NetworkMonitor extends StateMachine { @VisibleForTesting protected boolean isDataStall() { Boolean result = null; - final StringJoiner msg = VDBG_STALL ? new StringJoiner(", ") : null; + final StringJoiner msg = (DBG || VDBG_STALL) ? new StringJoiner(", ") : null; // Reevaluation will generate traffic. Thus, set a minimal reevaluation timer to limit the // possible traffic cost in metered network. if (!mNetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) @@ -2247,9 +2258,9 @@ public class NetworkMonitor extends StateMachine { } else if (tst.isDataStallSuspected()) { result = true; } - if (VDBG_STALL) { + if (DBG || VDBG_STALL) { msg.add("tcp packets received=" + tst.getLatestReceivedCount()) - .add("tcp fail rate=" + tst.getLatestPacketFailPercentage()); + .add("latest tcp fail rate=" + tst.getLatestPacketFailPercentage()); } } @@ -2262,13 +2273,13 @@ public class NetworkMonitor extends StateMachine { result = true; logNetworkEvent(NetworkEvent.NETWORK_CONSECUTIVE_DNS_TIMEOUT_FOUND); } - if (VDBG_STALL) { + if (DBG || VDBG_STALL) { msg.add("consecutive dns timeout count=" + mDnsStallDetector.getConsecutiveTimeoutCount()); } } - - if (VDBG_STALL) { + // log only data stall suspected. + if ((DBG && Boolean.TRUE.equals(result)) || VDBG_STALL) { log("isDataStall: result=" + result + ", " + msg); } |