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

Commit 8a05fe90 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Reschedule the legacy bg dexopt job when it's cancelled."

parents e388f0df ad549bde
Loading
Loading
Loading
Loading
+7 −5
Original line number Original line Diff line number Diff line
@@ -405,11 +405,15 @@ public final class BackgroundDexOptService {
                                    new TimingsTraceAndSlog(TAG, Trace.TRACE_TAG_PACKAGE_MANAGER);
                                    new TimingsTraceAndSlog(TAG, Trace.TRACE_TAG_PACKAGE_MANAGER);
                            tr.traceBegin("jobExecution");
                            tr.traceBegin("jobExecution");
                            boolean completed = false;
                            boolean completed = false;
                            boolean fatalError = false;
                            try {
                            try {
                                completed = runIdleOptimization(
                                completed = runIdleOptimization(
                                        pm, pkgs, params.getJobId() == JOB_POST_BOOT_UPDATE);
                                        pm, pkgs, params.getJobId() == JOB_POST_BOOT_UPDATE);
                            } catch (LegacyDexoptDisabledException e) {
                            } catch (LegacyDexoptDisabledException e) {
                                Slog.wtf(TAG, e);
                                Slog.wtf(TAG, e);
                            } catch (RuntimeException e) {
                                fatalError = true;
                                throw e;
                            } finally { // Those cleanup should be done always.
                            } finally { // Those cleanup should be done always.
                                tr.traceEnd();
                                tr.traceEnd();
                                Slog.i(TAG,
                                Slog.i(TAG,
@@ -422,12 +426,10 @@ public final class BackgroundDexOptService {
                                    if (completed) {
                                    if (completed) {
                                        markPostBootUpdateCompleted(params);
                                        markPostBootUpdateCompleted(params);
                                    }
                                    }
                                    // Reschedule when cancelled
                                    job.jobFinished(params, !completed);
                                } else {
                                    // Periodic job
                                    job.jobFinished(params, false /* reschedule */);
                                }
                                }
                                // Reschedule when cancelled. No need to reschedule when failed with
                                // fatal error because it's likely to fail again.
                                job.jobFinished(params, !completed && !fatalError);
                                markDexOptCompleted();
                                markDexOptCompleted();
                            }
                            }
                        }));
                        }));
+2 −2
Original line number Original line Diff line number Diff line
@@ -413,8 +413,8 @@ public final class BackgroundDexOptServiceUnitTest {
        mDexOptThread.join(TEST_WAIT_TIMEOUT_MS);
        mDexOptThread.join(TEST_WAIT_TIMEOUT_MS);
        mCancelThread.join(TEST_WAIT_TIMEOUT_MS);
        mCancelThread.join(TEST_WAIT_TIMEOUT_MS);


        // Always reschedule for periodic job
        // The job should be rescheduled.
        verify(mJobServiceForIdle).jobFinished(mJobParametersForIdle, false);
        verify(mJobServiceForIdle).jobFinished(mJobParametersForIdle, true /* wantsReschedule */);
        verifyLastControlDexOptBlockingCall(false);
        verifyLastControlDexOptBlockingCall(false);
    }
    }