Loading services/core/java/com/android/server/content/SyncLogger.java +19 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.content; import android.accounts.Account; import android.app.job.JobParameters; import android.os.Build; import android.os.Environment; Loading @@ -31,6 +32,8 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IntPair; import com.android.server.IoThread; import com.android.server.content.SyncManager.ActiveSyncContext; import com.android.server.content.SyncStorageEngine.EndPoint; import libcore.io.IoUtils; Loading Loading @@ -309,4 +312,20 @@ public class SyncLogger { } } } static String logSafe(Account account) { return account == null ? "[null]" : account.toSafeString(); } static String logSafe(EndPoint endPoint) { return endPoint == null ? "[null]" : endPoint.toSafeString(); } static String logSafe(SyncOperation operation) { return operation == null ? "[null]" : operation.toSafeString(); } static String logSafe(ActiveSyncContext asc) { return asc == null ? "[null]" : asc.toSafeString(); } } services/core/java/com/android/server/content/SyncManager.java +34 −25 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.content; import static com.android.server.content.SyncLogger.logSafe; import android.accounts.Account; import android.accounts.AccountAndUser; import android.accounts.AccountManager; Loading Loading @@ -1140,7 +1142,7 @@ public class SyncManager { /* ignore - local call */ } if (checkAccountAccess && !canAccessAccount(account, owningPackage, owningUid)) { Log.w(TAG, "Access to " + account + " denied for package " Log.w(TAG, "Access to " + logSafe(account) + " denied for package " + owningPackage + " in UID " + syncAdapterInfo.uid); return AuthorityInfo.SYNCABLE_NO_ACCOUNT_ACCESS; } Loading Loading @@ -1474,7 +1476,8 @@ public class SyncManager { if (!syncOperation.ignoreBackoff()) { Pair<Long, Long> backoff = mSyncStorageEngine.getBackoff(syncOperation.target); if (backoff == null) { Slog.e(TAG, "Couldn't find backoff values for " + syncOperation.target); Slog.e(TAG, "Couldn't find backoff values for " + logSafe(syncOperation.target)); backoff = new Pair<Long, Long>(SyncStorageEngine.NOT_IN_BACKOFF_MODE, SyncStorageEngine.NOT_IN_BACKOFF_MODE); } Loading Loading @@ -1745,8 +1748,8 @@ public class SyncManager { scheduleSyncOperationH(operation); } else { // Otherwise do not reschedule. Log.d(TAG, "not retrying sync operation because the error is a hard error: " + operation); Log.e(TAG, "not retrying sync operation because the error is a hard error: " + logSafe(operation)); } } Loading Loading @@ -1881,11 +1884,12 @@ public class SyncManager { sendSyncFinishedOrCanceledMessage(this, result); } public void toString(StringBuilder sb) { public void toString(StringBuilder sb, boolean logSafe) { sb.append("startTime ").append(mStartTime) .append(", mTimeoutStartTime ").append(mTimeoutStartTime) .append(", mHistoryRowId ").append(mHistoryRowId) .append(", syncOperation ").append(mSyncOperation); .append(", syncOperation ").append( logSafe ? logSafe(mSyncOperation) : mSyncOperation); } public void onServiceConnected(ComponentName name, IBinder service) { Loading Loading @@ -1947,7 +1951,13 @@ public class SyncManager { public String toString() { StringBuilder sb = new StringBuilder(); toString(sb); toString(sb, false); return sb.toString(); } public String toSafeString() { StringBuilder sb = new StringBuilder(); toString(sb, true); return sb.toString(); } Loading Loading @@ -2036,7 +2046,7 @@ public class SyncManager { int count = 0; for (SyncOperation op: pendingSyncs) { if (!op.isPeriodic) { pw.println(op.dump(null, false, buckets)); pw.println(op.dump(null, false, buckets, /*logSafe=*/ false)); count++; } } Loading @@ -2053,7 +2063,7 @@ public class SyncManager { int count = 0; for (SyncOperation op: pendingSyncs) { if (op.isPeriodic) { pw.println(op.dump(null, false, buckets)); pw.println(op.dump(null, false, buckets, /*logSafe=*/ false)); count++; } } Loading Loading @@ -2186,7 +2196,7 @@ public class SyncManager { sb.setLength(0); pw.print(formatDurationHMS(sb, durationInSeconds)); pw.print(" - "); pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets)); pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets, /*logSafe=*/ false)); pw.println(); } pw.println(); Loading Loading @@ -2974,7 +2984,7 @@ public class SyncManager { case SyncHandler.MESSAGE_CANCEL: SyncStorageEngine.EndPoint endpoint = (SyncStorageEngine.EndPoint) msg.obj; Bundle extras = msg.peekData(); if (Log.isLoggable(TAG, Log.DEBUG)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_CANCEL: " + endpoint + " bundle: " + extras); } Loading @@ -2985,9 +2995,11 @@ public class SyncManager { SyncFinishedOrCancelledMessagePayload payload = (SyncFinishedOrCancelledMessagePayload) msg.obj; if (!isSyncStillActiveH(payload.activeSyncContext)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: dropping since the " + "sync is no longer active: " + payload.activeSyncContext); } break; } if (isLoggable) { Loading @@ -3002,7 +3014,7 @@ public class SyncManager { case SyncHandler.MESSAGE_SERVICE_CONNECTED: { ServiceConnectionData msgData = (ServiceConnectionData) msg.obj; if (Log.isLoggable(TAG, Log.VERBOSE)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_CONNECTED: " + msgData.activeSyncContext); } Loading @@ -3018,7 +3030,7 @@ public class SyncManager { case SyncHandler.MESSAGE_SERVICE_DISCONNECTED: { final ActiveSyncContext currentSyncContext = ((ServiceConnectionData) msg.obj).activeSyncContext; if (Log.isLoggable(TAG, Log.VERBOSE)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_DISCONNECTED: " + currentSyncContext); } Loading Loading @@ -3053,7 +3065,7 @@ public class SyncManager { case SyncHandler.MESSAGE_MONITOR_SYNC: ActiveSyncContext monitoredSyncContext = (ActiveSyncContext) msg.obj; if (Log.isLoggable(TAG, Log.DEBUG)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_MONITOR_SYNC: " + monitoredSyncContext.mSyncOperation.target); } Loading @@ -3061,7 +3073,7 @@ public class SyncManager { if (isSyncNotUsingNetworkH(monitoredSyncContext)) { Log.w(TAG, String.format( "Detected sync making no progress for %s. cancelling.", monitoredSyncContext)); logSafe(monitoredSyncContext))); SyncJobService.callJobFinished( monitoredSyncContext.mSyncOperation.jobId, false, "no network activity"); Loading Loading @@ -3558,7 +3570,8 @@ public class SyncManager { } catch (RuntimeException exc) { mLogger.log("Sync failed with RuntimeException: ", exc.toString()); closeActiveSyncContext(activeSyncContext); Slog.e(TAG, "Caught RuntimeException while starting the sync " + syncOperation, exc); Slog.e(TAG, "Caught RuntimeException while starting the sync " + logSafe(syncOperation), exc); } } Loading Loading @@ -3658,7 +3671,8 @@ public class SyncManager { reschedulePeriodicSyncH(syncOperation); } } else { Log.w(TAG, "failed sync operation " + syncOperation + ", " + syncResult); Log.w(TAG, "failed sync operation " + logSafe(syncOperation) + ", " + syncResult); syncOperation.retries++; if (syncOperation.retries > mConstants.getMaxRetriesWithAppStandbyExemption()) { Loading Loading @@ -4042,11 +4056,6 @@ public class SyncManager { getJobScheduler().cancel(op.jobId); } private void wtfWithLog(String message) { Slog.wtf(TAG, message); mLogger.log("WTF: ", message); } public void resetTodayStats() { mSyncStorageEngine.resetTodayStats(/*force=*/ true); } Loading services/core/java/com/android/server/content/SyncOperation.java +8 −3 Original line number Diff line number Diff line Loading @@ -363,14 +363,19 @@ public class SyncOperation { @Override public String toString() { return dump(null, true, null); return dump(null, true, null, false); } String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates) { public String toSafeString() { return dump(null, true, null, true); } String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates, boolean logSafe) { StringBuilder sb = new StringBuilder(); sb.append("JobId=").append(jobId) .append(" ") .append(target.account.name) .append(logSafe ? "***" : target.account.name) .append("/") .append(target.account.type) .append(" u") Loading services/core/java/com/android/server/content/SyncStorageEngine.java +13 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.content; import static com.android.server.content.SyncLogger.logSafe; import android.accounts.Account; import android.accounts.AccountAndUser; import android.accounts.AccountManager; Loading Loading @@ -225,6 +227,15 @@ public class SyncStorageEngine { sb.append(":u" + userId); return sb.toString(); } public String toSafeString() { StringBuilder sb = new StringBuilder(); sb.append(account == null ? "ALL ACCS" : logSafe(account)) .append("/") .append(provider == null ? "ALL PDRS" : provider); sb.append(":u" + userId); return sb.toString(); } } public static class AuthorityInfo { Loading Loading @@ -1861,8 +1872,8 @@ public class SyncStorageEngine { } } else { Slog.w(TAG, "Failure adding authority: account=" + accountName + " auth=" + authorityName Slog.w(TAG, "Failure adding authority:" + " auth=" + authorityName + " enabled=" + enabled + " syncable=" + syncable); } Loading Loading
services/core/java/com/android/server/content/SyncLogger.java +19 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.content; import android.accounts.Account; import android.app.job.JobParameters; import android.os.Build; import android.os.Environment; Loading @@ -31,6 +32,8 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IntPair; import com.android.server.IoThread; import com.android.server.content.SyncManager.ActiveSyncContext; import com.android.server.content.SyncStorageEngine.EndPoint; import libcore.io.IoUtils; Loading Loading @@ -309,4 +312,20 @@ public class SyncLogger { } } } static String logSafe(Account account) { return account == null ? "[null]" : account.toSafeString(); } static String logSafe(EndPoint endPoint) { return endPoint == null ? "[null]" : endPoint.toSafeString(); } static String logSafe(SyncOperation operation) { return operation == null ? "[null]" : operation.toSafeString(); } static String logSafe(ActiveSyncContext asc) { return asc == null ? "[null]" : asc.toSafeString(); } }
services/core/java/com/android/server/content/SyncManager.java +34 −25 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.content; import static com.android.server.content.SyncLogger.logSafe; import android.accounts.Account; import android.accounts.AccountAndUser; import android.accounts.AccountManager; Loading Loading @@ -1140,7 +1142,7 @@ public class SyncManager { /* ignore - local call */ } if (checkAccountAccess && !canAccessAccount(account, owningPackage, owningUid)) { Log.w(TAG, "Access to " + account + " denied for package " Log.w(TAG, "Access to " + logSafe(account) + " denied for package " + owningPackage + " in UID " + syncAdapterInfo.uid); return AuthorityInfo.SYNCABLE_NO_ACCOUNT_ACCESS; } Loading Loading @@ -1474,7 +1476,8 @@ public class SyncManager { if (!syncOperation.ignoreBackoff()) { Pair<Long, Long> backoff = mSyncStorageEngine.getBackoff(syncOperation.target); if (backoff == null) { Slog.e(TAG, "Couldn't find backoff values for " + syncOperation.target); Slog.e(TAG, "Couldn't find backoff values for " + logSafe(syncOperation.target)); backoff = new Pair<Long, Long>(SyncStorageEngine.NOT_IN_BACKOFF_MODE, SyncStorageEngine.NOT_IN_BACKOFF_MODE); } Loading Loading @@ -1745,8 +1748,8 @@ public class SyncManager { scheduleSyncOperationH(operation); } else { // Otherwise do not reschedule. Log.d(TAG, "not retrying sync operation because the error is a hard error: " + operation); Log.e(TAG, "not retrying sync operation because the error is a hard error: " + logSafe(operation)); } } Loading Loading @@ -1881,11 +1884,12 @@ public class SyncManager { sendSyncFinishedOrCanceledMessage(this, result); } public void toString(StringBuilder sb) { public void toString(StringBuilder sb, boolean logSafe) { sb.append("startTime ").append(mStartTime) .append(", mTimeoutStartTime ").append(mTimeoutStartTime) .append(", mHistoryRowId ").append(mHistoryRowId) .append(", syncOperation ").append(mSyncOperation); .append(", syncOperation ").append( logSafe ? logSafe(mSyncOperation) : mSyncOperation); } public void onServiceConnected(ComponentName name, IBinder service) { Loading Loading @@ -1947,7 +1951,13 @@ public class SyncManager { public String toString() { StringBuilder sb = new StringBuilder(); toString(sb); toString(sb, false); return sb.toString(); } public String toSafeString() { StringBuilder sb = new StringBuilder(); toString(sb, true); return sb.toString(); } Loading Loading @@ -2036,7 +2046,7 @@ public class SyncManager { int count = 0; for (SyncOperation op: pendingSyncs) { if (!op.isPeriodic) { pw.println(op.dump(null, false, buckets)); pw.println(op.dump(null, false, buckets, /*logSafe=*/ false)); count++; } } Loading @@ -2053,7 +2063,7 @@ public class SyncManager { int count = 0; for (SyncOperation op: pendingSyncs) { if (op.isPeriodic) { pw.println(op.dump(null, false, buckets)); pw.println(op.dump(null, false, buckets, /*logSafe=*/ false)); count++; } } Loading Loading @@ -2186,7 +2196,7 @@ public class SyncManager { sb.setLength(0); pw.print(formatDurationHMS(sb, durationInSeconds)); pw.print(" - "); pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets)); pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets, /*logSafe=*/ false)); pw.println(); } pw.println(); Loading Loading @@ -2974,7 +2984,7 @@ public class SyncManager { case SyncHandler.MESSAGE_CANCEL: SyncStorageEngine.EndPoint endpoint = (SyncStorageEngine.EndPoint) msg.obj; Bundle extras = msg.peekData(); if (Log.isLoggable(TAG, Log.DEBUG)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_CANCEL: " + endpoint + " bundle: " + extras); } Loading @@ -2985,9 +2995,11 @@ public class SyncManager { SyncFinishedOrCancelledMessagePayload payload = (SyncFinishedOrCancelledMessagePayload) msg.obj; if (!isSyncStillActiveH(payload.activeSyncContext)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: dropping since the " + "sync is no longer active: " + payload.activeSyncContext); } break; } if (isLoggable) { Loading @@ -3002,7 +3014,7 @@ public class SyncManager { case SyncHandler.MESSAGE_SERVICE_CONNECTED: { ServiceConnectionData msgData = (ServiceConnectionData) msg.obj; if (Log.isLoggable(TAG, Log.VERBOSE)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_CONNECTED: " + msgData.activeSyncContext); } Loading @@ -3018,7 +3030,7 @@ public class SyncManager { case SyncHandler.MESSAGE_SERVICE_DISCONNECTED: { final ActiveSyncContext currentSyncContext = ((ServiceConnectionData) msg.obj).activeSyncContext; if (Log.isLoggable(TAG, Log.VERBOSE)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_DISCONNECTED: " + currentSyncContext); } Loading Loading @@ -3053,7 +3065,7 @@ public class SyncManager { case SyncHandler.MESSAGE_MONITOR_SYNC: ActiveSyncContext monitoredSyncContext = (ActiveSyncContext) msg.obj; if (Log.isLoggable(TAG, Log.DEBUG)) { if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_MONITOR_SYNC: " + monitoredSyncContext.mSyncOperation.target); } Loading @@ -3061,7 +3073,7 @@ public class SyncManager { if (isSyncNotUsingNetworkH(monitoredSyncContext)) { Log.w(TAG, String.format( "Detected sync making no progress for %s. cancelling.", monitoredSyncContext)); logSafe(monitoredSyncContext))); SyncJobService.callJobFinished( monitoredSyncContext.mSyncOperation.jobId, false, "no network activity"); Loading Loading @@ -3558,7 +3570,8 @@ public class SyncManager { } catch (RuntimeException exc) { mLogger.log("Sync failed with RuntimeException: ", exc.toString()); closeActiveSyncContext(activeSyncContext); Slog.e(TAG, "Caught RuntimeException while starting the sync " + syncOperation, exc); Slog.e(TAG, "Caught RuntimeException while starting the sync " + logSafe(syncOperation), exc); } } Loading Loading @@ -3658,7 +3671,8 @@ public class SyncManager { reschedulePeriodicSyncH(syncOperation); } } else { Log.w(TAG, "failed sync operation " + syncOperation + ", " + syncResult); Log.w(TAG, "failed sync operation " + logSafe(syncOperation) + ", " + syncResult); syncOperation.retries++; if (syncOperation.retries > mConstants.getMaxRetriesWithAppStandbyExemption()) { Loading Loading @@ -4042,11 +4056,6 @@ public class SyncManager { getJobScheduler().cancel(op.jobId); } private void wtfWithLog(String message) { Slog.wtf(TAG, message); mLogger.log("WTF: ", message); } public void resetTodayStats() { mSyncStorageEngine.resetTodayStats(/*force=*/ true); } Loading
services/core/java/com/android/server/content/SyncOperation.java +8 −3 Original line number Diff line number Diff line Loading @@ -363,14 +363,19 @@ public class SyncOperation { @Override public String toString() { return dump(null, true, null); return dump(null, true, null, false); } String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates) { public String toSafeString() { return dump(null, true, null, true); } String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates, boolean logSafe) { StringBuilder sb = new StringBuilder(); sb.append("JobId=").append(jobId) .append(" ") .append(target.account.name) .append(logSafe ? "***" : target.account.name) .append("/") .append(target.account.type) .append(" u") Loading
services/core/java/com/android/server/content/SyncStorageEngine.java +13 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.content; import static com.android.server.content.SyncLogger.logSafe; import android.accounts.Account; import android.accounts.AccountAndUser; import android.accounts.AccountManager; Loading Loading @@ -225,6 +227,15 @@ public class SyncStorageEngine { sb.append(":u" + userId); return sb.toString(); } public String toSafeString() { StringBuilder sb = new StringBuilder(); sb.append(account == null ? "ALL ACCS" : logSafe(account)) .append("/") .append(provider == null ? "ALL PDRS" : provider); sb.append(":u" + userId); return sb.toString(); } } public static class AuthorityInfo { Loading Loading @@ -1861,8 +1872,8 @@ public class SyncStorageEngine { } } else { Slog.w(TAG, "Failure adding authority: account=" + accountName + " auth=" + authorityName Slog.w(TAG, "Failure adding authority:" + " auth=" + authorityName + " enabled=" + enabled + " syncable=" + syncable); } Loading