Increase timeout for ttyd, and make it interrupt-aware
10s might be too tight, so increase timeout to 20s
And raise a runtime exception only if the thread isn't interrupted
Bug: 383047492
Test: click close before ttyd is ready
Change-Id: I593768053b52b4815cade9ba320c662c7bc83f93
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index 624d6ca..316c8c4 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -77,7 +77,7 @@
static final String KEY_DISK_SIZE = "disk_size";
private static final String VM_ADDR = "192.168.0.2";
private static final int TTYD_PORT = 7681;
- private static final int TERMINAL_CONNECTION_TIMEOUT_MS = 10_000;
+ private static final int TERMINAL_CONNECTION_TIMEOUT_MS = 20_000;
private static final int REQUEST_CODE_INSTALLER = 0x33;
private static final int FONT_SIZE_DEFAULT = 13;
@@ -348,14 +348,18 @@
} catch (UnknownHostException e) {
// this can never happen.
}
-
long startTime = SystemClock.elapsedRealtime();
while (true) {
int remainingTime =
TERMINAL_CONNECTION_TIMEOUT_MS
- (int) (SystemClock.elapsedRealtime() - startTime);
+
+ if (Thread.interrupted()) {
+ Log.d(TAG, "the waiting thread is interrupted");
+ return;
+ }
if (remainingTime <= 0) {
- throw new RuntimeException("Connection to terminal timedout");
+ throw new RuntimeException("Connection to terminal timeout");
}
try {
// Note: this quits immediately if VM is unreachable.