diff options
| author | 2014-09-28 20:42:23 -0700 | |
|---|---|---|
| committer | 2014-09-28 20:42:23 -0700 | |
| commit | 119aac93f8d757ff464dd4d1135ffcf37f7cda02 (patch) | |
| tree | dc48fde756aaa5d09100a554495f449ec24556ca | |
| parent | 485f2095f8ba695b88331c01a2de468b5616a5d7 (diff) | |
Fix deadlock caused by clearAllBackoffs in SSE
BUG: 17420163
This CL is a copy of ag/359292
That commit was lost, see the bug for more details.
Change-Id: I68747d447f8c95e6b5022f9bc8cbab677e0c3d4e
| -rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/content/SyncStorageEngine.java | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index 9292d459b02a..adc96f74e4dd 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -311,7 +311,9 @@ public class SyncManager { if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Reconnection detected: clearing all backoffs"); } - mSyncStorageEngine.clearAllBackoffs(mSyncQueue); + synchronized (mSyncQueue) { + mSyncStorageEngine.clearAllBackoffsLocked(mSyncQueue); + } } sendCheckAlarmsMessage(); } diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java index 94993707b69a..0d5f240daaee 100644 --- a/services/core/java/com/android/server/content/SyncStorageEngine.java +++ b/services/core/java/com/android/server/content/SyncStorageEngine.java @@ -834,17 +834,16 @@ public class SyncStorageEngine extends Handler { return changed; } - public void clearAllBackoffs(SyncQueue syncQueue) { + public void clearAllBackoffsLocked(SyncQueue syncQueue) { boolean changed = false; synchronized (mAuthorities) { - synchronized (syncQueue) { // Clear backoff for all sync adapters. for (AccountInfo accountInfo : mAccounts.values()) { for (AuthorityInfo authorityInfo : accountInfo.authorities.values()) { if (authorityInfo.backoffTime != NOT_IN_BACKOFF_MODE || authorityInfo.backoffDelay != NOT_IN_BACKOFF_MODE) { if (Log.isLoggable(TAG, Log.VERBOSE)) { - Log.v(TAG, "clearAllBackoffs:" + Log.v(TAG, "clearAllBackoffsLocked:" + " authority:" + authorityInfo.target + " account:" + accountInfo.accountAndUser.account.name + " user:" + accountInfo.accountAndUser.userId @@ -868,7 +867,6 @@ public class SyncStorageEngine extends Handler { authorityInfo.backoffDelay = NOT_IN_BACKOFF_MODE; } } - } syncQueue.clearBackoffs(); } } |