Make sure to always release the wake lock

b/6700936
b/6809256
b/6778795

Change-Id: Id6fe3bea44884433f6255199d85fa8a1431e44ea
diff --git a/src/com/android/providers/media/MediaScannerService.java b/src/com/android/providers/media/MediaScannerService.java
index 99bd734..46e5b2e 100644
--- a/src/com/android/providers/media/MediaScannerService.java
+++ b/src/com/android/providers/media/MediaScannerService.java
@@ -85,31 +85,34 @@
     }
 
     private void scan(String[] directories, String volumeName) {
+        Uri uri = Uri.parse("file://" + directories[0]);
         // don't sleep while scanning
         mWakeLock.acquire();
 
-        ContentValues values = new ContentValues();
-        values.put(MediaStore.MEDIA_SCANNER_VOLUME, volumeName);
-        Uri scanUri = getContentResolver().insert(MediaStore.getMediaScannerUri(), values);
-
-        Uri uri = Uri.parse("file://" + directories[0]);
-        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_STARTED, uri));
-        
         try {
-            if (volumeName.equals(MediaProvider.EXTERNAL_VOLUME)) {
-                openDatabase(volumeName);
+            ContentValues values = new ContentValues();
+            values.put(MediaStore.MEDIA_SCANNER_VOLUME, volumeName);
+            Uri scanUri = getContentResolver().insert(MediaStore.getMediaScannerUri(), values);
+
+            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_STARTED, uri));
+
+            try {
+                if (volumeName.equals(MediaProvider.EXTERNAL_VOLUME)) {
+                    openDatabase(volumeName);
+                }
+
+                MediaScanner scanner = createMediaScanner();
+                scanner.scanDirectories(directories, volumeName);
+            } catch (Exception e) {
+                Log.e(TAG, "exception in MediaScanner.scan()", e);
             }
 
-            MediaScanner scanner = createMediaScanner();
-            scanner.scanDirectories(directories, volumeName);
-        } catch (Exception e) {
-            Log.e(TAG, "exception in MediaScanner.scan()", e);
+            getContentResolver().delete(scanUri, null, null);
+
+        } finally {
+            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_FINISHED, uri));
+            mWakeLock.release();
         }
-
-        getContentResolver().delete(scanUri, null, null);
-
-        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_FINISHED, uri));
-        mWakeLock.release();
     }
     
     @Override