Commit Graph

36 Commits

Author SHA1 Message Date
Muhammad Qureshi
351e40fb8d Increase size limit for pulled StatsEvent.
Increase StatsEvent max byte size to 50 KB when not using pooled buffer.

- Set the default max size to 50 KB
- The starting buffer size is still ~4 KB for pushed and pulled events.
- If a write would exceed the buffer bounds, double buffer size until
write fits or 50 KB limit is exceeded in which case the overflow bit is set to true.
- If usePooledBuffer() is called, max size is set to ~4 KB but buffer
isn't resized. And if the current payload exceeds this limit, set
overflow bit to true.
- Only "recycle" Buffer object if its size is <= ~4 KB.

Bug: 158214941
Test: atest FrameworkStatsdTest
Change-Id: I9b6f73688b0bccb5a70f4ef51750464ec9c87fb9
2020-06-04 14:02:24 -07:00
Tej Singh
058db967d9 Change package of StatsdStatsLog
Change package of StatsdStatsLog from com.android.internal.util to
com.android.internal.statsd

Test: atest GtsStatsdHostTestCases
Bug: 157649935
Change-Id: Iee2af03c950b7cc054f7d77e721694a7f429ae9d
2020-06-01 19:01:43 -07:00
Tej Singh
273c839a06 Merge "Retry pullfinish with empty payload if call fails" into rvc-dev 2020-06-01 19:14:10 +00:00
Tej Singh
73bad98e46 Decrease default pull timeout to 2 seconds.
This can result in more pull failures, but can prohibit slow pullers
from slowing down statsd.

Test: atest GtsStatsdHostTestCases
Test: atest statsd_test
Test: atest FrameworkStatsdTest
Bug: 154056912
Change-Id: Ie30bd3584d808bb11aaaf0fe2057c9adfb198644
2020-05-29 23:37:03 +00:00
Tej Singh
2330e9be15 Retry pullfinish with empty payload if call fails
If the first call for pullFinished fails, it is likely because the
transaction is too large. Currently, if this happens statsd will just
sleep until the timeout. With this change, the client will retry calling
pullFinish if the first attempt fails, but with an empty payload (and
with success = false) to cause the puller to fail fast, and so statsd
does not wait for the timeout.

Test: atest GtsStatsdHostTestCases
Bug: 157768117
Change-Id: I1af29b6c83039ab56ef847832a600d4afea34000
2020-05-29 15:19:48 -07:00
Tej Singh
baed5257ad Fix statsd NPE on setPullAtomCallback
Suspected root cause: if a process crashes right after calling
setPullAtomCallback, it's possible that oneway binder calls can queue
but do not execute before the process crashes. Then, when the process
crashes, nothing has a strong reference to the IPullAtomCallback, so
it gets deallocated. Then, when the oneway call actually executes, the
callback is null. This is being followed up in b/155793159

Regardless, statsd should handle null input properly.

Test: GTS test in ag/11348719 now passes
Test: atest GtsStatsdHostTestCases
Bug: 153822941
Change-Id: Ic6d415e10eca8d133290de80cb61e1634590ca6a
2020-05-05 14:51:57 -07:00
Jeffrey Huang
d8a7f947ba Remove IStatsd reference from StatsLog.java
Also remove sendAppBreadcrumb binder api because it's no longer used.

Bug: 154264326
Test: atest com.google.android.statsd.gts.StatsdHostTestCases
Change-Id: Ic51a057bb01a89a24337521a49c54a52e2073cd1
2020-04-21 15:04:28 -07:00
Jeffrey Huang
f3364db2d1 Merge "Remove Exception in getRegisteredExperimentIds" into rvc-dev 2020-04-01 17:58:45 +00:00
Jeffrey Huang
c43a267c4d Remove Exception in getRegisteredExperimentIds
This check was not useful since service can only be null if system
server is not running or the app does not have permissions to access
statsd. This check is not done anywhere else, so removing it for
consistency.

Bug: 150645647
Test: atest StatsdHostTestCases
Change-Id: I6465697f0157c5a9583025979c55cb2e3dc1ef84
2020-03-31 14:38:05 -07:00
Tej Singh
abc1b8de87 Guardrail for pull cooldown/timeout
Enforce a 1 second minimum cooldown and a 10 second maximum timeout on
pullers.

