Merge "Handle gRPC canellation case" into main
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/ImageArchive.kt b/android/TerminalApp/java/com/android/virtualization/terminal/ImageArchive.kt
index be1f922..54754ff 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/ImageArchive.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/ImageArchive.kt
@@ -146,8 +146,8 @@
companion object {
private const val DIR_IN_SDCARD = "linux"
private const val ARCHIVE_NAME = "images.tar.gz"
- private const val BUILD_TAG = "latest" // TODO: use actual tag name
- private const val HOST_URL = "https://dl.google.com/android/ferrochrome/$BUILD_TAG"
+ private val BUILD_TAG = Integer.toString(Build.VERSION.SDK_INT_FULL)
+ private val HOST_URL = "https://dl.google.com/android/ferrochrome/$BUILD_TAG"
fun getSdcardPathForTesting(): Path {
return Environment.getExternalStoragePublicDirectory(DIR_IN_SDCARD).toPath()
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt b/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt
index 5cc09ee..2d7468d 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/VmLauncherService.kt
@@ -72,8 +72,9 @@
private val binder = VmLauncherServiceBinder()
+ private lateinit var executorService: ExecutorService
+
// TODO: using lateinit for some fields to avoid null
- private var executorService: ExecutorService? = null
private var virtualMachine: VirtualMachine? = null
private var resultReceiver: ResultReceiver? = null
private var server: Server? = null
@@ -168,6 +169,11 @@
}
}
+ override fun onCreate() {
+ super.onCreate()
+ executorService = Executors.newCachedThreadPool(TerminalThreadFactory(applicationContext))
+ }
+
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
if (intent.action == ACTION_SHUTDOWN_VM) {
if (debianService != null && debianService!!.shutdownDebian()) {
@@ -185,7 +191,6 @@
Log.d(TAG, "VM instance is already started")
return START_NOT_STICKY
}
- executorService = Executors.newCachedThreadPool(TerminalThreadFactory(applicationContext))
val image = InstalledImage.getDefault(this)
val json = ConfigJson.from(this, image.configPath)
@@ -220,7 +225,7 @@
stopSelf()
}
val logDir = getFileStreamPath(virtualMachine!!.name + ".log").toPath()
- Logger.setup(virtualMachine!!, logDir, executorService!!)
+ Logger.setup(virtualMachine!!, logDir, executorService)
val notification =
intent.getParcelableExtra<Notification?>(EXTRA_NOTIFICATION, Notification::class.java)
@@ -420,7 +425,7 @@
return
}
- executorService!!.execute(
+ executorService.execute(
Runnable {
// TODO(b/373533555): we can use mDNS for that.
val debianServicePortFile = File(filesDir, "debian_service_port")
@@ -448,10 +453,9 @@
Log.e(TAG, "failed to stop a VM instance", e)
}
}
- executorService?.shutdownNow()
- executorService = null
virtualMachine = null
}
+ executorService.shutdownNow()
super.onDestroy()
}