Loading api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -4655,6 +4655,7 @@ package android.provider { field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist"; field public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = "data_stall_consecutive_dns_timeout_threshold"; field public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; field public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; // 0x1 field public static final String DATA_STALL_MIN_EVALUATE_INTERVAL = "data_stall_min_evaluate_interval"; field public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD = "data_stall_valid_dns_time_threshold"; field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus"; Loading api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -1227,6 +1227,7 @@ package android.provider { field public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https"; field public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = "data_stall_consecutive_dns_timeout_threshold"; field public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; field public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; // 0x1 field public static final String DATA_STALL_MIN_EVALUATE_INTERVAL = "data_stall_min_evaluate_interval"; field public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD = "data_stall_valid_dns_time_threshold"; field public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions"; Loading core/java/android/provider/Settings.java +17 −4 Original line number Diff line number Diff line Loading @@ -10475,8 +10475,9 @@ public final class Settings { /** * The threshold value for the number of consecutive dns timeout events received to be a * signal of data stall. Set the value to 0 or less than 0 to disable. Note that the value * should be larger than 0 if the DNS data stall detection is enabled. * signal of data stall. The number of consecutive timeouts needs to be {@code >=} this * threshold to be considered a data stall. Set the value to {@code <= 0} to disable. Note * that the value should be {@code > 0} if the DNS data stall detection is enabled. * * @hide */ Loading Loading @@ -10507,15 +10508,27 @@ public final class Settings { "data_stall_valid_dns_time_threshold"; /** * Which data stall detection signal to use. Possible values are a union of the powers of 2 * of DATA_STALL_EVALUATION_TYPE_*. * Which data stall detection signal to use. This is a bitmask constructed by bitwise-or-ing * (i.e. {@code |}) the DATA_STALL_EVALUATION_TYPE_* values. * * Type: int * Valid values: * {@link #DATA_STALL_EVALUATION_TYPE_DNS} : Use dns as a signal. * @hide */ @SystemApi @TestApi public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; /** * Use dns timeout counts to detect data stall. * * @hide */ @SystemApi @TestApi public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; /** * Whether to try cellular data recovery when a bad network is reported. * Loading packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java +4 −4 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import static android.net.metrics.ValidationProbeEvent.DNS_SUCCESS; import static android.net.metrics.ValidationProbeEvent.PROBE_FALLBACK; import static android.net.metrics.ValidationProbeEvent.PROBE_PRIVDNS; import static android.net.util.NetworkStackUtils.isEmpty; import static android.provider.Settings.Global.DATA_STALL_EVALUATION_TYPE_DNS; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -128,9 +129,8 @@ public class NetworkMonitor extends StateMachine { private static final int DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS = 60 * 1000; private static final int DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS = 30 * 60 * 1000; private static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; private static final int DEFAULT_DATA_STALL_EVALUATION_TYPES = (1 << DATA_STALL_EVALUATION_TYPE_DNS); DATA_STALL_EVALUATION_TYPE_DNS; // Reevaluate it as intending to increase the number. Larger log size may cause statsd // log buffer bust and have stats log lost. private static final int DEFAULT_DNS_LOG_SIZE = 20; Loading Loading @@ -1772,7 +1772,7 @@ public class NetworkMonitor extends StateMachine { } private boolean dataStallEvaluateTypeEnabled(int type) { return (mDataStallEvaluationType & (1 << type)) != 0; return (mDataStallEvaluationType & type) != 0; } @VisibleForTesting Loading @@ -1792,7 +1792,7 @@ public class NetworkMonitor extends StateMachine { } // Check dns signal. Suspect it may be a data stall if both : // 1. The number of consecutive DNS query timeouts > mConsecutiveDnsTimeoutThreshold. // 1. The number of consecutive DNS query timeouts >= mConsecutiveDnsTimeoutThreshold. // 2. Those consecutive DNS queries happened in the last mValidDataStallDnsTimeThreshold ms. if (dataStallEvaluateTypeEnabled(DATA_STALL_EVALUATION_TYPE_DNS)) { if (mDnsStallDetector.isDataStallSuspected(mConsecutiveDnsTimeoutThreshold, Loading packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.net.CaptivePortal.APP_RETURN_DISMISSED; import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_INVALID; import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_VALID; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.provider.Settings.Global.DATA_STALL_EVALUATION_TYPE_DNS; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; Loading Loading @@ -114,7 +115,6 @@ public class NetworkMonitorTest { private static final String TEST_OTHER_FALLBACK_URL = "http://otherfallback.google.com/gen_204"; private static final String TEST_MCCMNC = "123456"; private static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; private static final int RETURN_CODE_DNS_SUCCESS = 0; private static final int RETURN_CODE_DNS_TIMEOUT = 255; private static final int DEFAULT_DNS_TIMEOUT_THRESHOLD = 5; Loading Loading @@ -186,7 +186,7 @@ public class NetworkMonitorTest { when(mCm.getNetworkCapabilities(any())).thenReturn(METERED_CAPABILITIES); setMinDataStallEvaluateInterval(500); setDataStallEvaluationType(1 << DATA_STALL_EVALUATION_TYPE_DNS); setDataStallEvaluationType(DATA_STALL_EVALUATION_TYPE_DNS); setValidDataStallDnsTimeThreshold(500); setConsecutiveDnsTimeoutThreshold(5); } Loading Loading
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -4655,6 +4655,7 @@ package android.provider { field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist"; field public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = "data_stall_consecutive_dns_timeout_threshold"; field public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; field public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; // 0x1 field public static final String DATA_STALL_MIN_EVALUATE_INTERVAL = "data_stall_min_evaluate_interval"; field public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD = "data_stall_valid_dns_time_threshold"; field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus"; Loading
api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -1227,6 +1227,7 @@ package android.provider { field public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https"; field public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = "data_stall_consecutive_dns_timeout_threshold"; field public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; field public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; // 0x1 field public static final String DATA_STALL_MIN_EVALUATE_INTERVAL = "data_stall_min_evaluate_interval"; field public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD = "data_stall_valid_dns_time_threshold"; field public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions"; Loading
core/java/android/provider/Settings.java +17 −4 Original line number Diff line number Diff line Loading @@ -10475,8 +10475,9 @@ public final class Settings { /** * The threshold value for the number of consecutive dns timeout events received to be a * signal of data stall. Set the value to 0 or less than 0 to disable. Note that the value * should be larger than 0 if the DNS data stall detection is enabled. * signal of data stall. The number of consecutive timeouts needs to be {@code >=} this * threshold to be considered a data stall. Set the value to {@code <= 0} to disable. Note * that the value should be {@code > 0} if the DNS data stall detection is enabled. * * @hide */ Loading Loading @@ -10507,15 +10508,27 @@ public final class Settings { "data_stall_valid_dns_time_threshold"; /** * Which data stall detection signal to use. Possible values are a union of the powers of 2 * of DATA_STALL_EVALUATION_TYPE_*. * Which data stall detection signal to use. This is a bitmask constructed by bitwise-or-ing * (i.e. {@code |}) the DATA_STALL_EVALUATION_TYPE_* values. * * Type: int * Valid values: * {@link #DATA_STALL_EVALUATION_TYPE_DNS} : Use dns as a signal. * @hide */ @SystemApi @TestApi public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; /** * Use dns timeout counts to detect data stall. * * @hide */ @SystemApi @TestApi public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; /** * Whether to try cellular data recovery when a bad network is reported. * Loading
packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java +4 −4 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import static android.net.metrics.ValidationProbeEvent.DNS_SUCCESS; import static android.net.metrics.ValidationProbeEvent.PROBE_FALLBACK; import static android.net.metrics.ValidationProbeEvent.PROBE_PRIVDNS; import static android.net.util.NetworkStackUtils.isEmpty; import static android.provider.Settings.Global.DATA_STALL_EVALUATION_TYPE_DNS; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -128,9 +129,8 @@ public class NetworkMonitor extends StateMachine { private static final int DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS = 60 * 1000; private static final int DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS = 30 * 60 * 1000; private static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; private static final int DEFAULT_DATA_STALL_EVALUATION_TYPES = (1 << DATA_STALL_EVALUATION_TYPE_DNS); DATA_STALL_EVALUATION_TYPE_DNS; // Reevaluate it as intending to increase the number. Larger log size may cause statsd // log buffer bust and have stats log lost. private static final int DEFAULT_DNS_LOG_SIZE = 20; Loading Loading @@ -1772,7 +1772,7 @@ public class NetworkMonitor extends StateMachine { } private boolean dataStallEvaluateTypeEnabled(int type) { return (mDataStallEvaluationType & (1 << type)) != 0; return (mDataStallEvaluationType & type) != 0; } @VisibleForTesting Loading @@ -1792,7 +1792,7 @@ public class NetworkMonitor extends StateMachine { } // Check dns signal. Suspect it may be a data stall if both : // 1. The number of consecutive DNS query timeouts > mConsecutiveDnsTimeoutThreshold. // 1. The number of consecutive DNS query timeouts >= mConsecutiveDnsTimeoutThreshold. // 2. Those consecutive DNS queries happened in the last mValidDataStallDnsTimeThreshold ms. if (dataStallEvaluateTypeEnabled(DATA_STALL_EVALUATION_TYPE_DNS)) { if (mDnsStallDetector.isDataStallSuspected(mConsecutiveDnsTimeoutThreshold, Loading
packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.net.CaptivePortal.APP_RETURN_DISMISSED; import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_INVALID; import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_VALID; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.provider.Settings.Global.DATA_STALL_EVALUATION_TYPE_DNS; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; Loading Loading @@ -114,7 +115,6 @@ public class NetworkMonitorTest { private static final String TEST_OTHER_FALLBACK_URL = "http://otherfallback.google.com/gen_204"; private static final String TEST_MCCMNC = "123456"; private static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; private static final int RETURN_CODE_DNS_SUCCESS = 0; private static final int RETURN_CODE_DNS_TIMEOUT = 255; private static final int DEFAULT_DNS_TIMEOUT_THRESHOLD = 5; Loading Loading @@ -186,7 +186,7 @@ public class NetworkMonitorTest { when(mCm.getNetworkCapabilities(any())).thenReturn(METERED_CAPABILITIES); setMinDataStallEvaluateInterval(500); setDataStallEvaluationType(1 << DATA_STALL_EVALUATION_TYPE_DNS); setDataStallEvaluationType(DATA_STALL_EVALUATION_TYPE_DNS); setValidDataStallDnsTimeThreshold(500); setConsecutiveDnsTimeoutThreshold(5); } Loading