traced: Allow statsd more concurrent sessions
Bug: b/155064689
Change-Id: Icfc518a28aa5e81464f9130a8f987271fbc8458b
diff --git a/src/tracing/core/tracing_service_impl.cc b/src/tracing/core/tracing_service_impl.cc
index edba84c..2a0a045 100644
--- a/src/tracing/core/tracing_service_impl.cc
+++ b/src/tracing/core/tracing_service_impl.cc
@@ -89,6 +89,7 @@
constexpr int kDefaultWriteIntoFilePeriodMs = 5000;
constexpr int kMaxConcurrentTracingSessions = 15;
constexpr int kMaxConcurrentTracingSessionsPerUid = 5;
+constexpr int kMaxConcurrentTracingSessionsForStatsdUid = 10;
constexpr int64_t kMinSecondsBetweenTracesGuardrail = 5 * 60;
constexpr uint32_t kMillisPerHour = 3600000;
@@ -591,9 +592,15 @@
[consumer](const decltype(tracing_sessions_)::value_type& s) {
return s.second.consumer_uid == consumer->uid_;
});
- if (sessions_for_uid >= kMaxConcurrentTracingSessionsPerUid) {
- PERFETTO_ELOG("Too many concurrent tracing sesions (%ld) for uid %d",
- sessions_for_uid, static_cast<int>(consumer->uid_));
+
+ int per_uid_limit = kMaxConcurrentTracingSessionsPerUid;
+ if (consumer->uid_ == 1066 /* AID_STATSD*/) {
+ per_uid_limit = kMaxConcurrentTracingSessionsForStatsdUid;
+ }
+ if (sessions_for_uid >= per_uid_limit) {
+ PERFETTO_ELOG(
+ "Too many concurrent tracing sesions (%ld) for uid %d limit is %d",
+ sessions_for_uid, static_cast<int>(consumer->uid_), per_uid_limit);
return false;
}