)]}'
{
  "log": [
    {
      "commit": "6ede28bcb972967c1934e26fa0513ea6001b4f98",
      "tree": "a38b0b1bca1d13fa2d9b6242eba852b5ded0082e",
      "parents": [
        "5c5fbf11596d926462e459657c2076787451b0c2"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Jan 29 17:06:54 2019 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Feb 12 19:28:26 2019 -0800"
      },
      "message": "Statsd sends active config broadcasts\n\nStatsd now sends active configs changed broadcasts when needed per uid.\nAlso made an adb command to help debug.\n\nMore gts tests and unit tests required, will follow.\nTest: GTS in topic\nBug: 123372077\nChange-Id: Ib079018ded85d002581ffc2ba1240138ce7a54e7\n"
    },
    {
      "commit": "a0c89dd5b6d575808edd6d4d619fcd1f18954c70",
      "tree": "39c0296430eff711b241dc71b75b0aae85733129",
      "parents": [
        "ec0cfcbafb370d50420aafb7df6e9b81a6880f4f"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Jan 25 16:39:18 2019 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Feb 11 14:24:03 2019 -0800"
      },
      "message": "Statsd Puller Callback Registration\n\nCreates a hidden api to register puller callbacks for vendor atoms.\n\nTest: manual local test\nTest: statsd unit tests\nBug: 119898637\nChange-Id: Id28817b8fc718e128adc4e1c6b2e997db84517f9\n"
    },
    {
      "commit": "c7939cba3d857b8688d79d5f4a6ba58920cedb1b",
      "tree": "6c9b0f13726e5d551378445e61762a057ed82eb4",
      "parents": [
        "d8a309221cb002ce1c87cedea274b34e38a90207"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Feb 04 17:25:45 2019 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Feb 06 09:54:38 2019 -0800"
      },
      "message": "Persist active metrics to disk and read back\n\nFor metric activation that spans across boots, we need to persist active\nmetrics onto disk upon shutdown and load them on boot.\n\nBug: 123904359\nTest: unit test\nChange-Id: I5a4142a42595c8c132175fb574c3aa2ad30dcac0\n"
    },
    {
      "commit": "2c9ef2a92e77b8075c123c326d6b8f1e91ff6393",
      "tree": "fbdb8abb10742934274a3fc769110b0cfbe7b710",
      "parents": [
        "85d9b31a13614c99146e8ebdae812054cac79c0a"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Jan 22 11:33:51 2019 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Jan 25 17:58:02 2019 -0800"
      },
      "message": "APIs for registering config activation broadcasts\n\nCreates a StatsManager API to register a pending intent that is invoked\nwhenever the active status of any of any config sent by that uid\nchanges.\n\nag/6112554 and further cls are needed to properly send back the pending\nintent.\n\nBug: 123372077\nTest: build success on blueline-eng. More thorough testing should be\ndone once ag/6112554 is submitted.\n\nChange-Id: I36985c9820d4e7ac178064924190af88ea822254\n"
    },
    {
      "commit": "58174daebdd884077ffcca2d75aa108f2328437a",
      "tree": "bc39b80a520010868994cd9bafa0a2fbf292927f",
      "parents": [
        "46f435ce970ddc9f9de2410827cb290b45b33ef1"
      ],
      "author": {
        "name": "Maggie White",
        "email": "maggiewhite@google.com",
        "time": "Fri Jan 18 15:23:35 2019 -0800"
      },
      "committer": {
        "name": "Maggie White",
        "email": "maggiewhite@google.com",
        "time": "Wed Jan 23 17:46:29 2019 -0800"
      },
      "message": "statsd implementation of vendor atom\n\nBug: 122541417\nTest: su 0 ./stats_client -v\nChange-Id: I2508f6206b36ffe94c87308ab63ae1577b4b67d0\nSigned-off-by: Maggie White \u003cmaggiewhite@google.com\u003e\n"
    },
    {
      "commit": "b8fd1e90f5a69316c34dd5197cc28fb21d3697f1",
      "tree": "b34cc439ac8cad6faac7a13df0dc398e2bc8a65c",
      "parents": [
        "e2c3e477d1f1b15141f3ffe17e4621b54f3f0b21"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri Jan 11 15:24:45 2019 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jan 24 09:12:38 2019 +0800"
      },
      "message": "statsd: implement Speech DSP stat report\n\nBug: 122719904\nTest: manual stats_client test and check the statsd logs\nChange-Id: I3dac9f31f59e6f10393c97c6bd9ca0d0ccb11e23\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\n"
    },
    {
      "commit": "fc1aa59dff2e9a5b9951a3c9a4de2b9782725dd6",
      "tree": "647102c95ef57493e6411463efda2f95e9ad5c9c",
      "parents": [
        "235ab3336336f9c8b1b061fff9fffa22aa0e8b6d"
      ],
      "author": {
        "name": "Maggie White",
        "email": "maggiewhite@google.com",
        "time": "Wed Nov 28 21:55:23 2018 -0800"
      },
      "committer": {
        "name": "Maggie White",
        "email": "maggiewhite@google.com",
        "time": "Fri Jan 18 16:00:48 2019 -0800"
      },
      "message": "statsd implementation of USB port overheat event reporting\n\nBug: 119200347\nTest: su 0 ./stats_client -u\nTest: Observed USB port overheat event in statsd logs\nChange-Id: Ic8801417c54c118e10bb9b631d8e77d68a65c799\nSigned-off-by: Maggie White \u003cmaggiewhite@google.com\u003e\n"
    },
    {
      "commit": "35cb8d6537614dbd56396c47c35cbabd46a411ad",
      "tree": "b03999db3778236e07efd1ca58cc635349b27c38",
      "parents": [
        "20a1afd998de4454ec930cf1ccf76ac9f2e661d7"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Jan 03 16:49:14 2019 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Jan 03 17:00:39 2019 -0800"
      },
      "message": "Add a timeout option in shell subscriber.\n\nTest: cts added\nChange-Id: I0fe854fcfd5535ed03e502a4cad3f57079b45381\n"
    },
    {
      "commit": "0bd73dbaac5fee840f443f287f7bf027c4eb5926",
      "tree": "eda01942b0981ae021e0a23b4a57c4e39025706a",
      "parents": [
        "b7fc056068a8d146c99a8e6932ba7034a7b0bd22"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sun Dec 16 07:37:04 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Dec 21 09:46:09 2018 -0800"
      },
      "message": "Puller refactor\n\n1) Refactor pullers and add tests.\n\n2) Add timeout to a puller.\nmPullTimeoutNs is intrinsic to puller. A pull taking longer than this is\ndeemed failed and the data discarded.\nA metric or StatsPullerManager requesting a pull should monitor the pull\nand have deadlineNs. A successful pull may come later than desired due\nto statsd processing delays.\n\n3) Add unit tests to puller now that the base puller is more\ncomplicated.\n\nBug: 118756964\nTest: unit test\nChange-Id: I0e5d47e2527391f7beef4b2d06bfd5c2f82f1179\n"
    },
    {
      "commit": "fcfa0ee9bd3b7be85fbca167048182261837abe2",
      "tree": "72c0caccce2276275fbc594d2ddfbbdb5f0dad24",
      "parents": [
        "7720db82fea6b83ef2dfb8f90b9a75db0ec2c8d0",
        "c71d901ddea1b9538ab50fae8094e46ecca4b072"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 19 23:47:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 19 23:47:29 2018 +0000"
      },
      "message": "Merge \"Statsd dumpsys handles multiple and saved configs\""
    },
    {
      "commit": "c71d901ddea1b9538ab50fae8094e46ecca4b072",
      "tree": "33247b9060288cc7d56a3a85ddc6d8c64022cc82",
      "parents": [
        "67fb3ca965edab5990b44894c2cb7e565d1190e8"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Dec 19 12:28:38 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Dec 19 12:35:52 2018 -0800"
      },
      "message": "Statsd dumpsys handles multiple and saved configs\n\nStatsd dumpsys wasn\u0027t handling multiple configs properly. Also, doing a\ndump would delete the data that had been saved to disk. This cl fixes\nboth those issues.\n\nTest: run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.atom.HostAtomTests#testDumpsysStats\nChange-Id: I5f2f86c70fbcbc1407aae1b1ffeb7fbdb9f67d0e\n"
    },
    {
      "commit": "d238657d69403114e8ba73c6902a35495886d58f",
      "tree": "6c770014ca63dd90f24ea68ee54903b7cff542b9",
      "parents": [
        "67fb3ca965edab5990b44894c2cb7e565d1190e8"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Dec 14 15:53:14 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Dec 18 14:51:08 2018 -0800"
      },
      "message": "StatsService allows uids to impersonate themselves\n\nPreviously, most StatsService calls only allow the caller to specify the\nuid if it is Userdebug/EngBuild. This applied even if the caller was\njust specifying its own UID; this cl allows such a case. It also allows\nROOT to impersonate SHELL.\n\nTest: Manual testing on userdebug and userbuild devices.\nTest: make statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell data/nativetest64/statsd_test/statsd_test\n\nChange-Id: I2685d13a8dc24d40b5dab8be9842f53be6888ba3\n"
    },
    {
      "commit": "3e906582943b9ac715c731bd34f2eec73654c7c9",
      "tree": "5d353b9ac4577ce652441c3b3d24c0eee7f0539f",
      "parents": [
        "344131ba4d488d87c8426519d5a56f59d1c3f4df"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Dec 10 17:26:58 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Dec 12 11:42:39 2018 -0800"
      },
      "message": "statsd local tool\n\nAdds a tool for local usage of statsd. The tool can:\n-upload a config from a file\n-get the report data from statsd\nBoth the config and the report can be either in binary or human-readable\nformat, as specified.\n\nUsage:\nmake statsd_localdrive\n./out/host/linux-x86/bin/statsd_localdrive\n\nAlso, adds the ability to specify whether dump-report should also erase\nthe data when it returns it. A test for this is added.\n\nTest: make -j8 statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell data/nativetest64/statsd_test/statsd_test\nTest: make statsd_localdrive \u0026\u0026 ./out/host/linux-x86/bin/statsd_localdrive \u003ccommands\u003e\nBug: 77909781\nChange-Id: I9a38964988e90c4158a555f41879534267aadd32\n"
    },
    {
      "commit": "b1c6ba026d1de0857a28f64980678d0eb49ee5f3",
      "tree": "d1f8560e71228e4dd0cd90bf568a51336c6ea07f",
      "parents": [
        "8d130a1e3bd54a465d241c603139ba88c7ba87fe",
        "730403e7572eb9997adb1727867d9a1dd2b490aa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 15 08:56:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 15 08:56:28 2018 +0000"
      },
      "message": "Merge \"Statsd uidmap includes vers string and installer\""
    },
    {
      "commit": "ff71cadecc43ff034be0500ca0232873bf7212c6",
      "tree": "0d816d0dd36c527239e3b4ec6aff9f6b8cdaead4",
      "parents": [
        "5f106c8ee5dcacd2f30a2644b6fdf3caa2116e2d"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Sep 20 17:17:49 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Nov 05 18:52:49 2018 -0800"
      },
      "message": "Statsd can dump data as proto to bugreport\n\n* Creates an incident section for statsd data.\n* Allows dump to output statsd data, in proto format.\n* Hooks up two statsd outputs to bugreports:\n  -statsd report data in proto format\n  -statsd metadata (statsdstats) in text format\n\nThe incident section does not import stats_log.proto because that turns\nout to be extremely difficult: stats_log.proto imports atoms.proto,\nwhich imports more things and is enormous and causes all sorts of\nproblems. atoms.proto was purposefully never compiled in AOSP, so to\nretain that feature, the incident section uses \u0027bytes\u0027 instead of an\nactual message. Since this isn\u0027t ever read in AOSP (other than testing),\nthis should be fine.\n\nBug: 115678461\nTest: take a bug report and confirm valid proto\nTest: cts-tradefed run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.atom.HostAtomTests#testDumpsysStats\n\nChange-Id: I1c370af7678d1dc7440ce299ea5ea4da6d33832b\n"
    },
    {
      "commit": "730403e7572eb9997adb1727867d9a1dd2b490aa",
      "tree": "0b059c8be53311bee130150b8ba1a6fadf5cb493",
      "parents": [
        "68585439aaa41be3275a35de29e84e8ccb2fc062"
      ],
      "author": {
        "name": "dwchen",
        "email": "dwchen@google.com",
        "time": "Mon Oct 29 11:41:56 2018 -0700"
      },
      "committer": {
        "name": "dwchen",
        "email": "dwchen@google.com",
        "time": "Tue Oct 30 16:24:25 2018 -0700"
      },
      "message": "Statsd uidmap includes vers string and installer\n\nEach config can choose to include version strings and installer with\neach metrics report. This data may be useful in the cloud to filter\nthe app-specific data.\n\nBUG: 115626330\nChange-Id: I3972ff2a94e7f0347ac0cc8a443cf328c1731e13\nTest: Modified unit-tests, verified on marlin-eng\n"
    },
    {
      "commit": "dfa4c24aafd18b07077427b36d302414bceff5c1",
      "tree": "7ec49036ee1e5b654b99207bc31276ed51d91451",
      "parents": [
        "4eb4f745f88b6515ff2090e1fd941abdf8c22b21",
        "41e606c1fce2def938bf093896c7bedcf642be1a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 16 21:46:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 21:46:49 2018 +0000"
      },
      "message": "Merge \"Add pulled atom subscription for shell.\""
    },
    {
      "commit": "41e606c1fce2def938bf093896c7bedcf642be1a",
      "tree": "c216c36b4c13b2c317723c65562ec46c3e5f90bf",
      "parents": [
        "002f63d0ffb25d261cccee48690d3c945924eb43"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Oct 05 15:54:11 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Oct 12 09:23:25 2018 -0700"
      },
      "message": "Add pulled atom subscription for shell.\n\n+ Changed the output format from Atom to ShellData, which is a wrapper for repeated Atom\n  This is useful because pulled atoms are usually a list of atoms.\n\nTest: statsd_test added\nBug: 110536553\n\nChange-Id: I0e2f55bdd9015c9bc95b87a630297c6f13e39636\n"
    },
    {
      "commit": "97e7d2044567b6a0c49a501b6f5d054f49114de8",
      "tree": "570462b29ac2c17a7b00fa69b6c4cb19f33f9bec",
      "parents": [
        "20c6621d823a343734332e6adbd8e0ea129ead75"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Oct 09 11:05:39 2018 -0700"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Thu Oct 11 13:25:37 2018 -0700"
      },
      "message": "Persist data to disk when system shuts down\n\nTest: local test\n\nBUG: b/112432890\n\nChange-Id: Iaed318671a719cc366d4e6be9f77270147ba6596\n"
    },
    {
      "commit": "a46b6589ca8b6547c01be8e3b93f026cd7a57732",
      "tree": "6b1c591ded42b41081cd92ec92a1818bc5c29b8a",
      "parents": [
        "ab5c506b6aeb1ae192eb3555108c2072acf77e3f"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Tue Sep 18 16:45:02 2018 -0700"
      },
      "committer": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Fri Sep 28 10:38:00 2018 -0700"
      },
      "message": "statsd side implementation of Stats HAL\n\nThis change implements server-side of Stats HAL in statsd to be able to\nreceive loggings and parse them into LogEvent event before passing them to\nStatsLogProcessor.\n\nBug: 114316519\nTest: verified that statshal exists by calling \u0027adb shell lshal\u0027\nChange-Id: I43e7415a2d28e20af872049100cd6f2627cf3c02\n"
    },
    {
      "commit": "a80e5c0d28bf3d0c296cd6b50596728e9a842946",
      "tree": "27c40eb7daf28cc885a581f56918f2e25efb0688",
      "parents": [
        "beb077d987bed4e45a3e6ec7e3b8468ec66e1a0b"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Sep 04 13:55:29 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Sep 18 09:07:29 2018 -0700"
      },
      "message": "Support atoms subscription via shell cmd.\n\n+ This feature is for supporting perfd.\n+ Perfd is built outside android and doesnot depend on any android libraries.\n  So the communication between perfd and statsd can only be via non-android IPCs\n  (such as socket, pipe, file descriptors etc.)\n+ Perfd runs as a shell user, so using the existing shell cmd is a natural choice.\n+ The input is a simple config, and output is a stream of atoms proto binary data.\n\n+ Also cleaned up the code so that we use file descriptor directly instead of creating another\n  FILE*.\n\nTODO: pulled atom subscription.\n\nBug: 110536553\nTest: statsd_test and manually tested\nChange-Id: I64b0061cc66b5f7648147885a2ac1af531c19917\n"
    },
    {
      "commit": "e60992b8736b9cf377f1d111bce1403bb40ca04c",
      "tree": "835d3997bca7599598a82e745f0f47e72bfd3804",
      "parents": [
        "c84e940ca74ed809e3423a70c01baad507208d1e"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Thu Aug 30 14:37:29 2018 -0700"
      },
      "committer": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Thu Aug 30 14:38:46 2018 -0700"
      },
      "message": "Fix a typo in StatsService\n\nTest: I can promise that this change doesn not cause further breakage.\n\nChange-Id: I7964fa2bfa6ad6b7e56fce0867ab6fdda9a24922\n"
    },
    {
      "commit": "632b39288d9565afa400a1df5d9ef52ee2e840e4",
      "tree": "e78ebd9dc29fdc930ff989adbfc93f1069aa4b7a",
      "parents": [
        "ff39377b5c2a722565442129c866233bed148a0b",
        "3ff3a490e48d914660984463ca1d53982dd29e5e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Aug 11 00:30:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 11 00:30:47 2018 +0000"
      },
      "message": "Merge \"Remove the obsolete code for logd and add statsd socket log loss detection.\""
    },
    {
      "commit": "3ff3a490e48d914660984463ca1d53982dd29e5e",
      "tree": "e0ae6afcc35b6e278b4f13220b4030e5394adc5f",
      "parents": [
        "0afbfd1182bccbe3913ddee7fb6343c0d450402a"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Aug 06 16:17:37 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Aug 06 16:24:49 2018 -0700"
      },
      "message": "Remove the obsolete code for logd and add statsd socket log loss detection.\n\n+ Remove dead code\n+ Add a simple log loss detection as a starter to see if there is any log loss\n  detected at all.\n\nTODO: If we do see log loss, we can add more sophisticated logging and reset mechanism.\n\nBug: 80538532\nTest: statsd_test\nChange-Id: Iff150c9d8f9f936dbd4586161a3484bef7035c28\n"
    },
    {
      "commit": "bd1a28f45c5b31409ec2d67a25dd0ffd3fd01448",
      "tree": "6c8db9619407fb00f737ef2f7af525cdf45fa971",
      "parents": [
        "2e8c7670b12ce7075bcc34c1502d268a71f99a0d"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Jul 17 14:55:19 2018 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Jul 23 14:22:45 2018 -0700"
      },
      "message": "Atoms for ProcStats duration and pss  metrics\n\natom and logging for statsd to mimic procstats process duration metrics.\n\nActivityManagerSleepStateChanged\nMemoryFactorStateChanged\nExcessiveCpuUsageReported\nCachedKillReported\nProcessStateChanged\nProcessMemoryStatReported\n\nSome of the enums will need to use frameworks proto. It is blocked by\nother cls that are cleaning namespace, etc.\n\nBug: 110784286\nBug: 110538804\nBug: 110539297\nBug: 111561536\nBug: 111685402\nBug: 111128767\n\nTest: cts test\nChange-Id: I7502eb0bb36b90f43493b147a35bee48bad1b000\n"
    },
    {
      "commit": "5bfffb54daf4ccfd55d78a19a697d675c3df0dbc",
      "tree": "415ccac383d5a4b9e013a1727f4586e430969a88",
      "parents": [
        "54d7032b78e3b457aa618eb74ae644b95844ca54"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Jun 21 16:58:51 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jun 25 11:08:04 2018 -0700"
      },
      "message": "Clean up TODOs in statsd\n\n+ Created bugs for those TODOs that are still relevant.\n+ Remove obsolete TODOs.\n\nTest: no code change.\nChange-Id: I41c2a89a882f087817ee6cbc3f095e1d80e1928e\n"
    },
    {
      "commit": "e22192071d0abccd52091eb3bff07176f4bfb84c",
      "tree": "cdcc9c07db06d19bae63754922e6aa78389e86ae",
      "parents": [
        "b5e98161ddc8f5e5e88719dc4004204832facc31"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Jun 08 10:07:51 2018 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Jun 14 15:46:54 2018 -0700"
      },
      "message": "StatsPullerManager not use singleton\n\nThis is to be consistent with other patterns such as UidMap.\nThis also makes unit test simpler.\n\nChange-Id: I1558cd609e470481f269ecf2ae616277a95cfbf0\nBug: 72722120\nTest: unit test\n"
    },
    {
      "commit": "56ae0d9a48212c6e886e5887a6f9191f3020af40",
      "tree": "bd522d30960d154169b65791791b1bccecd5e6b3",
      "parents": [
        "26111fc8997ef36ff9c7a368a09ab1e9aefe21b1"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri May 11 16:00:22 2018 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri May 11 17:04:56 2018 -0700"
      },
      "message": "Fixes statsd reports missing strings and SCS.\n\nReports written to disk don\u0027t contain the strings used, which will\nmake this report unusable if there are strings that don\u0027t show up\nagain. We should always include the strings, so this option is\nremoved entirely.\n\nAlso, we hard-coded the wrong number of fields when pulling\nModemActivityInfo. There are actually 10 fields, not 6.\n\nBug: 79601503\nTest: Tested unit-tests pass on marlin-eng.\nChange-Id: I6834b096ced77418a9cc2ddd79b08d1c9c447fae\n"
    },
    {
      "commit": "cdb093e080cb84b1a656e0a994a6c73b2f5657b7",
      "tree": "d24be778e3e57d35234cf30f7cb717651f6b633a",
      "parents": [
        "35424828755937b9457f5f8c0972793b4b6945ff",
        "48944901f7e6334724efadda6c6b27d9e88fc9e2"
      ],
      "author": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Mon May 07 23:49:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 07 23:49:54 2018 +0000"
      },
      "message": "Merge \"Fixes statsd returning too much data at once.\" into pi-dev"
    },
    {
      "commit": "be6d7f90e8487f16e9459011f3b85ca354429f14",
      "tree": "7b4cb67d6fab0687ea10421fcce3313aa5d09977",
      "parents": [
        "f7416d1fe0f906d7bec1db767de2ab1ec4bb1026"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri May 04 13:02:53 2018 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Sun May 06 22:25:05 2018 -0700"
      },
      "message": "Re-enable the logging of APP_BREADCRUMB_REPORTED atom\n\nBug: 78613419\nTest: manual, cts, unit tests\nChange-Id: I279158c8031eda3ee648053ae6a0d13fde7f1176\n"
    },
    {
      "commit": "48944901f7e6334724efadda6c6b27d9e88fc9e2",
      "tree": "10a4c19530b68bd17727694622f3d712c74aeae4",
      "parents": [
        "11969b49191cfa156ada8d5034d5d39c2b77dc69"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu May 03 10:29:11 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri May 04 17:09:16 2018 -0700"
      },
      "message": "Fixes statsd returning too much data at once.\n\nWe observe a single ConfigMetricsReportList can be greater than the\nsafe size for the binder transaction buffer since we only check the\nsize of the current metrics in progress, but we also return the\nprevious reports stored on disk.\n\nThis change will attempt to send another ConfigMetricsReportList\nas soon as possible if there\u0027s already a report on disk.\n\nAlso fixes a bug when trying to trigger data fetch before the client\nhas registered the corresponding dataFetchOperation.\n\nBug: 79201869\nTest: Tested manually on marlin-eng\nChange-Id: I2d3677162804a27e7a7a95d482d80c46bd994a67\n"
    },
    {
      "commit": "a62ae51ba91bd6bd9dc4327aa8dd5e61f721faff",
      "tree": "6503370d00402b9b6cc98f947c487b4dfb6744bc",
      "parents": [
        "dcd71294a40262f38b11e26c470a4f470925b7fd",
        "876889cb760e99221c2fd77c7d67d5409bda0bc7"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri May 04 20:21:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 04 20:21:18 2018 +0000"
      },
      "message": "Merge \"Add cmd to let statsd print all logs it received for debugging.\" into pi-dev"
    },
    {
      "commit": "892f3d32293b8358c72da4a94633827abbda640b",
      "tree": "25f503d7970defa87309883fa7cd22adbcb58cd7",
      "parents": [
        "ee18fb21120b32036222770ba541c43613fbae3d"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed May 02 14:16:48 2018 -0700"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu May 03 17:05:24 2018 -0700"
      },
      "message": "Reset statsd and correctly record the dump reason when system\nserver restarts/crashes.\n\nTest: statsd test\nBUG: b/79161505\nChange-Id: I0646c764964f6eafde91f9ae0179a1c837af320d\n"
    },
    {
      "commit": "876889cb760e99221c2fd77c7d67d5409bda0bc7",
      "tree": "ea86d233ba592b4b0d48c621646d993fae940bed",
      "parents": [
        "f8f6e5af75ea57edd83a9b2df9d5b896ec62ab46"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed May 02 11:16:16 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu May 03 10:53:27 2018 -0700"
      },
      "message": "Add cmd to let statsd print all logs it received for debugging.\n\nIt only works on eng build. And all code is behind a build flag, so the\ncode will be stripped out in production builds.\n\nBug: 78239479\nTest: manual\nChange-Id: I20ee51822d18e6c77ca324a5327712cbed09593e\n"
    },
    {
      "commit": "9def8e3995b1034d943a0fd22b6e512bfacdab77",
      "tree": "d58200532a17ab2c47e23e46769f877ce9f82b79",
      "parents": [
        "c76929eb926a4ba506a4dfa986ea33443e1df58a"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Apr 17 13:55:51 2018 -0700"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Apr 26 04:30:18 2018 -0700"
      },
      "message": "Reduce statsd log data size.\n\n1. Hash the strings in metric dimensions.\n2. Optimize the timestamp encoding in bucket.\n   Use bucket num for full bucket and millis for\n   partial bucket.\n3. Encode the dimension path per metric and avoid\n   deduping it across dimensons.\n\nTest: statsd test\nChange-Id: I18f69654de85edb21a9c835c73edead756295e05\nBUG: b/77813755\n"
    },
    {
      "commit": "e36018b2724b5ae40180f956b16c3e276855b99b",
      "tree": "4e933cd656f001c91e36213289e71b92dc489d7a",
      "parents": [
        "89b1a4ee0ff9c5b174ae1a229029edcdbc34b74f"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Apr 16 15:18:30 2018 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Apr 18 20:19:21 2018 +0000"
      },
      "message": "add dump report reason to reports\n\n+ also change uidmapping version numbers to int64_t\n\nBug: 78132855\nChange-Id: Iac7ea93e4bf651bd65bd03383e7ab4971af4fc29\nFix: 78132855\nTest: gts test\n"
    },
    {
      "commit": "abdf6e8039c56f181c52e535f350ab11254e1f2a",
      "tree": "804154bc9e4b0fd693bbf649c29f82359b29b95e",
      "parents": [
        "84745ebe11d085fe805ab9156db872731e0ac790",
        "dd83d703712bfa004a6bb71ddd19780b2d0b79ba"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Apr 17 01:34:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 01:34:47 2018 +0000"
      },
      "message": "Merge \"Enforce dump permission in stats service\" into pi-dev"
    },
    {
      "commit": "936c0868f8e5d71d61449b94e16a56e1ceaea424",
      "tree": "9051ff0f1b5a730ad02a38563e739107ffd16993",
      "parents": [
        "82c0b73e98a81e4b2d2f50da44112381bcef6755",
        "6b649257377b4ba2dd8a2a02b8dd692a72a2cc1e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Tue Apr 17 00:04:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 00:04:53 2018 +0000"
      },
      "message": "Merge \"Protect usage data with OP_GET_USAGE_STATS.\" into pi-dev"
    },
    {
      "commit": "dd83d703712bfa004a6bb71ddd19780b2d0b79ba",
      "tree": "0958729aa8bbe5c071f2e8831e8596775aebc804",
      "parents": [
        "5000367d38154428f9e57dbb0097cbaca7b7c0c4"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Apr 10 17:24:50 2018 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Apr 16 15:04:28 2018 -0700"
      },
      "message": "Enforce dump permission in stats service\n\nEnforces the dump permission in stats service and fixes a typo in an\nenum name.\n\nBug: b/77723108\nTest: adb shell dumpsys stats as root and not root\nTest: build success on marlin (and cts build success)\nChange-Id: I131f97fe4fd370d50bc4ad369377f6adcca5f6ae\n"
    },
    {
      "commit": "6b649257377b4ba2dd8a2a02b8dd692a72a2cc1e",
      "tree": "f06149447b480ee548d00896ec5847adee3896a8",
      "parents": [
        "167032ab002714d26a14735bbcdc072c5fa693b7"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 09:50:22 2018 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 16 12:44:32 2018 -0600"
      },
      "message": "Protect usage data with OP_GET_USAGE_STATS.\n\nAPIs that return package usage data (such as the new StatsManager)\nmust ensure that callers hold both the PACKAGE_USAGE_STATS permission\nand the OP_GET_USAGE_STATS app-op.\n\nAdd noteOp() method that can be called from native code.\n\nAlso add missing security checks on command interface.\n\nBug: 77662908, 78121728\nTest: builds, boots\nChange-Id: Ie0d51e4baaacd9d7d36ba0c587ec91a870b9df17\n"
    },
    {
      "commit": "d37bc23f5094ebb803abe93c9e3ca27698da35a9",
      "tree": "af887d4bd22a84f0fb416c923f408be51a472bdf",
      "parents": [
        "4558c77d5d2f197d697a18c41ea1716ffc65db28"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Apr 12 18:05:11 2018 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Apr 13 17:01:13 2018 -0700"
      },
      "message": "Adds a code when statsd sends intent to getData.\n\nIf the data receiver is experiencing delays, there may be a queue of\nmultiple intents to collect the same data. This timestamp makes it\neasy in the receiver to de-dupe these requests to call getData.\n\nAlso, we update how StatsCompanionService gets the snapshot by\nrequesting data for all known apps. I notice that Keep seems to have\na uid active even when it appears uninstalled.\n\nBug: 77981668\nTest: Flashed marlin-eng and manually verified.\nChange-Id: I509e19383ec4a5da8746dd0c76ac71a948c6877d\n"
    },
    {
      "commit": "6b317915e8ffa28066744e597fd5404a09240f22",
      "tree": "35031577fccd8ab3250be79f6905727ce94308ed",
      "parents": [
        "87646514be50390c251e00e21b31b32f2eb10f1c",
        "4f71629002ae1da22ca1c07ce11b9cca9b272d97"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 11 17:02:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 17:02:06 2018 +0000"
      },
      "message": "Merge \"StatsManager throws exceptions\" into pi-dev"
    },
    {
      "commit": "163d2602dbc79133096b3dec7920ee157ff1a88b",
      "tree": "ea8f68e27b820748af245db7c90e36ff92a99bf8",
      "parents": [
        "5f91d5ee942ed2af54349a2a78f635237a84dbb4"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Apr 10 10:39:53 2018 -0700"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Tue Apr 10 22:06:03 2018 -0700"
      },
      "message": "Handle logd reconnect.\n\nWhen statsd reconnects to logd, statsd will read all logs from buffer again. To prevent us from\nreprocessing old events, we do the following:\n\n1. At any given moment, record the largest timestamp(T_max) and last timestamp (check point) that\n   we\u0027ve seen before.\n2. When reconnection happens, we look for the check point until we see a new log with a timestamp\n   larger than T_max.\n   -\u003e If we found the CP, resume after the CP. Success\n   -\u003e If we can\u0027t find CP, there is definitely log loss. We reset all configs.\n\nNote:\n1. Logd has an API to read logs after a certain timestamp. But this api is vulnerable to\ntime changes from Settings. So we cannot rely on it.\n\n2. If logd inserts a new log (with older timestamp) before CP, we cannot detect it. It\u0027s not\n   possible to detect it without record all timestamps we have seen.\n\nTest: statsd_test\nBug: 77813113\n\nChange-Id: Ic3fdb47230807606ab11dc994cb162194adb8448\n"
    },
    {
      "commit": "15f6bbc24f4d7a3d4481d90a18df33d402ddacba",
      "tree": "cb4aa2c4131209f4fa8e2d623a951ce9b4cae0fd",
      "parents": [
        "4df92ef6f1fd4bc20c02a499b58d0fbe6fa1e20d"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sun Apr 08 11:52:26 2018 -0700"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Apr 10 20:25:13 2018 -0700"
      },
      "message": "Flush the bucket when creating the metric producer.\nUse int64 for value field.\nE2e test for gauge/value metric.\n\nBUG: b/74445671\n\nTest: statsd test.\nChange-Id: I823a0bade8f89834bdfb9cf48864852a47d7b63b\n"
    },
    {
      "commit": "4f71629002ae1da22ca1c07ce11b9cca9b272d97",
      "tree": "9df07317b627a0be00312edbb17969699da95b4f",
      "parents": [
        "135d82ac4526e2d5fa56484e80bce86dd10431ea"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Apr 10 17:15:12 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Apr 10 19:07:32 2018 -0700"
      },
      "message": "StatsManager throws exceptions\n\nWhen StatsManager fails to connect to statsd, it now throws an exception\nfor the caller to catch. It also throws an exception of the config being\nadded is of an unreadable format.\n\nDue to backwards compatibility issues, the old APIs could not be\nchanged, so new ones were made to replace the old ones. The old ones are\nnow temporary and will be removed when the compatibility issue is\nresolved.\n\nBug: 77648233\nTest: gts-tradefed run gts-dev --module GtsStatsdHostTestCases\nChange-Id: Ibea05883a29b9b3ef9927d2f8fe295eb99832ab7\n"
    },
    {
      "commit": "c63fdfe02c1de3b6c08a22a7f2c0d82b36d60976",
      "tree": "bb9d709851b957ab92aef6efdde96d6ea6cdd634",
      "parents": [
        "e0dfebcce3b48ea8a8f70c070641ac8436af86e6",
        "41b3f9a8cf74664126d56a05342fa604bf82a621"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Apr 06 20:42:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 06 20:42:22 2018 +0000"
      },
      "message": "Merge \"Add proto output of statsd stats in adb\" into pi-dev"
    },
    {
      "commit": "e68f3a5811209eeab71976bc583c6075d9a5979a",
      "tree": "44aa95c693275c1e6d22e51d2725183f41acb4be",
      "parents": [
        "203bbbf942e8675338b88ab67d49481d2bfcf904"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Apr 04 00:01:43 2018 -0700"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Apr 05 18:05:57 2018 -0700"
      },
      "message": "Flush the partial bucket when startd shuts down or config updated.\n\nTest: statsd test\n\nBUG: b/77556036\nChange-Id: Ie4a04ace55e07c4529cdff5906ba874f8815f620\n"
    },
    {
      "commit": "bd12527c90d55eefa657e6a71cfdd287ecdb4ab3",
      "tree": "eae5018191d2e8f4132237acaa0ec7d4ef7e030a",
      "parents": [
        "743d42d2990bd30195045a256f863d0ce6f51d79"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Apr 04 19:02:50 2018 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Apr 05 16:15:01 2018 -0700"
      },
      "message": "Fix uid map to be simpler and fix partial bucket.\n\nThe previous scheme captured periodic snapshots for each config with\ncomplex logic that\u0027s unnecessary and wasted memory. We actually don\u0027t\nneed to store any snapshots since we just convert the current state\ninto a snapshot and also include the deltas (change events) since the\nprevious report until now.\n\nTo make the system more robust, we also include up to 100 of the\ndeleted apps in the uid map.\n\nAlso, fix the wiring of the partial buckets so the metric producers\nform partial buckets on both app upgrade and removal, but not on\ninstallation of a new app.\n\nAlso, we update StatsCompanionService to also include disabled apps.\n\nBug: 77607583\nTest: Verified unit-tests pass and added new e2e tests.\nChange-Id: I98e1f544d6e6571545ae1581c4cebab807596f51\n"
    },
    {
      "commit": "41b3f9a8cf74664126d56a05342fa604bf82a621",
      "tree": "248872b8d3ea413bf8fd5421fb747ddb01430ec3",
      "parents": [
        "5260eea5e48f7c54fa28c2254547c588c344d26d"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Apr 03 17:06:35 2018 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Apr 05 14:09:05 2018 -0700"
      },
      "message": "Add proto output of statsd stats in adb\n\nTest: statsd unit tests\nTest: visually verified output of adb shell cmd stats print-stats was\nsane\nTest: making a CTS test that uses proto output\nBug: b/77548658\n\nChange-Id: Ie60d66b9883f109446745dfcef97b7fb6194a1ac\n"
    },
    {
      "commit": "b142cc8add29c8c97f6134d35873d23db666027c",
      "tree": "84821e80be1a6b2fd9f30d583442bade56f21657",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Mar 30 15:22:08 2018 -0700"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Wed Apr 04 15:59:43 2018 +0000"
      },
      "message": "Statsd config TTL\n\nRoughly check the config every hour to see whether the ttl expired.\nIf so, read the config from disk and recreate the metric manager.\n\nTest: statsd test\n\nBUG: b/77274363\n\nChange-Id: I16838afe5bbe966c3a0f638869751f9b59a5a259\n"
    },
    {
      "commit": "46eef8d0497d357e5fc2a3e63e7150f2b9372f03",
      "tree": "087f2254e9f1666f459b5de150d8bd185a131549",
      "parents": [
        "fbe387ab8fba4628e51587e0e080d248422122a6",
        "684d195227bf9eaeb21698cbdcf865afb570c454"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 31 03:04:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 31 03:04:59 2018 +0000"
      },
      "message": "Merge \"E2e test for periodic alarm.\" into pi-dev"
    },
    {
      "commit": "1a0a941c20eb746868d0de52e3806f69c74d335f",
      "tree": "6e91ddbbc42dfcb901e6fac4488052fa9a9aeaa6",
      "parents": [
        "d1c5b6695f1f9a3e1ddefbbb5118809b1f76a9bb"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Mar 28 10:07:22 2018 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Mar 29 00:11:13 2018 -0700"
      },
      "message": "Fix StatsCompanionService pull on bucket ends\n\n+ change StatsPullerManager internal time units to be consistent\n+ use series of alarms for pullers, instead of use setRepeating\n\nBug: 76223345\nBug: 75970648\nTest: cts test\nChange-Id: I9e6ac0ce06541f5ceabd2a8fa444e13d40e36983\n"
    },
    {
      "commit": "684d195227bf9eaeb21698cbdcf865afb570c454",
      "tree": "afe86ecbb7e2eaf39dd9de799d59266a39f949f5",
      "parents": [
        "b3c20232f1c0f0edc81c52fb52bccfcf407f62e4"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Mar 24 16:47:16 2018 -0700"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Mar 27 13:26:20 2018 -0700"
      },
      "message": "E2e test for periodic alarm.\n\nTest: new test\n\nBUG: b/76281156\nChange-Id: I60cb28baaeec6996e946a7cb3358ec8e0aca80e5\n"
    },
    {
      "commit": "aa5b2010152c4042786b558a44a89d25229d8962",
      "tree": "ebc1bc5a34bb3888dc8e5415e3185db177e74087",
      "parents": [
        "de51e0c61523f948d9a9797fce1f07e2a67e99fd"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Mar 21 13:53:15 2018 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Mar 23 14:33:58 2018 -0700"
      },
      "message": "Fix StatsCompanionService sometimes can be null\n\nBug: 75970648\nTest: will add cts test for puller alarms\nChange-Id: I51b7d13f855d3c8ded8325d7cf0f614531eceea5\n"
    },
    {
      "commit": "9fdd40302e0f4409b2fd4e5a418037c07b42bbe5",
      "tree": "0bbdd77ca2e471151cd6d23ce53a0fce08ced411",
      "parents": [
        "02a4219cb7ff9ad848456903ac939f019d2161fc"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Mar 20 14:38:56 2018 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Mar 20 15:56:11 2018 -0700"
      },
      "message": "Allow statsd to be given empty config.\n\nStatsd clients may want to set an empty config temporarily, so it\u0027s\nmore convenient to allow them to set an empty config instead of\nhaving to use the removeConfig and then having to remember to call\nStatsManager#setDataFetchOperation.\n\nTest: Added unit-tests and check they pass on marlin-eng.\nBug: 74997752\nChange-Id: I2e762e5ec01e5a2c9a3469fb330b53fefbd734d6\n"
    },
    {
      "commit": "1cf2ac5241b848ea160b65604bc894d08cba8518",
      "tree": "4c1287ec9ec0cd299912c5b40e3b6af07d0842af",
      "parents": [
        "c8a6305ddf61bb87bad9639cace9307886597714"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Mar 07 17:59:13 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Mar 07 17:59:13 2018 -0800"
      },
      "message": "Write data to file when StatsCompanionSerivice (system_server) crashes\n\nBug: 73352867\nChange-Id: Iecbb1ae3e29264975771155a878b368cfc2f50f0\nTest: statsd_test\n"
    },
    {
      "commit": "20e9e6231a1aba79b4e5ae47f3ccfb066920e60f",
      "tree": "6489cfba8c2a90806b580ff15f076afeec1d82d6",
      "parents": [
        "aec6950118319e93084f4c3d2ba6087e8f7e15df"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Feb 28 11:18:51 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Feb 28 16:20:54 2018 -0800"
      },
      "message": "Reduce statsd binary size from 730KB-\u003e 664KB\n\n1. StatsdStats does not use the proto object in memory anymore.\n2. lite_static -\u003e lite\n3. don\u0027t use sstream\n\nBug: 72129300\nTest: statsd_test\n\nChange-Id: I8a5adaf222d4d5034e8bf115215fb6dd5f042cac\n"
    },
    {
      "commit": "03b91d77c4eccd2d088a12e6fe747240a09b573d",
      "tree": "890b0730a309a15582722fbcd2ae4838143bc2c7",
      "parents": [
        "82d7883f0553971078b7cfc13a38838afdf73ff0",
        "932ececa1674c59a8da9f3e32d2651e781b86fc4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 23:08:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 23:08:31 2018 +0000"
      },
      "message": "Merge \"Alarm: wakes up statsd and notifies the subscribers.\""
    },
    {
      "commit": "82d7883f0553971078b7cfc13a38838afdf73ff0",
      "tree": "67d781586e51c28efc2ade958665e9578bdec2ef",
      "parents": [
        "e7658ef2b84c39467c2e6635807457d3d4a94194",
        "255f72e73e23f79157faaf28fcea482c0fa2f5bd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 23:07:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 23:07:27 2018 +0000"
      },
      "message": "Merge \"Return when invalid config ID was provided through adb command and change the separator of config_uid and config_id to underscore from dash to disambiguate negative config ids\""
    },
    {
      "commit": "932ececa1674c59a8da9f3e32d2651e781b86fc4",
      "tree": "a4a50f201dcf483eb24deacccc12479aff097757",
      "parents": [
        "f34ad9509df18aff1f36123b839c62003216245c"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Feb 01 10:23:52 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Feb 27 13:30:48 2018 -0800"
      },
      "message": "Alarm: wakes up statsd and notifies the subscribers.\n\nTest: manually tested it.\nChange-Id: Id796a68976aeb1611183023ba4e9c6a8b8c44bb8\n"
    },
    {
      "commit": "255f72e73e23f79157faaf28fcea482c0fa2f5bd",
      "tree": "273ec0aa53a93868aba8d2ce0cb6fb31ebad1ed6",
      "parents": [
        "4e056c8bfacc2be6d36e47305df4a85f87d02bc4"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Feb 26 15:15:17 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Feb 27 10:49:21 2018 -0800"
      },
      "message": "Return when invalid config ID was provided through adb command and\nchange the separator of config_uid and config_id to underscore from dash\nto disambiguate negative config ids\n\nBug: 73896814\nTest: statsd_test\nChange-Id: Ib0604e9f4c104560d570a64208a9e94d7526f8d6\n"
    },
    {
      "commit": "926fc7571a656b6ab7b758e4b108aee102029c94",
      "tree": "9d56276b3b0b0c2b2074fbe7ac0cfa7dafc6cdd5",
      "parents": [
        "08ddee7303b945b65bc97998b2ade9a5943acbba"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Feb 23 13:31:43 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Feb 23 14:36:06 2018 -0800"
      },
      "message": "Fixes timebase used when dumping reports.\n\nWe should be using elapsed realtime for most timestamps in statsd\nso that the times can only increase monotonically.\n\nTest: Test that statsd builds and unit-tests passes.\nChange-Id: I0bb23e89aa9a6dbf6d56a0c23eec77bdd053f29b\n"
    },
    {
      "commit": "019240235f99ace92ec05feadf3274cf0a0f7cfc",
      "tree": "ca0911c8e10861dc0ba67fad5fbe498d1b4203c0",
      "parents": [
        "29f1cdd5d3acc79a787e372cac02f7e216ea033e"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Feb 20 18:20:49 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Feb 20 18:20:49 2018 -0800"
      },
      "message": "Remove relevant configs when a uid (app) is uninstalled\n\nBug: 72267831\nTest: statsd_test\nChange-Id: I6ed29baba39b83f771629131af66b39ccc9cc130\n"
    },
    {
      "commit": "b639d14f1a97b77c4e69de480a6d222265094bba",
      "tree": "b9858b5afef04c21cf10505a726d2e16f2e6fada",
      "parents": [
        "581576efef1b25efedc4a7657e8ea84a26a7fe2f"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Feb 14 17:29:54 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Feb 14 17:45:45 2018 -0800"
      },
      "message": "More formatting fixes for statsd\n\nTest: N/A\nChange-Id: I378cde8700655bfba26b112ae6df1b4347683bdb\n"
    },
    {
      "commit": "6189807c12e9cf32a36d32557725561c44b8aa5a",
      "tree": "79445d0e04e7df64ccb17ff5700ba93d23ec0d2f",
      "parents": [
        "5f76688c5a8eefd16bc51569263667e7f403f242",
        "4c959cb99eb7e71e5417a61f5429c5fa0073e826"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 14 20:12:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 14 20:12:18 2018 +0000"
      },
      "message": "Merge \"Remove unused variables in statsd, and make more warnings show.\""
    },
    {
      "commit": "2f5b9c9b03a3945945e5b4f09c696c25bcd3ddb5",
      "tree": "6a1aca0f52415e0baf71be63c3a6aeb495b39808",
      "parents": [
        "f979bcfaba477a5a73bed76b178f1cdeb46dd1d9",
        "0b5c90cd8ce9ccc6cb1a431e52f18225d60a5cd6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 14 19:18:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 14 19:18:39 2018 +0000"
      },
      "message": "Merge \"Updates statsd atoms.proto with small changes.\""
    },
    {
      "commit": "330af58f2b8582b855085655fae553cdfaf44e6c",
      "tree": "b93137833b438812155cac1ae1958cf963f7d8d3",
      "parents": [
        "73d6050edf397d38aa262f2eff19551a4458ca73"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Feb 08 15:24:38 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Feb 13 23:30:39 2018 -0800"
      },
      "message": "Use elapsed realtime instead of times based on wall clock, which can jump around and go backwards.\n\nTest: statsd unit test passed\n\nChange-Id: Ib541df99231e171b3be2a24f75632693e36da90e\n"
    },
    {
      "commit": "0b5c90cd8ce9ccc6cb1a431e52f18225d60a5cd6",
      "tree": "6c75e799dfafb3daf388f7ef38d1d0723cf536ea",
      "parents": [
        "85a6db68f1860bbaacc1cc21e29c4f61aabe0abb"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Jan 25 16:51:49 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Feb 13 16:17:25 2018 -0800"
      },
      "message": "Updates statsd atoms.proto with small changes.\n\nRenames the apphook atom to be more descriptive. Renames time\nsuffixes to match more clear convention (ms and msec are ambiguous).\n\nAdds a field to CPU active time that\u0027s required for the metrics\nto be usable.\n\nTest: Test that statsd can still build.\nChange-Id: I94866510738db994e8d757260f30e599ba995dbd\n"
    },
    {
      "commit": "4c959cb99eb7e71e5417a61f5429c5fa0073e826",
      "tree": "426c275b4d16f1119dd4eb67b7e0442fb4c75862",
      "parents": [
        "85a6db68f1860bbaacc1cc21e29c4f61aabe0abb"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Feb 13 13:27:48 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Feb 13 15:31:22 2018 -0800"
      },
      "message": "Remove unused variables in statsd, and make more warnings show.\n\nTest: statsd_test\n\nChange-Id: I2c7b674cb615f22c5de90c2de5f2d58108ab2e7f\n"
    },
    {
      "commit": "66fe06183f3074554c524f6e2ee47ce6fd727941",
      "tree": "163443ae9589f76159fa24430ac33050ef056f8a",
      "parents": [
        "e8cf6110aed233019a41fddd4fdca0cc93bb8433"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Feb 07 18:51:48 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Feb 12 12:28:47 2018 -0800"
      },
      "message": "Statsd Anomaly Detection fixes\n\nMinor fixes and notes regarding the setting of refractory periods and\nanomaly alarms.\nAlso changes the anomaly alarms from inexact to exact.\n\nTest: run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.alert.AnomalyDetectionTests\nChange-Id: Ia4f4c84dd647ebbbad4bab66164cd7709f8628e8\n"
    },
    {
      "commit": "8a8d16ceea1e5b7a2f8c41e17b5d993035f50f5d",
      "tree": "f3c3ba9f29eebe1c22d79cd49516306093925e21",
      "parents": [
        "4f07fa4e748c4f259a7ae9c06f89e44a9c69acff"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Feb 08 14:50:40 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Feb 12 10:38:45 2018 -0800"
      },
      "message": "Statsd CPU optimization.\n\nThe key change is to revamp how we parse/store/match a log event, especially how we match repeated\nfield and attribution nodes, and how we construct dimensions and compare them.\n\n+ We use a integer to encode the field of a log element. And also encode the FieldMatcher into an\ninteger and a bit mask. The log matching becomes 2 integer operations.\n\n+ Dimension is stored as encoded field and value pair. Checking if 2 dimensions are equal is then\n  becoming checking if the underlying integers are equal. The integers are stored contiguously\n  in memory, so it\u0027s much faster than previous tree structure.\n\nStart review from FieldValue.h\n\nTest: statsd_test + new unit tests\n\nBug: 72659059\n\nChange-Id: Iec8daeacdd3f39ab297c10ab9cd7b710a9c42e86\n"
    },
    {
      "commit": "484524a246ffe453f8cd89b698a279c23b0bde1f",
      "tree": "a7ea4f1f6a91693e7fd6552a0103aa70f4ec680c",
      "parents": [
        "a5ffafbfda3b5f6dd7f883045b6b0da0556b934c"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Feb 01 15:10:05 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Feb 08 13:11:29 2018 -0800"
      },
      "message": "Turn off debug logging in statsd\n\nSets DEBUG to false everywhere and replaces all ALOGD with VLOG so they\ndo not print with DEBUG false. Leaves all ALOGI, ALOGW and ALOGE as is.\n\nTest: ran all CTS tests and checked \"adb logcat -s statsd\" to make sure\nit wasn\u0027t spammy\n\nChange-Id: Iaa8eb3a0a63723ffe40f94f2815f94df877fd432\n"
    },
    {
      "commit": "9ea3c99a95e2b5040e552dd02a3403c7c5b3ff40",
      "tree": "896c3fda18636363c2dcf00334ea8eecfcf333fb",
      "parents": [
        "6a00aac93ada980a08223f61e3021e5c0fcea2b8",
        "661f791a2580515eee5882ab9498aef94a0d33a5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 08 18:50:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 18:50:00 2018 +0000"
      },
      "message": "Merge \"Statsd notifies listener with pendingintent.\""
    },
    {
      "commit": "661f791a2580515eee5882ab9498aef94a0d33a5",
      "tree": "8d18096fee7aca07d65dc1360decab2e8fddca56",
      "parents": [
        "171951d8e0bc09dc6882b3c97c17dc7ebb7dc636"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Jan 22 17:46:24 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Feb 07 16:16:23 2018 -0800"
      },
      "message": "Statsd notifies listener with pendingintent.\n\nPreviously, statsd would inform interested listeners that it\u0027s time\nto collect data via a protected broadcast. However, the preferred\nsolution is to pass a PendingIntent via a separate setter. Whenever\nstatsd wants the listener to call getData, StatsCompanionService\nwill trigger the pending intent.\n\nTest: Tested in marlin-eng that functionality works as expected with\ndogfood app.\nBug: 72562867\nChange-Id: Ibcfcd5072a1a78947f8a7cbcd0bc429b54351da3\n"
    },
    {
      "commit": "80f9112aecf08845ef0b2b132d721b7ce850970f",
      "tree": "da65af99c55ee8ba03c5844c1d9256f691c515db",
      "parents": [
        "ecc00786d0398283be01981844822bab7154ebb3"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Jan 31 20:24:50 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Feb 07 22:16:50 2018 +0000"
      },
      "message": "Pullers merge isolated process with host\n\nTest: unit test\nChange-Id: Idcb4d19e1f5182554b503c5a35fbde4da146835c\nFix: 72230210\n"
    },
    {
      "commit": "fa22d65f146c94873ba98b768b08c643424c4477",
      "tree": "ce7917ed552d5c095154f89e516eb5909c9be363",
      "parents": [
        "043863ac36e18b3a26c66199edee2cc403d92834"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Feb 05 14:37:48 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Feb 06 11:11:46 2018 -0800"
      },
      "message": "puller cache clearing\n\n+ add adb command to manually clear puller cache\n+ try to clear puller cache every 10s\n\nTest: manual test\nChange-Id: I8005cacd189de1880fcaeb030efbe21e6d3c0244\n"
    },
    {
      "commit": "b223c4ecae9a101ef820ad71bf89461b5447a34b",
      "tree": "90952beb3cfb33bf18784152828296d14ba1c217",
      "parents": [
        "4a740846223aa58af065e2256fb0caa0ce6f9c53"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Feb 01 15:35:04 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Feb 02 14:41:10 2018 -0800"
      },
      "message": "Statsd - adb cmd for AppHook; long compare support\n\n1. Create an adb command for statsd to let the adb user write AppHook to\nthe StatsLog buffer.\nThis can be used in the CTS tests (instead of relying on screen state\nchanges, etc. for conditioning), and for local testing.\n\n2. Fixes the fact that AppHook loggers can spoof uids (they can put\nwhatever uid they want and statsd doesn\u0027t validate it - now it will).\n\n3. Allow FieldValueMatcher to compare longs (not just ints).\n\nFix: 72266788\nFix: 72836157\nFix: 72872130\nFix: 72829733\n\nTest: manually did the adb command.\n\nTest: run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.alert.AnomalyDetectionTests\n\nTest: locally modified\nandroid.cts.statsd.alert.BroadcastSubscriberTests#testBroadcastSubscriber\nto have the app attempt both valid and invalid AppHook writes.\n\nChange-Id: I68931a71805bcfa6fe56e7a0a0d3f07290cb78d1\n"
    },
    {
      "commit": "e72252b6886096eef308164b830fe84dd3c6c01d",
      "tree": "632fa7d5562b42b9ee57f32d4839c66b5325956c",
      "parents": [
        "731f9fa6b3ab28c48d3f8a29b2a16d9ca85c44e8"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Feb 01 13:19:35 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Feb 01 13:22:27 2018 -0800"
      },
      "message": "Add command to clear puller cache\n\nTest: manual test\nChange-Id: Id1fa48b5a6f2200d22f4a746763f65d0c8d65f72\n"
    },
    {
      "commit": "884c8c130fde0d02ada1316f7c27f0f55e7e48b9",
      "tree": "8d6e118e7cc90ed46f40f461e1190a59dfaf7066",
      "parents": [
        "f8fc7235d46b605c845552c23912b0f7a9009013"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Jan 26 10:36:25 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Jan 26 12:03:58 2018 -0800"
      },
      "message": "Add more statsd\u0027s debugging info to dumpsys.\n\n+ Bugreport will use the non-verbose mode\n+ Reuse the log_msg object in LogReader\n+ Add logd errors to StatsdStats\n\nBug: 72383073\n\nTest: manual + statsd_test\n\nChange-Id: Id5a8b103074d034f5ece3c9831c740d44a5df9cd\n"
    },
    {
      "commit": "73a331f52490f648d0347cd8856c1196d418a600",
      "tree": "8bf4bbc2edb5f4f815cf5c1174eab8f1a2f29f1f",
      "parents": [
        "6834ec8e54978d076fcf9c414d52f6cb173c24fc",
        "c697797d43b6932fc7cca1c8d7d850c3fb4d1452"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 06:23:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 06:23:36 2018 +0000"
      },
      "message": "Merge \"Statsd broadcast subscriber\""
    },
    {
      "commit": "b2b547454bb7bf7258e40929f7fe8721c858be79",
      "tree": "f9f98c29f1acdd8fbdc1bfacb50f6be3f61f8e4b",
      "parents": [
        "e891dbaa4fe9180dc044ec0139e6422254ff5597",
        "e5f82927ae60fdff909e030434354a6ba164f333"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Wed Jan 24 23:00:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 23:00:14 2018 +0000"
      },
      "message": "Merge \"Fix adb shell cmd config remove command when no (uid, id) pair is specified.\""
    },
    {
      "commit": "c697797d43b6932fc7cca1c8d7d850c3fb4d1452",
      "tree": "43037d273145230adad3e720cd798d729180a236",
      "parents": [
        "96c73a3c40316e5aa36ea59d40e901d2dd505021"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Jan 16 16:55:05 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Jan 24 13:08:19 2018 -0800"
      },
      "message": "Statsd broadcast subscriber\n\nAllows a uid that uploads a statsd config to additionally\nregister a BroadcastSubscriber with statsd. If statsd\ndetects an anomaly (according to the config\u0027s Alert),\nstatsd can inform a BroadcastSubscriber provided in the config.\nThe config uses a subscriberId (just an int) to identify the\nBroadcastSubscriber. It then uses StatsManager.setBroadcastSubscriber\nto associate that subscriberId with a given PendingIntent.\nThen, when the anomaly is detected, statsd sends a broadcast\nusing that PendingIntent, alerting whoever was specified by\nthe config/setBroadcastSubscriber.\n\nBug: 70356901\nTest: cts-tradefed run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.alert.BroadcastSubscriberTests\nChange-Id: I4d9ea9a6c8a85e61fadfd99c1513c55abbadd5e9\n"
    },
    {
      "commit": "bbd056ac4ac206bea36e6e8b40bf40c4a2d44f25",
      "tree": "6848813c5efe289ecaea32854b6a429c6086ea43",
      "parents": [
        "4953824b89bfbdd5a85a2a7182c0903d9283e1d1"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 22 13:37:02 2018 -0800"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Tue Jan 23 16:41:52 2018 +0000"
      },
      "message": "Fix the crash when parsing empty config.\n\nTest: statsd test passed.\nChange-Id: Ice4bcb7368ba416a9ffe6e9c89129b307302980e\n"
    },
    {
      "commit": "e5f82927ae60fdff909e030434354a6ba164f333",
      "tree": "29501b07133947d5578bc9415107b0bed324ac38",
      "parents": [
        "f74e56af8c1ea49a87a73cdbc70a6b6ec540e22f"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Jan 22 18:37:27 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Jan 22 18:41:49 2018 -0800"
      },
      "message": "Fix adb shell cmd config remove command when no (uid, id) pair is\nspecified.\n\n- Previous logic was omitting commands when only \u0027adb shell cmd config\nremove\u0027 was provided without any uid, id argument. This change fixes it.\n- Recent disk guardrail change flips the convention of file name in\nstatsd directories to begin with timestamps. So delete with prefix was\nchanged to delete with suffix.\n\nBug: 72265185\nTest: manual testing, statsd_test\nChange-Id: Ia727fbc7acf0d9268b9f4952fa59975f4a9134cb\n"
    },
    {
      "commit": "f5acabe9466af3571a4318852cdb26856e5ba100",
      "tree": "26287da433b356fd66c3b37575820f0f3cf4250c",
      "parents": [
        "af7b167f751f99ab583c0aa24d4ef9b8dfda4b6e"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Jan 17 14:10:34 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Jan 17 18:38:09 2018 -0800"
      },
      "message": "Add StatsdStats in statsd\u0027s dumpsys\n\nBug: 72123656\nTest: manual + statsd_test\n\nChange-Id: I8ad9bb3abfa94ee099aa5fc3f28ad9b6fb7340f7\n"
    },
    {
      "commit": "d40053eb8bcb19c7c3b080a36714566bb4e4a748",
      "tree": "5df9cf4070508f1526ea1dbfcf19251a7af41dda",
      "parents": [
        "d6808dc0c00ba45fd589449647f792daf9fa8126"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 09 16:29:22 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 09 21:45:46 2018 -0800"
      },
      "message": "Map isolated uid to host uid when processing log event in statsD.\n\nTest: added test case for isolated uid in Attribution e2e test.\nChange-Id: I63d16ebee3e611b1ef0c910e5154cf27766cb330\n"
    },
    {
      "commit": "94e197cceb2ba7df13ff8de04f60bfeec64015d9",
      "tree": "2f73f292c6f73304e39b6127b5eeec4166f34cd2",
      "parents": [
        "c77bb380ae281d0100b9e8c73f5d71822af6977b"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 02 16:03:03 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 03 15:34:00 2018 -0800"
      },
      "message": "1/ Change all \"name\" to id in statsD.\n2/ Handle Subscription for alert.\n3/ Support no_report_metric\n\nBug: 69522276\nTest: all statsd unit tests passed.\nChange-Id: I851b235f2d149b8602b0cad632d5bf541962f40a\n"
    },
    {
      "commit": "2087716f2bdca90c7c3034d556ac12911bd8018e",
      "tree": "448895d8ce6f40644aa184b15fe024385d26d3c1",
      "parents": [
        "28bc987f61400b2862174149486e9f032c386a5f"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 22 17:19:39 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 01 10:01:36 2018 -0800"
      },
      "message": "1/ Support nested message and repeated fields in statsd.\n2/ Filter gauge fields by FieldMatcher.\n3/ Wire up wakelock attribution chain.\n4/ e2e test: wakelock duration metric with aggregated predicate dimensions.\n5/ e2e test: count metric with multiple metric condition links for 2 predicates and 1 non-sliced predicate.\n\nTest: statsd unit test passed.\n\nChange-Id: I89db31cb068184a54e0a892fad710966d3127bc9\n"
    },
    {
      "commit": "7d8aa4ded5af280930418045edfb4450b455d2c8",
      "tree": "8164df63d1e648fa0f3759eadcd020ea4e79ee3b",
      "parents": [
        "cb37da8b13a8f70942d253ac56a9ad3ae3cbf7ba"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 27 13:37:01 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 27 13:37:01 2017 -0800"
      },
      "message": "Small fix to addconfig in statsd.\n\nAddConfiguration now returns false if the incoming byte array can\u0027t\neven be parsed into the expected proto format. Unfortunately, we\ncan\u0027t fully evaluate if this configuration is valid. Still, this\ngives the caller a chance to know that the parameters it sent can\u0027t\neven be parsed.\n\nTest: Tested that statsd still builds.\nChange-Id: I7ba7c64adc4bc77549d5e9133e212a4870645786\n"
    },
    {
      "commit": "d10f7b1c7bdb1c66aa04148945cae9733ee4cadf",
      "tree": "a914badb372ba8663bddf2c6ea833819901c4e40",
      "parents": [
        "247791f9ceaed13e639587aa4d046078252e2c7a"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Dec 18 12:53:50 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 20 18:45:43 2017 -0800"
      },
      "message": "Add log source filtering in statsd to filter out spams.\n\n+ Add log source whitelist in StatsdConfig\n+ Some changes in UidMap API. Listener needs to be wp instead of sp.\n+ Update dogfood app config to have log source\n+ Increase the stats service thread pool size to 10 (9+1).\n\nTODO: add unit tests(b/70805664). This unit test takes some time to write.\n\nTest: statsd_test \u0026 manual\n\nChange-Id: I129b1cc13db5114db7417580962bd7cc4438519d\n"
    },
    {
      "commit": "2794da220fa853c109905586a87202eff361c175",
      "tree": "93e647c1c6d9b8eb1fd09a65b98a5b35cdaf2010",
      "parents": [
        "ad7cd2b9ae23c02fbb98046b2145dc5687c3ebbf"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 13 16:01:55 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 13 16:14:28 2017 -0800"
      },
      "message": "Remove dead code in statsd\n\nRemove dead code and shared lib.\nAnd fix a bug in ValueMetricProducer\n\nTest: statsd_test \u0026 manual\nChange-Id: Ie76bfc02e14ae6a0fa9f8933751fd06397de9411\n"
    },
    {
      "commit": "03faf093301847f0ac293ce8d6fcb0bce657a841",
      "tree": "f6f49d07042a2a9f8aec5352fdec463628378db2",
      "parents": [
        "54edf5df21094b5cc62fd3014e31f8ab0bee1074"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Dec 12 00:17:50 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Dec 12 00:17:50 2017 -0800"
      },
      "message": "Migrate disk directory from /data/system/ to /data/misc/\n\nTest: statsd, statsd_test\nChange-Id: I6d2fe97afd79fb9b36d180d5e6e6a7a166a228b7\n"
    },
    {
      "commit": "1d0136d322899cd9db4416c22873ee7ed01d843a",
      "tree": "95f260a1efbe1d74b5e2289da8710cddb210f62a",
      "parents": [
        "3834e91e1341af979c17def675369071da7ad882"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Dec 01 11:13:32 2017 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Dec 07 17:59:30 2017 -0800"
      },
      "message": "Anomaly detection statsdstats\n\nAdds statsdstats for tracking the number of anomaly alarms registered.\n\nTest: adb shell data/nativetest64/statsd_test/statsd_test\nBug: 67978682\nChange-Id: I4aa0539a13c60ccb3b7fd2a4f41c4ad867f3a4ea\n"
    },
    {
      "commit": "d5b9266f013f917dc314bb2151164a5a752fa548",
      "tree": "d6302929d4b524f749384ce51d5cd173e65f083c",
      "parents": [
        "c823b876c1f0afdf1e153f2cdbf3cbaef7b7db7c",
        "3accca05ddcad9d0b1b313eae49f273e39121d3c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Dec 05 20:12:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 20:12:17 2017 +0000"
      },
      "message": "Merge \"Add major version code to platform.\""
    },
    {
      "commit": "3accca05ddcad9d0b1b313eae49f273e39121d3c",
      "tree": "7aca880abfecad17d7e3e1ad82e7891e480078a3",
      "parents": [
        "dc3a8c7f84bf3673e184ce4acc592a1df9402746"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 20 09:32:11 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 04 13:02:10 2017 -0800"
      },
      "message": "Add major version code to platform.\n\nIt turns the version code into almost a 64-bit integer, with the\nnew major part being the upper 32 bits.\n\nThe only tricky part about this is the backup manager, since it\nstored 32-bit version codes in its backup data sets.  This is dealt\nwith by, when the major version code is not 0, writing MIN_INT as\nthe version code and following that by the full long version code,\nwhich we can detect when reading.  Note that this makes backup sets\ncontaining apps with major version codes incompatible with older\nversions of the platform.\n\nBug: 64459786\nTest: Added in Change-Id: Iab8a682b62103babd6c16a56b8dc1e97d7078658\nChange-Id: Ibfffe235bbfcf358b3741abd3f7197fdb063d3f3\n"
    },
    {
      "commit": "2e8f3807379f5d5d151ad2cb434d8a7aca910238",
      "tree": "0b67079827a7368229fbb39915907839b73189f1",
      "parents": [
        "d796c9062e9201ef8cbdb59abd982cd16f9b8ae1"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Nov 22 10:56:48 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Dec 04 10:23:28 2017 -0800"
      },
      "message": "Adds new API to retrieve statsd metadata.\n\nThis API can be used by clients to gather stats about statsd, eg.\nmemory usage, number of metrics/matchers, etc. This data can be used\nto debug if devices are not providing expected metrics. The metadata\nwill be for all configurations, but will not contain the actual\ncollected metrics since those might have privacy implications.\n\nTest: Tests that statsd and Android still build.\nBug: 69522276\nChange-Id: I8e0fedc142f5deed7be6e6309f9444e67d8369ce\n"
    },
    {
      "commit": "aa39bc739aff77b23d1eb214cf05f65a3fb7ccf5",
      "tree": "93ff371d49e4ace0d3220291fc61d3175520ef66",
      "parents": [
        "61e1386b3ac290a42c6f9fd3048303db89fbe18f"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Dec 01 11:16:50 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Dec 01 11:16:50 2017 -0800"
      },
      "message": "Return correct results in StatsManager APIs\n\nTest: manual\nChange-Id: I12f392beb082a8919b85a4f617a616c8344c1e3a\n"
    },
    {
      "commit": "4f0bb193bd2c8ca88d46a8ce4aa27cb7debb34c9",
      "tree": "c24addcba1874241a258c170f9f046209d844c7d",
      "parents": [
        "5235e10b70019af8248391f6c3cc7036c1e3658a",
        "b236c86b81a1e58fce6fe576dd336764138899d0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 30 23:11:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 30 23:11:49 2017 +0000"
      },
      "message": "Merge \"allow dump_report command to output proto binary in addition to text\""
    },
    {
      "commit": "b236c86b81a1e58fce6fe576dd336764138899d0",
      "tree": "c6477cbf7a04e238f88aedf6eb2f65f5ba2e9e87",
      "parents": [
        "409743395c13451e8324675775c8e0b03167771d"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Nov 28 22:20:44 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Nov 30 09:59:04 2017 -0800"
      },
      "message": "allow dump_report command to output proto binary\nin addition to text\n\nTest: cts test\nChange-Id: I439a371d54a57116cf2ad85899850ac4783101e2\n"
    },
    {
      "commit": "c136f45aee2c193e954c107f35109ccc8b1146b3",
      "tree": "5a0d04c466e980fab634ba0eb2c55b200a7f8936",
      "parents": [
        "22b94c3f0f8d3937efd15aa787d3084fd8e01c9e"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Nov 27 11:52:26 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Nov 29 14:55:15 2017 -0800"
      },
      "message": "Adds guardrail for memory usage for statsd uid map.\n\nChecks if current memory usage of uid map is above a configured limit\nand if so, we start deleting snapshots. If there are no more\nsnapshots, we begin deleting two of the deltas. Also records stats\nin the guardrail StatsdStats. Also fixes an edge case where a config\nis added after the snapshots are added. We request a snapshot of all\ninstalled uid\u0027s at that moment. Finally, adds the uid map memory size\nwhen determining if we should send a broadcast to trigger collection.\n\nTest: Added unit-tests and check they pass on marlin.\nChange-Id: Id5d86378bd1efe12a06b409164c777c0c6f4e3ab\n"
    }
  ],
  "next": "74fed9729fdabff8d2c5a3da89eac26b5aff21d4"
}
