Only throw expected exception when coalescing fails.

Bug: 110185399
Test: Manual
PiperOrigin-RevId: 201570143
Change-Id: I5cf02a838113bde2dd218b84dda2c9cccffaa322
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
index ab0c22b..4141fe7 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -17,6 +17,7 @@
 
 import android.app.Activity;
 import android.database.Cursor;
+import android.database.StaleDataException;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
@@ -336,12 +337,18 @@
           }
         },
         throwable -> {
-          // Coalescing can fail if the cursor passed to Coalescer is closed by the loader while
-          // the work is still in progress.
-          // This can happen when the loader restarts and finishes loading data before the
-          // coalescing work is completed.
-          // TODO(linyuh): throw an exception here if the failure above can be avoided.
-          LogUtil.e("NewCallLogFragment.onLoadFinished", "coalescing failed", throwable);
+          if (throwable instanceof StaleDataException) {
+            // Coalescing can fail if the cursor passed to Coalescer is closed by the loader while
+            // the work is still in progress.
+            // This can happen when the loader restarts and finishes loading data before the
+            // coalescing work is completed.
+            // This failure doesn't need to be thrown as coalescing will be restarted on the latest
+            // data obtained by the loader.
+            // TODO(linyuh): Also throw an exception if the failure above can be avoided.
+            LogUtil.e("NewCallLogFragment.onLoadFinished", "coalescing failed", throwable);
+          } else {
+            throw new AssertionError(throwable);
+          }
         });
   }