Log the potential terrible error metrics when bypassing VPN rule in CS.
Log the TYPE_DISALLOW_BYPASS_VPN_FOR_DELEGATE_UID_ENOENT terrible error
metrics when ConnectivityService attempts to cleanup the VPN bypassing
permission for a delegate UID but netd never sees this UID before and
returns ENOENT. In theory this should never happen, but log this error
if it does happen.
Bug: 373773542
Test: TH
Change-Id: Ibb347c43798ec33b7169b448fcaa2d103431dca5
diff --git a/service/src/com/android/server/connectivity/NetworkAgentInfo.java b/service/src/com/android/server/connectivity/NetworkAgentInfo.java
index 2b00386..2686e4a 100644
--- a/service/src/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/service/src/com/android/server/connectivity/NetworkAgentInfo.java
@@ -29,6 +29,9 @@
import static android.system.OsConstants.EEXIST;
import static android.system.OsConstants.ENOENT;
+import static com.android.net.module.util.FrameworkConnectivityStatsLog.CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED;
+import static com.android.net.module.util.FrameworkConnectivityStatsLog.CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED__ERROR_TYPE__TYPE_DISALLOW_BYPASS_VPN_FOR_DELEGATE_UID_ENOENT;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -73,6 +76,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.WakeupMessage;
+import com.android.net.module.util.FrameworkConnectivityStatsLog;
import com.android.net.module.util.HandlerUtils;
import com.android.server.ConnectivityService;
import com.android.server.ConnectivityService.CaptivePortalImpl;
@@ -1604,6 +1608,12 @@
if (mCaptivePortalDelegateUids.values().contains(maybeDelegateUid)) return 0;
final int errorCode =
allowBypassVpnOnNetwork(false /* allow */, maybeDelegateUid, network.netId);
+ if (errorCode == ENOENT) {
+ FrameworkConnectivityStatsLog.write(
+ CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED,
+ CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED__ERROR_TYPE__TYPE_DISALLOW_BYPASS_VPN_FOR_DELEGATE_UID_ENOENT
+ );
+ }
return errorCode == ENOENT ? 0 : errorCode;
}