Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5b04de7 authored by Jack Yu's avatar Jack Yu
Browse files

Fixed crash in data retry manager

Also added an anomaly report to find out
the actual cause.

Fix: 228429761
Test: atest FrameworksTelephonyTests
Change-Id: Ib26aadf82e13c455189c8caa14ab082e51fa5311
parent 3c8a478a
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.TransportType;
import android.telephony.Annotation.DataFailureCause;
import android.telephony.Annotation.NetCapability;
import android.telephony.AnomalyReporter;
import android.telephony.DataFailCause;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataProfile;
@@ -59,6 +60,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -1280,9 +1282,17 @@ public class DataRetryManager extends Handler {
            if (mDataRetryEntries.get(i) instanceof DataSetupRetryEntry) {
                DataSetupRetryEntry entry = (DataSetupRetryEntry) mDataRetryEntries.get(i);
                // count towards the last succeeded data setup.
                if (entry.setupRetryType == DataSetupRetryEntry.RETRY_TYPE_NETWORK_REQUESTS
                        && entry.networkRequestList.get(0)
                        .getApnTypeNetworkCapability() == networkCapability
                if (entry.setupRetryType == DataSetupRetryEntry.RETRY_TYPE_NETWORK_REQUESTS) {
                    if (entry.networkRequestList.isEmpty()) {
                        String msg = "Invalid data retry entry detected";
                        logl(msg);
                        loge("mDataRetryEntries=" + mDataRetryEntries);
                        AnomalyReporter.reportAnomaly(UUID.fromString(
                                "afeab78c-c0b0-49fc-a51f-f766814d7aa5"), msg);
                        continue;
                    }
                    if (entry.networkRequestList.get(0).getApnTypeNetworkCapability()
                            == networkCapability
                            && entry.appliedDataRetryRule.equals(dataRetryRule)) {
                        if (entry.getState() == DataRetryEntry.RETRY_STATE_SUCCEEDED
                                || entry.getState() == DataRetryEntry.RETRY_STATE_CANCELLED) {
@@ -1292,6 +1302,7 @@ public class DataRetryManager extends Handler {
                    }
                }
            }
        }
        return count;
    }