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

Commit c5893ac9 authored by Ben Miles's avatar Ben Miles Committed by Android (Google) Code Review
Browse files

Merge "Add timeout to subject for executing service ANRs"

parents e3649d78 b068784d
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -151,7 +151,11 @@ public class TimeoutRecord {

    /** Record for a service exec timeout. */
    @NonNull
    public static TimeoutRecord forServiceExec(@NonNull String reason) {
    public static TimeoutRecord forServiceExec(@NonNull String shortInstanceName,
            long timeoutDurationMs) {
        String reason =
                "executing service " + shortInstanceName + ", waited "
                        + timeoutDurationMs + "ms";
        return TimeoutRecord.endingNow(TimeoutKind.SERVICE_EXEC, reason);
    }

+3 −2
Original line number Diff line number Diff line
@@ -6640,8 +6640,9 @@ public final class ActiveServices {
                    mAm.mHandler.removeCallbacks(mLastAnrDumpClearer);
                    mAm.mHandler.postDelayed(mLastAnrDumpClearer,
                            LAST_ANR_LIFETIME_DURATION_MSECS);
                    String anrMessage = "executing service " + timeout.shortInstanceName;
                    timeoutRecord = TimeoutRecord.forServiceExec(anrMessage);
                    long waitedMillis = now - timeout.executingStart;
                    timeoutRecord = TimeoutRecord.forServiceExec(timeout.shortInstanceName,
                            waitedMillis);
                } else {
                    Message msg = mAm.mHandler.obtainMessage(
                            ActivityManagerService.SERVICE_TIMEOUT_MSG);
+2 −2
Original line number Diff line number Diff line
@@ -104,11 +104,11 @@ public class TimeoutRecordTest {

    @Test
    public void forServiceExec_returnsCorrectTimeoutRecord() {
        TimeoutRecord record = TimeoutRecord.forServiceExec("Test ANR reason");
        TimeoutRecord record = TimeoutRecord.forServiceExec("com.app.MyService", 1000L);

        assertNotNull(record);
        assertEquals(record.mKind, TimeoutRecord.TimeoutKind.SERVICE_EXEC);
        assertEquals(record.mReason, "Test ANR reason");
        assertEquals(record.mReason, "executing service com.app.MyService, waited 1000ms");
        assertTrue(record.mEndTakenBeforeLocks);
    }