summaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
author Xin Guan <guanxin@google.com> 2024-12-05 16:12:29 +0000
committer Xin Guan <guanxin@google.com> 2024-12-10 23:40:33 +0000
commit0fc16f3e7263f85bf570058c98cb57aa645676e7 (patch)
tree1d4b02f7cfa7ef06d58ef8cf454ab951c0ed2fb8 /apex
parent023c47db32ee334041a66cc107154d5f7a863637 (diff)
Count proxy jobs toward scheduling limit.
Limit schedule calls for persisted proxy jobs. Bug: 377912323 Bug: 299930087 Test: atest FrameworksMockingServicesTests:com.android.server.job.JobSchedulerServiceTest Flag: com.android.server.job.enforce_schedule_limit_to_proxy_jobs Change-Id: I4ebcdd6ee299347d7d5cf6e228ba441b73db7481
Diffstat (limited to 'apex')
-rw-r--r--apex/jobscheduler/service/aconfig/job.aconfig10
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java5
2 files changed, 13 insertions, 2 deletions
diff --git a/apex/jobscheduler/service/aconfig/job.aconfig b/apex/jobscheduler/service/aconfig/job.aconfig
index fe95a59622f4..86ed06bf4e3d 100644
--- a/apex/jobscheduler/service/aconfig/job.aconfig
+++ b/apex/jobscheduler/service/aconfig/job.aconfig
@@ -95,4 +95,14 @@ flag {
namespace: "backstage_power"
description: "Apply the quota policy to jobs started when the app was in TOP state"
bug: "374323858"
+}
+
+flag {
+ name: "enforce_schedule_limit_to_proxy_jobs"
+ namespace: "backstage_power"
+ description: "Limit the schedule calls towards the persisted proxy jobs"
+ bug: "377912323"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
} \ No newline at end of file
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index 8fad79a845b4..0b884057ea19 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -1718,8 +1718,9 @@ public class JobSchedulerService extends com.android.server.SystemService
int userId, @Nullable String namespace, String tag) {
// Rate limit excessive schedule() calls.
final String servicePkg = job.getService().getPackageName();
- if (job.isPersisted() && (packageName == null || packageName.equals(servicePkg))) {
- // Only limit schedule calls for persisted jobs scheduled by the app itself.
+ if (job.isPersisted() && (Flags.enforceScheduleLimitToProxyJobs()
+ || (packageName == null || packageName.equals(servicePkg)))) {
+ // limit excessive schedule calls for persisted jobs.
final String pkg = packageName == null ? servicePkg : packageName;
if (!mQuotaTracker.isWithinQuota(userId, pkg, QUOTA_TRACKER_SCHEDULE_PERSISTED_TAG)) {
if (mQuotaTracker.isWithinQuota(userId, pkg, QUOTA_TRACKER_SCHEDULE_LOGGED)) {