diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-01-28 20:39:01 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-01-28 20:39:01 +0000 |
commit | 9aba68730cadd1782a8dcb4fccb0e090fa1f6147 (patch) | |
tree | 753bf5db2da90500d5c5290302ebda8083f94562 /keystore/java/android/security/KeyStoreSecurityLevel.java | |
parent | 49467f1cdf29975f88d5f47bbf7e321d0385d1fc (diff) | |
parent | f4c64ad3e20e635008e9614d4e7c65b0aeaf2b10 (diff) |
Merge "Keystore 2.0 SPI: Add back-off hint to BackendBusyException."
Diffstat (limited to 'keystore/java/android/security/KeyStoreSecurityLevel.java')
-rw-r--r-- | keystore/java/android/security/KeyStoreSecurityLevel.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/keystore/java/android/security/KeyStoreSecurityLevel.java b/keystore/java/android/security/KeyStoreSecurityLevel.java index bc669bae056b..372add9b7ecb 100644 --- a/keystore/java/android/security/KeyStoreSecurityLevel.java +++ b/keystore/java/android/security/KeyStoreSecurityLevel.java @@ -96,20 +96,21 @@ public class KeyStoreSecurityLevel { } catch (ServiceSpecificException e) { switch (e.errorCode) { case ResponseCode.BACKEND_BUSY: { + long backOffHint = (long) (Math.random() * 80 + 20); if (CompatChanges.isChangeEnabled( KeyStore2.KEYSTORE_OPERATION_CREATION_MAY_FAIL)) { // Starting with Android S we inform the caller about the // backend being busy. - throw new BackendBusyException(); + throw new BackendBusyException(backOffHint); } else { // Before Android S operation creation must always succeed. So we // just have to retry. We do so with a randomized back-off between - // 50 and 250ms. + // 20 and 100ms. // It is a little awkward that we cannot break out of this loop // by interrupting this thread. But that is the expected behavior. // There is some comfort in the fact that interrupting a thread // also does not unblock a thread waiting for a binder transaction. - interruptedPreservingSleep((long) (Math.random() * 200 + 50)); + interruptedPreservingSleep(backOffHint); } break; } |