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

Commit d6a7ef04 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "SystemServerInitThreadPool: add timing log for executing and shutdown"...

Merge "SystemServerInitThreadPool: add timing log for executing and shutdown" into rvc-dev am: 0fdf17d0 am: d73408a0 am: f6cd5e65 am: 00969a1e

Change-Id: Id9131d3bdec46444cacd32f022a9fea9361e06d7
parents ad352728 00969a1e
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.ConcurrentUtils;
import com.android.internal.util.ConcurrentUtils;
import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;
import com.android.server.am.ActivityManagerService;
import com.android.server.am.ActivityManagerService;
import com.android.server.utils.TimingsTraceAndSlog;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
@@ -93,6 +94,8 @@ public class SystemServerInitThreadPool {
            mPendingTasks.add(description);
            mPendingTasks.add(description);
        }
        }
        return mService.submit(() -> {
        return mService.submit(() -> {
            TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog();
            traceLog.traceBegin("InitThreadPoolExec:" + description);
            if (IS_DEBUGGABLE) {
            if (IS_DEBUGGABLE) {
                Slog.d(TAG, "Started executing " + description);
                Slog.d(TAG, "Started executing " + description);
            }
            }
@@ -100,6 +103,7 @@ public class SystemServerInitThreadPool {
                runnable.run();
                runnable.run();
            } catch (RuntimeException e) {
            } catch (RuntimeException e) {
                Slog.e(TAG, "Failure in " + description + ": " + e, e);
                Slog.e(TAG, "Failure in " + description + ": " + e, e);
                traceLog.traceEnd();
                throw e;
                throw e;
            }
            }
            synchronized (mPendingTasks) {
            synchronized (mPendingTasks) {
@@ -108,6 +112,7 @@ public class SystemServerInitThreadPool {
            if (IS_DEBUGGABLE) {
            if (IS_DEBUGGABLE) {
                Slog.d(TAG, "Finished executing " + description);
                Slog.d(TAG, "Finished executing " + description);
            }
            }
            traceLog.traceEnd();
        });
        });
    }
    }


@@ -132,7 +137,10 @@ public class SystemServerInitThreadPool {
     */
     */
    static void shutdown() {
    static void shutdown() {
        synchronized (LOCK) {
        synchronized (LOCK) {
            TimingsTraceAndSlog t = new TimingsTraceAndSlog();
            t.traceBegin("WaitInitThreadPoolShutdown");
            if (sInstance == null) {
            if (sInstance == null) {
                t.traceEnd();
                Slog.wtf(TAG, "Already shutdown", new Exception());
                Slog.wtf(TAG, "Already shutdown", new Exception());
                return;
                return;
            }
            }
@@ -147,6 +155,7 @@ public class SystemServerInitThreadPool {
            } catch (InterruptedException e) {
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                Thread.currentThread().interrupt();
                dumpStackTraces();
                dumpStackTraces();
                t.traceEnd();
                throw new IllegalStateException(TAG + " init interrupted");
                throw new IllegalStateException(TAG + " init interrupted");
            }
            }
            if (!terminated) {
            if (!terminated) {
@@ -160,11 +169,13 @@ public class SystemServerInitThreadPool {
                synchronized (sInstance.mPendingTasks) {
                synchronized (sInstance.mPendingTasks) {
                    copy.addAll(sInstance.mPendingTasks);
                    copy.addAll(sInstance.mPendingTasks);
                }
                }
                t.traceEnd();
                throw new IllegalStateException("Cannot shutdown. Unstarted tasks "
                throw new IllegalStateException("Cannot shutdown. Unstarted tasks "
                        + unstartedRunnables + " Unfinished tasks " + copy);
                        + unstartedRunnables + " Unfinished tasks " + copy);
            }
            }
            sInstance = null; // Make eligible for GC
            sInstance = null; // Make eligible for GC
            Slog.d(TAG, "Shutdown successful");
            Slog.d(TAG, "Shutdown successful");
            t.traceEnd();
        }
        }
    }
    }