Test: bit statsd_test:*
Test: atest LibStatsPullTests
Test: atest GtsStatsdHostTestCases
Bug: 152543610
Change-Id: Ida0047235a7e56d7b700f1a7ab5cfbc2a147caeb
2020-03-30 22:26:46 -07:00
Muhammad Qureshi
027c823801 Merge "Allow annotations to be added to Atom Id" into rvc-dev 2020-03-24 18:09:21 +00:00
Muhammad Qureshi
4549e73445 Allow annotations to be added to Atom Id
Add atom-level annotations support in StatsEvent.java

setAtomId must be called right after StatsEvent.newBuilder().
Calling setAtomId out of order results in
ERROR_ATOM_ID_INVALID_POSITION.

Bug: 151158793
Test: atest FrameworkStatsdTest
Change-Id: Ib574f079227660193e12b3aa37136d36e154479a
2020-03-23 20:31:12 -07:00
Ruchir Rastogi
2ae454ddc7 Wrap StatsDimensionsValue over structured parcel
Reduces code complexity by leveraging the readFromParcel and
createFromParcel functions created in the autogenerated
StatsDimensionsValueParcel class.

Wrote a unit test that checks the conversion from a
StatsDimensionsValueParcel to a StatsDimensionsValue.

Test: atest FrameworkStatsdTests
Test: atest GtsStatsdHostTestCases
Bug: 149103391
Change-Id: I64850c6b962a68799d51a26138e95cb1e0c99aee
2020-03-23 10:49:59 -07:00
Tej Singh
72a70a8a3c Address Puller API Feedback
1. Rename registerPullAtomCallback to setPullAtomCallback
2. Rename unregisterPullAtomCallback to clearPullAtomCallback
3. Add getters to PullAtomMetadata
4. Change Ns to Millis (when I tried to make it Nanos, I received a
built time error saying to prefer millis unless we need the precision.
We do not need the precision, so I changed it).
5. Fix out of order params.

I did not change usePooledBuffer to setPooledBuffer because I think use
is more appropriate for our use case.

Test: make
Test: atest PullAtomMetadataTest
Test: atest GtsStatsdHostTestCases
Bug: 149475498

Change-Id: Ib07aa57a6e02c77917fe0e65a3d4a77c00ce8565
2020-03-05 16:43:02 -08:00
Jeffrey Huang
201c631992 Catch IllegalStateException in StatsManager
StatsManagerService throws IllegalStateException
when statsd is not available. This causes GMSCore to crash.

Bug: 149914783
Test: Manual, verify play store no longer crashes
Change-Id: I45cd679600ccfdb7977ecfd4437b62f56034fed2
2020-02-20 15:23:29 -08:00
TreeHugger Robot
650c6a454d Remove libstats_jni from the platform
As part of statsd becoming a mainline module in R,
libstats_jni needs to live in the apex.

Bug: 148620413
Test: m
Test: fastboot flashall

Change-Id: I22c2816c863e7a4462a79ac99238b06aca40a2d6
2020-02-14 14:49:33 -08:00
Makoto Onuki
553df30582 Finalize @SystemApi annotation for StatsFrameworkInitializer (retry)
Change-Id: I3c8bce84fbdbe4e65ec430eb5046a1a46cc6fbfb
Fix: 148225705
Test: build / treehugger
2020-02-11 16:26:18 -08:00
Makoto Onuki
6666041589 Merge "Revert "Finalize @SystemApi annotation for StatsFrameworkInitializer"" 2020-02-10 17:27:06 +00:00
Makoto Onuki
8f9c37006f Revert "Finalize @SystemApi annotation for StatsFrameworkInitializer"
This reverts commit d74a3b3ca7.

Reason for revert: Broke build(?)

Bug: 148225705


Change-Id: I46e4aec3385d178234d3ea609c190b14aca5c8a1
2020-02-10 17:24:09 +00:00
Makoto Onuki
ca53165d6e Merge "Finalize @SystemApi annotation for StatsFrameworkInitializer" 2020-02-10 16:18:31 +00:00
Muhammad Qureshi
133efaa22f ServiceManager --> StatsFrameworkInitializer
Bug: 149128236
Test: m
Change-Id: I6b506128b4990fa24d745da978608fe3d68a1d8f
2020-02-09 17:14:17 -08:00
Muhammad Qureshi
cefc882d9c FrameworkStatsLog --> StatsdStatsLog
Create a new StatsLog module for statsd apex

Bug: 149128236
Test: m
Change-Id: I48bc2b47c0fbcffd6a8ac646323cafb107358ec9
2020-02-09 17:14:17 -08:00
Muhammad Qureshi
0b04b0560f Remove more Slog usages in statsd apex
Slog.* --> Log.*

