From 60754f4adf7eb2e18a5c311d73ae938406acd3b1 Mon Sep 17 00:00:00 2001 From: linyuh Date: Thu, 21 Jun 2018 12:48:37 -0700 Subject: Only throw expected exception when coalescing fails. Bug: 110185399 Test: Manual PiperOrigin-RevId: 201570143 Change-Id: I5cf02a838113bde2dd218b84dda2c9cccffaa322 --- .../android/dialer/calllog/ui/NewCallLogFragment.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'java/com/android/dialer/calllog') diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java index ab0c22bcf..4141fe723 100644 --- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java +++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java @@ -17,6 +17,7 @@ package com.android.dialer.calllog.ui; 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 @@ public final class NewCallLogFragment extends Fragment implements LoaderCallback } }, 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); + } }); } -- cgit v1.2.3