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

Commit 7ad419a4 authored by Olivier Gaillard's avatar Olivier Gaillard
Browse files

Add thread to check for lock contention.

Using the foreground thread will block the foreground thread when there
is lock contention. Some of the lock checks are guarding code which is
writing to disk for instance.

Test: manual

Change-Id: I431c5c34984c7f58cfe4f4127071521811edefb8
parent dea5a7c8
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -390,11 +390,16 @@ public class Watchdog {
        // potentially hold longer running operations with no guarantees about the timeliness
        // of operations there.
        //
        // The shared foreground thread is the main checker.  It is where we
        // will also dispatch monitor checks and do other work.
        mMonitorChecker = new HandlerChecker(FgThread.getHandler(),
                "foreground thread");
        // Use a custom thread to check monitors to avoid lock contention from impacted other
        // threads.
        ServiceThread t = new ServiceThread("watchdog.monitor",
                android.os.Process.THREAD_PRIORITY_DEFAULT, true /*allowIo*/);
        t.start();
        mMonitorChecker = new HandlerChecker(new Handler(t.getLooper()), "monitor thread");
        mHandlerCheckers.add(withDefaultTimeout(mMonitorChecker));

        mHandlerCheckers.add(withDefaultTimeout(
                new HandlerChecker(FgThread.getHandler(), "foreground thread")));
        // Add checker for main thread.  We only do a quick check since there
        // can be UI running on the thread.
        mHandlerCheckers.add(withDefaultTimeout(