OSDN Git Service

Log the error when uncrypt timeouts
authorTianjie Xu <xunchang@google.com>
Sat, 24 Sep 2016 22:39:56 +0000 (15:39 -0700)
committerTianjie Xu <xunchang@google.com>
Wed, 28 Sep 2016 18:19:03 +0000 (11:19 -0700)
Log the error code to uncrypt_status if uncrypt gets killed because
of timeout.

Test: We log the error code correctly in uncrypt_status when uncrypt timeouts.
Bug: 31603820
Change-Id: Ia623c333714295e68f4269257fbb4297a867e42b
(cherry picked from commit 036d08638e6a5f849847a32d794ad34d7dec1368)

core/java/android/os/RecoverySystem.java
services/core/java/com/android/server/power/ShutdownThread.java

index 90bd11f..0b3abaa 100644 (file)
@@ -93,6 +93,14 @@ public class RecoverySystem {
      */
     public static final File UNCRYPT_PACKAGE_FILE = new File(RECOVERY_DIR, "uncrypt_file");
 
+    /**
+     * UNCRYPT_STATUS_FILE stores the time cost (and error code in the case of a failure)
+     * of uncrypt.
+     *
+     * @hide
+     */
+    public static final File UNCRYPT_STATUS_FILE = new File(RECOVERY_DIR, "uncrypt_status");
+
     // Length limits for reading files.
     private static final int LOG_FILE_MAX_LENGTH = 64 * 1024;
 
index 8ce2fd9..44894ed 100644 (file)
@@ -717,6 +717,14 @@ public final class ShutdownThread extends Thread {
         }
         if (!done[0]) {
             Log.w(TAG, "Timed out waiting for uncrypt.");
+            final int uncryptTimeoutError = 100;
+            String timeoutMessage = String.format("uncrypt_time: %d\n" + "uncrypt_error: %d\n",
+                    MAX_UNCRYPT_WAIT_TIME / 1000, uncryptTimeoutError);
+            try {
+                FileUtils.stringToFile(RecoverySystem.UNCRYPT_STATUS_FILE, timeoutMessage);
+            } catch (IOException e) {
+                Log.e(TAG, "Failed to write timeout message to uncrypt status", e);
+            }
         }
     }
 }