From d74219ba4a44657f8c0c0deb83032d211e4797e4 Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Mon, 1 Apr 2019 13:04:07 +0900 Subject: [PATCH] Cleanup SystemReady in the network stack The system server (in SystemServer.java) defines the boot sequence, during which an event called SystemReady happens. This corresponds to a time when critical system services that are depended upon by other components in the system server are ready to handle requests from their dependencies. Some system services are listening to this event to defer initializations that depend on the critical services. Because the network stack is only started after SystemReady, there is no way any NetworkMonitor may be started before SystemReady. Remove the associated mechanism. Fix: 129376083 Test: FrameworksNetTests Change-Id: I071eeb10d0b7c4f71af6653d322c7b442b2cc7ee --- .../src/com/android/server/NetworkStackService.java | 6 ------ .../android/server/connectivity/NetworkMonitor.java | 15 --------------- .../java/com/android/server/ConnectivityService.java | 19 ------------------- services/java/com/android/server/SystemServer.java | 5 +++++ services/net/java/android/net/INetworkMonitor.aidl | 3 +-- 5 files changed, 6 insertions(+), 42 deletions(-) diff --git a/packages/NetworkStack/src/com/android/server/NetworkStackService.java b/packages/NetworkStack/src/com/android/server/NetworkStackService.java index 63f057caa26e..a0a90fde518f 100644 --- a/packages/NetworkStack/src/com/android/server/NetworkStackService.java +++ b/packages/NetworkStack/src/com/android/server/NetworkStackService.java @@ -303,12 +303,6 @@ public class NetworkStackService extends Service { } @Override - public void notifySystemReady() { - checkNetworkStackCallingPermission(); - mNm.notifySystemReady(); - } - - @Override public void notifyNetworkConnected(LinkProperties lp, NetworkCapabilities nc) { checkNetworkStackCallingPermission(); mNm.notifyNetworkConnected(lp, nc); diff --git a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java index c000fc6b721d..6f31f9b56ace 100644 --- a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java +++ b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java @@ -298,8 +298,6 @@ public class NetworkMonitor extends StateMachine { // Avoids surfacing "Sign in to network" notification. private boolean mDontDisplaySigninNotification = false; - private volatile boolean mSystemReady = false; - private final State mDefaultState = new DefaultState(); private final State mValidatedState = new ValidatedState(); private final State mMaybeNotifyState = new MaybeNotifyState(); @@ -434,15 +432,6 @@ public class NetworkMonitor extends StateMachine { } /** - * Send a notification to NetworkMonitor indicating that the system is ready. - */ - public void notifySystemReady() { - // No need to run on the handler thread: mSystemReady is volatile and read only once on the - // isCaptivePortal() thread. - mSystemReady = true; - } - - /** * Send a notification to NetworkMonitor indicating that the network is now connected. */ public void notifyNetworkConnected(LinkProperties lp, NetworkCapabilities nc) { @@ -1592,10 +1581,6 @@ public class NetworkMonitor extends StateMachine { */ private void sendNetworkConditionsBroadcast(boolean responseReceived, boolean isCaptivePortal, long requestTimestampMs, long responseTimestampMs) { - if (!mSystemReady) { - return; - } - Intent latencyBroadcast = new Intent(NetworkMonitorUtils.ACTION_NETWORK_CONDITIONS_MEASURED); if (mNetworkCapabilities.hasTransport(TRANSPORT_WIFI)) { diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 971dd23e98af..317eb93d7c1b 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -3738,16 +3738,6 @@ public class ConnectivityService extends IConnectivityManager.Stub break; } case EVENT_SYSTEM_READY: { - for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) { - // Might have been called already in handleRegisterNetworkAgent since - // mSystemReady is set before sending EVENT_SYSTEM_READY, but calling - // this several times is fine. - try { - nai.networkMonitor().notifySystemReady(); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); - } - } mMultipathPolicyTracker.start(); break; } @@ -5423,15 +5413,6 @@ public class ConnectivityService extends IConnectivityManager.Stub synchronized (mNetworkForNetId) { mNetworkForNetId.put(nai.network.netId, nai); } - synchronized (this) { - if (mSystemReady) { - try { - networkMonitor.notifySystemReady(); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); - } - } - } try { networkMonitor.start(); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index ed5928f7d820..7be7ab2bfb23 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -1924,6 +1924,11 @@ public final class SystemServer { traceBeginAndSlog("StartNetworkStack"); try { + // Note : the network stack is creating on-demand objects that need to send + // broadcasts, which means it currently depends on being started after + // ActivityManagerService.mSystemReady and ActivityManagerService.mProcessesReady + // are set to true. Be careful if moving this to a different place in the + // startup sequence. NetworkStackClient.getInstance().start(context); } catch (Throwable e) { reportWtf("starting Network Stack", e); diff --git a/services/net/java/android/net/INetworkMonitor.aidl b/services/net/java/android/net/INetworkMonitor.aidl index 3ed4640525c6..b32ef12ab24d 100644 --- a/services/net/java/android/net/INetworkMonitor.aidl +++ b/services/net/java/android/net/INetworkMonitor.aidl @@ -47,9 +47,8 @@ oneway interface INetworkMonitor { void forceReevaluation(int uid); void notifyPrivateDnsChanged(in PrivateDnsConfigParcel config); void notifyDnsResponse(int returnCode); - void notifySystemReady(); void notifyNetworkConnected(in LinkProperties lp, in NetworkCapabilities nc); void notifyNetworkDisconnected(); void notifyLinkPropertiesChanged(in LinkProperties lp); void notifyNetworkCapabilitiesChanged(in NetworkCapabilities nc); -} \ No newline at end of file +} -- 2.11.0