Bug: 149128236
Test: m
Change-Id: I926f292dd5562af132774670c35fe2ca4e853bf8
2020-02-09 11:05:47 -08:00
Howard Ro
763cb8f95c Merge "Add support for multi train logging" 2020-02-08 04:54:37 +00:00
Jonathan Nguyen
703c42f695 Add support for multi train logging
Test: atest GtsStatsdHostTestCases
Change-Id: I4ca7089347d6dfab8a33c07acd5ef9c252413ec9
2020-02-07 16:03:05 -08:00
Makoto Onuki
d74a3b3ca7 Finalize @SystemApi annotation for StatsFrameworkInitializer
Change-Id: I2a7f8fcecbd12da4d8244fd848dff53ba86d4e31
Fix: 148225705
Test: build / treehugger
2020-02-07 15:59:35 -08:00
Ruchir Rastogi
56da4c3862 Use StatsDimensionsValueParcel within statsd apex
Because statsd now uses StatsDimensionsValueParcel instead of
StatsDimensionsValue.h/c, statsd no longer has to depend on libservices.

Test: m -j
Test: atest StatsdHostTestCases#testBroadcastSubscriber
Bug: 148604617
Change-Id: I6d65383ccec99f4672d6575232981c0f6cc40fcf
2020-02-07 15:55:11 -08:00
TreeHugger Robot
4e9d6a1148 Merge "Move StatsLog.java to fw-statsd.jar" 2020-02-06 03:24:53 +00:00
Tej Singh
e86dab7a6a Move StatsLog.java to fw-statsd.jar
Test: atest GtsStatsdHostTestCases
Bug: 146578693
Change-Id: I7244c6099d16c5c7da14060a1a5fa0c866199754
2020-02-05 15:02:49 -08:00
Muhammad Qureshi
a1e47e9f2b Create REGISTER_STATS_PULL_ATOM permission
Create a permission to allow clients to register pull atom callbacks to
statsd. This permission should allow mainline modules and other platform
clients register puller callbacks, but is not intended for 3p apps.

Bug: 146462168
Test: atest CtsPermission2TestCases
Change-Id: Iea50d137e2cc9f34644c8aa9548a7445f5ec16b8
2020-02-05 14:42:15 -08:00
Tej Singh
8ffe1eae8b Move StatsDimensionsValue.java to statsd apex
Test: builds, boots
Bug: 146578788
Change-Id: Iaeb9eaf8c412964ccf57debca1445063e9120ef9
2020-02-03 19:03:44 -08:00
Jeffrey Huang
a85d8f95b4 Cleanup StatsPullAtomService
Move all variable declarations to top of file
Delete unused puller registrations
Migrate to new API

Test: m -j
Bug: 145565211
Change-Id: I03890e333dd179be3b8d075657cf84a2247a473c
2020-01-27 19:39:09 -08:00
Jeffrey Huang
f58800b66a Migrate away from using ServiceManager
Create a wrapper class to access binder objects
published by statsd mainline module

Bug: 147923515
Test: atest com.google.android.statsd.gts.StatsdHostTestCases
Change-Id: I9ea3677d88c790c856e4e89318ae2ce67ac7df1e
2020-01-23 15:47:08 -08:00
Jeffrey Huang
38330a0833 Migrate StatsManager to apex
Link frameworks-statsd.jar against framework-all
since it is currently infeasible to to link against stubs

Linking against stubs in frameworks/base cannot be done because
we still have StatsLog that calls StatsEvent.getBytes which
is a hidden API.

We can't move StatsLog to the apex because of hidden APIs in the
autogenerated code which is currently being migrated.

Test: m -j
Bug: 147923515
Change-Id: I0a59dce83a8075bdde3e72d1d8eceef2ed572791
2020-01-23 13:21:53 -08:00
Muhammad Qureshi
089d1bb28d StatsEvent @SystemApi
Make StatsEvent and StatsLog.write(StatsEvent) @SystemApi.

Bug: 146383532
Test: m

Change-Id: I15050734e757bdb622fb83e3ef244a6ebd26923b
2020-01-15 12:02:01 -08:00
Muhammad Qureshi
237c774468 Create framework-statsd
Create framework-statsd jar in statsd apex.
Move StatsEvent to framework-statsd.jar.
Right now, frameworks jar links against framework-statsd directly. This
should be changed to link against framework-statsd-stubs.

Bug: 145923096
Bug: 145923116
Bug: 142810493

Test: m
Test: flashes successfully
Test: adb shell cmd stats print-logs && adb logcat "*:S statsd:*"

Change-Id: Ife224abd5c9b9b0eeab681dc4b7f71c0bdb856b1
2019-12-16 10:17:03 -08:00