Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2abdbbd3 authored by Chris Li's avatar Chris Li
Browse files

Refactor for immediate dispatched ClientTransaction cleanup

Bug: 323801078
Test: refactor only
Flag: com.android.window.flags.cleanup_dispatch_pending_transactions_remote_exception
Change-Id: I025c864607452a2d7769be6c90f90e25ee713930
parent 86ad6dfa
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.Debug;
import android.os.Handler;
import android.os.IBinder;
@@ -1047,16 +1048,23 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
            // transaction.
            mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread());
        }
        final boolean isSuccessful;
        try {
            mService.getLifecycleManager().scheduleTransactionItems(
            isSuccessful = mService.getLifecycleManager().scheduleTransactionItems(
                    proc.getThread(),
                    // Immediately dispatch the transaction, so that if it fails, the server can
                    // restart the process and retry now.
                    true /* shouldDispatchImmediately */,
                    launchActivityItem, lifecycleItem);
        } catch (RemoteException e) {
            // TODO(b/323801078): remove Exception when cleanup
            return e;
        }
        if (com.android.window.flags.Flags.cleanupDispatchPendingTransactionsRemoteException()
                && !isSuccessful) {
            return new DeadObjectException("Failed to dispatch the ClientTransaction to dead"
                    + " process. See earlier log for more details.");
        }

        if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) {
            // If the seq is increased, there should be something changed (e.g. registered
+4 −6
Original line number Diff line number Diff line
@@ -36,8 +36,8 @@ import static com.android.server.wm.ActivityRecord.State.PAUSED;
import static com.android.server.wm.ActivityRecord.State.PAUSING;
import static com.android.server.wm.ActivityRecord.State.RESUMED;
import static com.android.server.wm.ActivityRecord.State.STARTED;
import static com.android.server.wm.ActivityRecord.State.STOPPING;
import static com.android.server.wm.ActivityRecord.State.STOPPED;
import static com.android.server.wm.ActivityRecord.State.STOPPING;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RELEASE;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CONFIGURATION;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_RELEASE;
@@ -69,7 +69,6 @@ import android.content.pm.ServiceInfo;
import android.content.res.Configuration;
import android.os.Binder;
import android.os.Build;
import android.os.DeadObjectException;
import android.os.FactoryTest;
import android.os.LocaleList;
import android.os.Message;
@@ -458,6 +457,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
                mAtm.getLifecycleManager().scheduleTransactionItemNow(
                        thread, configurationChangeItem);
            } catch (Exception e) {
                // TODO(b/323801078): remove Exception when cleanup
                Slog.e(TAG_CONFIGURATION, "Failed to schedule ConfigurationChangeItem="
                        + configurationChangeItem + " owner=" + mOwner, e);
            }
@@ -1793,13 +1793,11 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
                // Non-UI process can handle the change directly.
                mAtm.getLifecycleManager().scheduleTransactionItemNow(thread, transactionItem);
            }
        } catch (DeadObjectException e) {
        } catch (RemoteException e) {
            // TODO(b/323801078): remove Exception when cleanup
            // Expected if the process has been killed.
            Slog.w(TAG_CONFIGURATION, "Failed for dead process. ClientTransactionItem="
                    + transactionItem + " owner=" + mOwner);
        } catch (Exception e) {
            Slog.e(TAG_CONFIGURATION, "Failed to schedule ClientTransactionItem="
                    + transactionItem + " owner=" + mOwner, e);
        }
    }