Merge "Fix deadlock caused by clearAllBackoffs in SSE" into lmp-dev

This commit is contained in:
Matthew Williams
2014-09-30 03:09:09 +00:00
committed by Android (Google) Code Review
2 changed files with 5 additions and 5 deletions

View File

@@ -311,7 +311,9 @@ public class SyncManager {
if (Log.isLoggable(TAG, Log.VERBOSE)) { if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Reconnection detected: clearing all backoffs"); Log.v(TAG, "Reconnection detected: clearing all backoffs");
} }
mSyncStorageEngine.clearAllBackoffs(mSyncQueue); synchronized (mSyncQueue) {
mSyncStorageEngine.clearAllBackoffsLocked(mSyncQueue);
}
} }
sendCheckAlarmsMessage(); sendCheckAlarmsMessage();
} }

View File

@@ -834,17 +834,16 @@ public class SyncStorageEngine extends Handler {
return changed; return changed;
} }
public void clearAllBackoffs(SyncQueue syncQueue) { public void clearAllBackoffsLocked(SyncQueue syncQueue) {
boolean changed = false; boolean changed = false;
synchronized (mAuthorities) { synchronized (mAuthorities) {
synchronized (syncQueue) {
// Clear backoff for all sync adapters. // Clear backoff for all sync adapters.
for (AccountInfo accountInfo : mAccounts.values()) { for (AccountInfo accountInfo : mAccounts.values()) {
for (AuthorityInfo authorityInfo : accountInfo.authorities.values()) { for (AuthorityInfo authorityInfo : accountInfo.authorities.values()) {
if (authorityInfo.backoffTime != NOT_IN_BACKOFF_MODE if (authorityInfo.backoffTime != NOT_IN_BACKOFF_MODE
|| authorityInfo.backoffDelay != NOT_IN_BACKOFF_MODE) { || authorityInfo.backoffDelay != NOT_IN_BACKOFF_MODE) {
if (Log.isLoggable(TAG, Log.VERBOSE)) { if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "clearAllBackoffs:" Log.v(TAG, "clearAllBackoffsLocked:"
+ " authority:" + authorityInfo.target + " authority:" + authorityInfo.target
+ " account:" + accountInfo.accountAndUser.account.name + " account:" + accountInfo.accountAndUser.account.name
+ " user:" + accountInfo.accountAndUser.userId + " user:" + accountInfo.accountAndUser.userId
@@ -868,7 +867,6 @@ public class SyncStorageEngine extends Handler {
authorityInfo.backoffDelay = NOT_IN_BACKOFF_MODE; authorityInfo.backoffDelay = NOT_IN_BACKOFF_MODE;
} }
} }
}
syncQueue.clearBackoffs(); syncQueue.clearBackoffs();
} }
} }