Improve Tethering and NativeDaemonConnector logging.

1. Deduplicate the Tethering message numbers, and use MessageUtils
   to convert them to strings.
2. Add a warning to NativeDaemonConnector when an unsolicited
   event is more than 500ms late or takes more than 500ms to
   process.

Bug: 27857665
Change-Id: I379aef9257027d1ccf30906e79c6389ef1f95420
This commit is contained in:
Lorenzo Colitti
2016-04-10 15:39:53 +09:00
parent bbb41dd3bd
commit 1ba4d36e2c

View File

@@ -109,6 +109,14 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
mDebug = debug; mDebug = debug;
} }
/**
* Like SystemClock.uptimeMillis, except truncated to an int so it will fit in a message arg.
* Inaccurate across 49.7 days of uptime, but only used for debugging.
*/
private int uptimeMillisInt() {
return (int) SystemClock.uptimeMillis() & Integer.MAX_VALUE;
}
/** /**
* Yell loudly if someone tries making future {@link #execute(Command)} * Yell loudly if someone tries making future {@link #execute(Command)}
* calls while holding a lock on the given object. * calls while holding a lock on the given object.
@@ -134,7 +142,9 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
@Override @Override
public boolean handleMessage(Message msg) { public boolean handleMessage(Message msg) {
String event = (String) msg.obj; final String event = (String) msg.obj;
final int start = uptimeMillisInt();
final int sent = msg.arg1;
try { try {
if (!mCallbacks.onEvent(msg.what, event, NativeDaemonEvent.unescapeArgs(event))) { if (!mCallbacks.onEvent(msg.what, event, NativeDaemonEvent.unescapeArgs(event))) {
log(String.format("Unhandled event '%s'", event)); log(String.format("Unhandled event '%s'", event));
@@ -145,6 +155,13 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
if (mCallbacks.onCheckHoldWakeLock(msg.what) && mWakeLock != null) { if (mCallbacks.onCheckHoldWakeLock(msg.what) && mWakeLock != null) {
mWakeLock.release(); mWakeLock.release();
} }
final int end = uptimeMillisInt();
if (start > sent && start - sent > WARN_EXECUTE_DELAY_MS) {
loge(String.format("NDC event {%s} processed too late: %dms", event, start - sent));
}
if (end > start && end - start > WARN_EXECUTE_DELAY_MS) {
loge(String.format("NDC event {%s} took too long: %dms", event, end - start));
}
} }
return true; return true;
} }
@@ -214,8 +231,9 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
mWakeLock.acquire(); mWakeLock.acquire();
releaseWl = true; releaseWl = true;
} }
if (mCallbackHandler.sendMessage(mCallbackHandler.obtainMessage( Message msg = mCallbackHandler.obtainMessage(
event.getCode(), event.getRawEvent()))) { event.getCode(), uptimeMillisInt(), 0, event.getRawEvent());
if (mCallbackHandler.sendMessage(msg)) {
releaseWl = false; releaseWl = false;
} }
} else { } else {