fix NullPointerException in RemoteAndroidVirtualDevice.getDeviceDescriptor
I saw the following exception when running a test.
java.lang.NullPointerException: Cannot invoke "com.android.tradefed.command.remote.DeviceDescriptor.getSerial()" because "descriptor" is null
at com.android.tradefed.device.cloud.RemoteAndroidVirtualDevice.getDeviceDescriptor(RemoteAndroidVirtualDevice.java:76)
at com.android.tradefed.device.NativeDevice.getDeviceDescriptor(NativeDevice.java:5414)
at com.android.tradefed.device.connection.AdbSshConnection.restoreSnapshotGce(AdbSshConnection.java:807)
at com.android.tradefed.device.internal.DeviceSnapshotFeature.restoreSnapshotGce(DeviceSnapshotFeature.java:238)
at com.android.tradefed.device.internal.DeviceSnapshotFeature.restoreSnapshot(DeviceSnapshotFeature.java:190)
at com.android.tradefed.device.internal.DeviceSnapshotFeature.execute(DeviceSnapshotFeature.java:109)
at com.android.tradefed.service.TradefedFeatureServer.createResponse(TradefedFeatureServer.java:186)
at com.android.tradefed.service.TradefedFeatureServer.triggerFeature(TradefedFeatureServer.java:115)
at com.proto.tradefed.feature.TradefedInformationGrpc$MethodHandlers.invoke(TradefedInformationGrpc.java:228)
at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182)
at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:346)
at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:860)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Test: m tradefed
Change-Id: I1f431db6736c5ea9048c7fcac90ac116f47c7a37
diff --git a/src/com/android/tradefed/device/cloud/RemoteAndroidVirtualDevice.java b/src/com/android/tradefed/device/cloud/RemoteAndroidVirtualDevice.java
index 95a037a..8ecaef4 100644
--- a/src/com/android/tradefed/device/cloud/RemoteAndroidVirtualDevice.java
+++ b/src/com/android/tradefed/device/cloud/RemoteAndroidVirtualDevice.java
@@ -71,7 +71,7 @@
@Override
public DeviceDescriptor getDeviceDescriptor(boolean shortDescriptor) {
DeviceDescriptor descriptor = super.getDeviceDescriptor(shortDescriptor);
- if (getConnection() instanceof DefaultConnection) {
+ if (descriptor != null && getConnection() instanceof DefaultConnection) {
String initialSerial = ((DefaultConnection) getConnection()).getInitialSerial();
if (!initialSerial.equals(descriptor.getSerial())) {
// Alter the display for the console.