Loading services/core/java/com/android/server/pm/BackgroundDexOptService.java +7 −5 Original line number Diff line number Diff line Loading @@ -405,11 +405,15 @@ public final class BackgroundDexOptService { new TimingsTraceAndSlog(TAG, Trace.TRACE_TAG_PACKAGE_MANAGER); tr.traceBegin("jobExecution"); boolean completed = false; boolean fatalError = false; try { completed = runIdleOptimization( pm, pkgs, params.getJobId() == JOB_POST_BOOT_UPDATE); } catch (LegacyDexoptDisabledException e) { Slog.wtf(TAG, e); } catch (RuntimeException e) { fatalError = true; throw e; } finally { // Those cleanup should be done always. tr.traceEnd(); Slog.i(TAG, Loading @@ -422,12 +426,10 @@ public final class BackgroundDexOptService { if (completed) { 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(); } })); Loading services/tests/mockingservicestests/src/com/android/server/pm/BackgroundDexOptServiceUnitTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -413,8 +413,8 @@ public final class BackgroundDexOptServiceUnitTest { mDexOptThread.join(TEST_WAIT_TIMEOUT_MS); mCancelThread.join(TEST_WAIT_TIMEOUT_MS); // Always reschedule for periodic job verify(mJobServiceForIdle).jobFinished(mJobParametersForIdle, false); // The job should be rescheduled. verify(mJobServiceForIdle).jobFinished(mJobParametersForIdle, true /* wantsReschedule */); verifyLastControlDexOptBlockingCall(false); } Loading Loading
services/core/java/com/android/server/pm/BackgroundDexOptService.java +7 −5 Original line number Diff line number Diff line Loading @@ -405,11 +405,15 @@ public final class BackgroundDexOptService { new TimingsTraceAndSlog(TAG, Trace.TRACE_TAG_PACKAGE_MANAGER); tr.traceBegin("jobExecution"); boolean completed = false; boolean fatalError = false; try { completed = runIdleOptimization( pm, pkgs, params.getJobId() == JOB_POST_BOOT_UPDATE); } catch (LegacyDexoptDisabledException e) { Slog.wtf(TAG, e); } catch (RuntimeException e) { fatalError = true; throw e; } finally { // Those cleanup should be done always. tr.traceEnd(); Slog.i(TAG, Loading @@ -422,12 +426,10 @@ public final class BackgroundDexOptService { if (completed) { 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(); } })); Loading
services/tests/mockingservicestests/src/com/android/server/pm/BackgroundDexOptServiceUnitTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -413,8 +413,8 @@ public final class BackgroundDexOptServiceUnitTest { mDexOptThread.join(TEST_WAIT_TIMEOUT_MS); mCancelThread.join(TEST_WAIT_TIMEOUT_MS); // Always reschedule for periodic job verify(mJobServiceForIdle).jobFinished(mJobParametersForIdle, false); // The job should be rescheduled. verify(mJobServiceForIdle).jobFinished(mJobParametersForIdle, true /* wantsReschedule */); verifyLastControlDexOptBlockingCall(false); } Loading