Revert "Clean-up state if we have an exception when acquiring provider"

This reverts commit 73e239bdc9493d81215d5afe739b3ed095686ba2.

Bug: 20091132
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index b063209..9269f60 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -261,8 +261,6 @@
         IActivityManager.ContentProviderHolder holder;
         boolean acquiring = true;
         int requests = 1;
-        // Set if there was a runtime exception when trying to acquire the provider.
-        RuntimeException runtimeException = null;
     }
 
     // The lock of mProviderMap protects the following variables.
@@ -4672,55 +4670,39 @@
         }
 
         IActivityManager.ContentProviderHolder holder = null;
-        try {
-            if (first) {
-                // Multiple threads may try to acquire the same provider at the same time.
-                // When this happens, we only let the first one really gets provider.
-                // Other threads just wait for its result.
-                // Note that we cannot hold the lock while acquiring and installing the
-                // provider since it might take a long time to run and it could also potentially
-                // be re-entrant in the case where the provider is in the same process.
+        if (first) {
+            // Multiple threads may try to acquire the same provider at the same time.
+            // When this happens, we only let the first one really gets provider.
+            // Other threads just wait for its result.
+            // Note that we cannot hold the lock while acquiring and installing the
+            // provider since it might take a long time to run and it could also potentially
+            // be re-entrant in the case where the provider is in the same process.
+            try {
                 holder = ActivityManagerNative.getDefault().getContentProvider(
                         getApplicationThread(), auth, userId, stable);
-            } else {
-                synchronized (r) {
-                    while (r.acquiring) {
-                        try {
-                            r.wait();
-                        } catch (InterruptedException e) {
-                        }
-                    }
-                    holder = r.holder;
-                }
+            } catch (RemoteException ex) {
             }
-        } catch (RemoteException ex) {
-        } catch (RuntimeException e) {
             synchronized (r) {
-                r.runtimeException = e;
+                r.holder = holder;
+                r.acquiring = false;
+                r.notifyAll();
             }
-        } finally {
-            if (first) {
-                synchronized (r) {
-                    r.holder = holder;
-                    r.acquiring = false;
-                    r.notifyAll();
+        } else {
+            synchronized (r) {
+                while (r.acquiring) {
+                    try {
+                        r.wait();
+                    } catch (InterruptedException e) {
+                    }
                 }
-            }
-
-            synchronized (mAcquiringProviderMap) {
-                if (--r.requests == 0) {
-                    mAcquiringProviderMap.remove(key);
-                }
-            }
-
-            if (r.runtimeException != null) {
-                // Was set when the first thread tried to acquire the provider,
-                // but we should make sure it is thrown for all threads trying to
-                // acquire the provider.
-                throw r.runtimeException;
+                holder = r.holder;
             }
         }
-
+        synchronized (mAcquiringProviderMap) {
+            if (--r.requests == 0) {
+                mAcquiringProviderMap.remove(key);
+            }
+        }
         if (holder == null) {
             Slog.e(TAG, "Failed to find provider info for " + auth);
             return null;