Log when sync exemptions occur.

Bug: 226657057
Test: statsd_testdrive 468
Change-Id: Ib5edb391fc545b7eb540a67f319c0e74b756bb08
Merged-In: Ib5edb391fc545b7eb540a67f319c0e74b756bb08
(cherry picked from commit dd6f2bb85e)
This commit is contained in:
Varun Shah
2022-05-12 14:14:51 -07:00
parent 5f5aa7e1ef
commit 1bf4993a07

View File

@@ -78,6 +78,7 @@ import com.android.internal.os.BackgroundThread;
import com.android.internal.os.BinderDeathDispatcher; import com.android.internal.os.BinderDeathDispatcher;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils; import com.android.internal.util.DumpUtils;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter;
import com.android.server.LocalServices; import com.android.server.LocalServices;
import com.android.server.SystemService; import com.android.server.SystemService;
@@ -1542,11 +1543,62 @@ public final class ContentService extends IContentService.Stub {
return ContentResolver.SYNC_EXEMPTION_PROMOTE_BUCKET_WITH_TEMP; return ContentResolver.SYNC_EXEMPTION_PROMOTE_BUCKET_WITH_TEMP;
} }
if (procState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND || isUidActive) { if (procState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND || isUidActive) {
FrameworkStatsLog.write(FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED,
callingUid, getProcStateForStatsd(procState), isUidActive);
return ContentResolver.SYNC_EXEMPTION_PROMOTE_BUCKET; return ContentResolver.SYNC_EXEMPTION_PROMOTE_BUCKET;
} }
return ContentResolver.SYNC_EXEMPTION_NONE; return ContentResolver.SYNC_EXEMPTION_NONE;
} }
private int getProcStateForStatsd(int procState) {
switch (procState) {
case ActivityManager.PROCESS_STATE_UNKNOWN:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__UNKNOWN;
case ActivityManager.PROCESS_STATE_PERSISTENT:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__PERSISTENT;
case ActivityManager.PROCESS_STATE_PERSISTENT_UI:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__PERSISTENT_UI;
case ActivityManager.PROCESS_STATE_TOP:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__TOP;
case ActivityManager.PROCESS_STATE_BOUND_TOP:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__BOUND_TOP;
case ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__FOREGROUND_SERVICE;
case ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE:
return FrameworkStatsLog
.SYNC_EXEMPTION_OCCURRED__PROC_STATE__BOUND_FOREGROUND_SERVICE;
case ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__IMPORTANT_FOREGROUND;
case ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__IMPORTANT_BACKGROUND;
case ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__TRANSIENT_BACKGROUND;
case ActivityManager.PROCESS_STATE_BACKUP:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__BACKUP;
case ActivityManager.PROCESS_STATE_SERVICE:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__SERVICE;
case ActivityManager.PROCESS_STATE_RECEIVER:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__RECEIVER;
case ActivityManager.PROCESS_STATE_TOP_SLEEPING:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__TOP_SLEEPING;
case ActivityManager.PROCESS_STATE_HEAVY_WEIGHT:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__HEAVY_WEIGHT;
case ActivityManager.PROCESS_STATE_LAST_ACTIVITY:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__LAST_ACTIVITY;
case ActivityManager.PROCESS_STATE_CACHED_ACTIVITY:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__CACHED_ACTIVITY;
case ActivityManager.PROCESS_STATE_CACHED_ACTIVITY_CLIENT:
return FrameworkStatsLog
.SYNC_EXEMPTION_OCCURRED__PROC_STATE__CACHED_ACTIVITY_CLIENT;
case ActivityManager.PROCESS_STATE_CACHED_RECENT:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__CACHED_RECENT;
case ActivityManager.PROCESS_STATE_CACHED_EMPTY:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__CACHED_EMPTY;
default:
return FrameworkStatsLog.SYNC_EXEMPTION_OCCURRED__PROC_STATE__UNKNOWN;
}
}
/** {@hide} */ /** {@hide} */
@VisibleForTesting @VisibleForTesting
public static final class ObserverNode { public static final class ObserverNode {