Add the timeout duration to the watchdog message.
The timeout will varies depending on the handler checker and can also be controlled by flags. Test: Existing unit tests still pass. Change-Id: I25dcbb58e087b4d5c2ff5e99d5da603d8b8e2b9e
This commit is contained in:
@@ -230,10 +230,10 @@ public class Watchdog implements Dumpable {
|
||||
private final String mName;
|
||||
private final ArrayList<Monitor> mMonitors = new ArrayList<Monitor>();
|
||||
private final ArrayList<Monitor> mMonitorQueue = new ArrayList<Monitor>();
|
||||
private long mWaitMax;
|
||||
private long mWaitMaxMillis;
|
||||
private boolean mCompleted;
|
||||
private Monitor mCurrentMonitor;
|
||||
private long mStartTime;
|
||||
private long mStartTimeMillis;
|
||||
private int mPauseCount;
|
||||
|
||||
HandlerChecker(Handler handler, String name) {
|
||||
@@ -254,7 +254,7 @@ public class Watchdog implements Dumpable {
|
||||
* @param handlerCheckerTimeoutMillis the timeout to use for this run
|
||||
*/
|
||||
public void scheduleCheckLocked(long handlerCheckerTimeoutMillis) {
|
||||
mWaitMax = handlerCheckerTimeoutMillis;
|
||||
mWaitMaxMillis = handlerCheckerTimeoutMillis;
|
||||
if (mCompleted) {
|
||||
// Safe to update monitors in queue, Handler is not in the middle of work
|
||||
mMonitors.addAll(mMonitorQueue);
|
||||
@@ -279,7 +279,7 @@ public class Watchdog implements Dumpable {
|
||||
|
||||
mCompleted = false;
|
||||
mCurrentMonitor = null;
|
||||
mStartTime = SystemClock.uptimeMillis();
|
||||
mStartTimeMillis = SystemClock.uptimeMillis();
|
||||
mHandler.postAtFrontOfQueue(this);
|
||||
}
|
||||
|
||||
@@ -287,10 +287,10 @@ public class Watchdog implements Dumpable {
|
||||
if (mCompleted) {
|
||||
return COMPLETED;
|
||||
} else {
|
||||
long latency = SystemClock.uptimeMillis() - mStartTime;
|
||||
if (latency < mWaitMax/2) {
|
||||
long latency = SystemClock.uptimeMillis() - mStartTimeMillis;
|
||||
if (latency < mWaitMaxMillis / 2) {
|
||||
return WAITING;
|
||||
} else if (latency < mWaitMax) {
|
||||
} else if (latency < mWaitMaxMillis) {
|
||||
return WAITED_HALF;
|
||||
}
|
||||
}
|
||||
@@ -306,14 +306,17 @@ public class Watchdog implements Dumpable {
|
||||
}
|
||||
|
||||
String describeBlockedStateLocked() {
|
||||
final String prefix;
|
||||
if (mCurrentMonitor == null) {
|
||||
prefix = "Blocked in handler on ";
|
||||
} else {
|
||||
prefix = "Blocked in monitor " + mCurrentMonitor.getClass().getName();
|
||||
}
|
||||
Thread thread = getThread();
|
||||
String threadIdentifier = thread.getName() + ", tid=" + thread.getId();
|
||||
if (mCurrentMonitor == null) {
|
||||
return "Blocked in handler on " + mName + " (" + threadIdentifier + ")";
|
||||
} else {
|
||||
return "Blocked in monitor " + mCurrentMonitor.getClass().getName()
|
||||
+ " on " + mName + " (" + threadIdentifier + ")";
|
||||
}
|
||||
long latencySeconds = (SystemClock.uptimeMillis() - mStartTimeMillis) / 1000;
|
||||
return prefix + " on " + mName + " (" + threadIdentifier + ")"
|
||||
+ " for " + latencySeconds + "s";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user