)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "74fed9729fdabff8d2c5a3da89eac26b5aff21d4",
      "tree": "bd7b0bdb948bceadab3c8664f8792350e13a6c5f",
      "parents": [
        "6f45a394c55e7b2cfe58e52da3a2254e70d71e54"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Nov 27 14:42:42 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Nov 28 22:58:24 2017 -0800"
      },
      "message": "Update adb command to remove all configs from statsd\n\nBefore this change we were only clearing configs from disk.\nThis change will allow clearing from memory as well. Also,\nthis change fixes a bug where the iterator moves to the next\nelement before removing the key from mConfigReceivers\n\nTest: statsd, statsd_test\n\nChange-Id: I9f5e0aced9b89bae7b19ae6d8490c076557fbb08\n"
    },
    {
      "commit": "3e585ecb513bf8294cc36a4d8d6da97b9726ab22",
      "tree": "01517a5213f421a592e013d41606dfdbd2bb24e0",
      "parents": [
        "aafee0d4e69be06be53e3b3c6ca478e628985b89",
        "69f1baf7dd3d6e595abdae000adf0f197558d0ea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 28 06:58:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 28 06:58:54 2017 +0000"
      },
      "message": "Merge \"Some fixes in StatsdStats, and add some unit tests\""
    },
    {
      "commit": "69f1baf7dd3d6e595abdae000adf0f197558d0ea",
      "tree": "7e5bf73441517148786c10d8a2f6312ba69d3ea3",
      "parents": [
        "c8862caf4f2deebe7e81f8a291233fa1035ecdd4"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Nov 27 17:25:36 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Nov 27 20:45:16 2017 -0800"
      },
      "message": "Some fixes in StatsdStats, and add some unit tests\n\n+ Add timestamp for when metric data is reported.\n\nTest: statsd_test\n\nChange-Id: Ief5ec5172feed4ec74b7422b77cf69ec8361ef2f\n"
    },
    {
      "commit": "cc5adef2d0c5f96a225fd69517fd1eecb557f46d",
      "tree": "d2e3099200fb40ba1ff3b75c68d47f380a76a221",
      "parents": [
        "d12e276f6ae35a1e889c6d4de97688903c49001b"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Nov 21 14:36:23 2017 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Nov 27 15:35:40 2017 -0800"
      },
      "message": "Statsd anomaly detection - fixes\n\nFixes a few items in AnomalyTracker, especially to do with what happens\nwhen an anomaly alarm fires.\n\nTest: unit tests still pass\nChange-Id: Ia89bd617442e952e587336b890c3ca67430b5e21\n"
    },
    {
      "commit": "b356151e63140085cb96fa16804ee18b3862a4fc",
      "tree": "ecb892f399742cc0d7190b7700379b1a120bcb1e",
      "parents": [
        "16fd2e9a9a0a064491196d02957c7e94eaa870a7"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Nov 21 18:07:17 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Nov 27 10:52:54 2017 -0800"
      },
      "message": "Add StatsdStats and guardrail.\n\n+ StatsdStats is the global class that tracks the stats about statsd.\n\n+ Added guardrail for classes that have a map which could potentially grow\n  unboundedly with the number of logs.\n\nTODO: add unit tests \u0026 CTS for StatsdStats, and guardrail\n      add stats for pulled atoms.\n\nTest: statsd_test\n\nChange-Id: I0ea562de4dd3f6162f7923a9c193420b482c1d51\n"
    },
    {
      "commit": "947fbce521d9e8377df03e3c1c31884ed5577f32",
      "tree": "cc8bda1b030cf36f30ac1a6a9078291c73d2db16",
      "parents": [
        "74b1513fe69cbf641e2dd84bc37194db80c39480"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 22:50:23 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 22 18:39:23 2017 -0800"
      },
      "message": "Captures metrics on disk when devices reboot and shutdown. Specifically,\n\n1. Create intent receiver in StatsCompanionService to listen to shutdown\nevents.\n2. Create StatsWriter class to handle disk writes and deleting files.\n3. Update StatsLogProcessor, ConfigManager, and StatsService to handle\nfiles on disk using StatsWriter.\n4. Add a wrapper for ConfigMetricsReport.\n\nStill TODO is to be able to add a guardrail to prevent accumulating\nexcessive amount files on disk, which will be followed up by another\nchange.\n\nTest: statsd, statsd_test\nChange-Id: Ia0b3af315af545daa8b0078b3700c600aa7c285f\n"
    },
    {
      "commit": "7c334a129e93e405a72e8299a1cd928af079d14f",
      "tree": "654c6e4115c465fa69667a64e4628c9b2769ea28",
      "parents": [
        "916c83d2271d6d536e3ca2ea2b57892d9a15470c"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Wed Nov 22 14:24:24 2017 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Wed Nov 22 14:28:00 2017 -0800"
      },
      "message": "Make member function as const whenever possible.\n\nTest: unit tests passed.\nChange-Id: I751cabf305a4b5aa2095853cc951837da0df4c78\n"
    },
    {
      "commit": "d215a23179c90eb9f953704fa3ee9c5e9d6dc1df",
      "tree": "76c847b7788125f4d990317ade0c860e4ca1ed52",
      "parents": [
        "acabfe919883bc22c21c89f92a13fb6364b23e69",
        "8d9989bb376f3937d9c8fef07c9cc65ef78cbcae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 22 00:01:12 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 22 00:01:12 2017 +0000"
      },
      "message": "Merge \"The first step towards adding a guardrail.\""
    },
    {
      "commit": "e2cd6d509b17894b95d14523ae3e7c4c7a9a74e3",
      "tree": "2b7ad7cfd0e1f17634e62cea253cc013572fb4ee",
      "parents": [
        "809565b7690ee6d5a504f04c5730d07841a54443"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Nov 09 20:38:30 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Nov 20 15:37:24 2017 -0800"
      },
      "message": "1/ Duration anomaly tracker with alarm.\n2/ Init anomaly from config based on the public language.\n3/ Unit tests for anomaly detection in count/gauge producer.\n4/ Revisit the duration tracker logic.\n\nTest: unit test passed.\nChange-Id: I2423c0e0f05b1e37626954de9e749303423963f2\n"
    },
    {
      "commit": "29f69e8f0442f78dba468a15e290fe94729263a5",
      "tree": "34551761c4019377408c1a7964fabf92c4a3dc6a",
      "parents": [
        "28306600e6769ce708897d2a2c6b852228e2a9de"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Sun Nov 19 14:56:37 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Nov 20 11:13:19 2017 -0800"
      },
      "message": "Remove IStatsCallback aidl from master\n\nTest: statsd, statsd_test\n\nChange-Id: Idd0fb945b62f3a139a0db07f1014a3c4a4e2f5f8\n"
    },
    {
      "commit": "8d9989bb376f3937d9c8fef07c9cc65ef78cbcae",
      "tree": "68e318840a296207746f8e2d5c43ebf04d76fa01",
      "parents": [
        "ae6a83a1cd729376fda3a849714b529f9666f4cb"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Sat Nov 18 18:54:50 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Sat Nov 18 19:26:07 2017 -0800"
      },
      "message": "The first step towards adding a guardrail.\n\nAdded a malloc debug cmd to find memory leak and where\nthe most heap allocations are with backtrace.\n\nMore info: malloc_debug/README.md\n\nThe util class is borrowed from audio server.\n\nUsage:\n\nadb shell stop\nadb shell setprop libc.debug.malloc.program statsd\nadb shell setprop libc.debug.malloc.options backtrace\nadb shell start\nadb shell cmd stats meminfo\n\nAlso,\n\nadb shell dumpsys meminfo [statsd_pid]\n\nalso gives you the overall summary of the memory usage.\n\nTest: manual\n\nChange-Id: I4eb4167466a748ea0c3d9fd39e45d9900bc00fc2\n"
    },
    {
      "commit": "4d889e635d1def2a0475c509ef6f471d9371fcf0",
      "tree": "7144659ef2b33fd3df1059907bd2bfd0a9f815f4",
      "parents": [
        "b3bd84d71dec39ed8af73724ad8504fe9e5d0cfb"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Nov 17 15:44:48 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Nov 17 17:36:07 2017 -0800"
      },
      "message": "Resolve segfault when running send-broadcast command while\nstatscompanion service is not connected\n\nTest: statsd, statsd_test\n\nChange-Id: Ie98de1884f8d852c31c14db146d3da44cfc5aa8b\n"
    },
    {
      "commit": "fe7a60e9ae193e3b7abe75412381be079f4ae390",
      "tree": "04e5e9dd8a8d2f6d63f1c1cd245f88106643b228",
      "parents": [
        "3b50381a137e34b97760b5956e010ae843cbae49",
        "1d7b0cd6b54e3b3ec8efdffd47b40cdd54c4e8d7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 18 00:48:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 18 00:48:34 2017 +0000"
      },
      "message": "Merge \"Support StatsD sending broadcasts.\""
    },
    {
      "commit": "aedbfdfa4812ee16e24c6e7e07d97684b91f046a",
      "tree": "4af2194399493dabce24afab74a9007b29e1742e",
      "parents": [
        "24c992479799c8330f6b837d504bac7970310947",
        "3fca5ba3a7cb4a5090b0c9cd6c4710836afd9c3e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 17 23:06:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 17 23:06:50 2017 +0000"
      },
      "message": "Merge \"Fix incorrect adb shell cmd help command for pull-source\""
    },
    {
      "commit": "1d7b0cd6b54e3b3ec8efdffd47b40cdd54c4e8d7",
      "tree": "8bb111077bb65a183ae0ce0740c42e380981b4f6",
      "parents": [
        "24c992479799c8330f6b837d504bac7970310947"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Nov 15 14:20:04 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Nov 17 14:57:50 2017 -0800"
      },
      "message": "Support StatsD sending broadcasts.\n\nStatsD will send a broadcast when we\u0027re 90% of the way to our\nallocated memory limit for the configuration. If the memory usage\ngoes over the limit, we just lose all the data for this config.\n\nAlso modifies the adb shell commands to facilitate debugging of the\nbroadcasts.\n\nTest: Manually tested on marlin-eng with custom gmscore code.\n\nChange-Id: I517a15bd4c959aa221802f84a51f13141a725102\n"
    },
    {
      "commit": "3fca5ba3a7cb4a5090b0c9cd6c4710836afd9c3e",
      "tree": "1e1fd136596a83e0e6d1118762629110fd1a7ac0",
      "parents": [
        "87c58f95e9485e24660f645216ac7d8b924741e7"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Nov 17 13:22:52 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Nov 17 13:22:52 2017 -0800"
      },
      "message": "Fix incorrect adb shell cmd help command for pull-source\n\nTest: statsd should pass, but it\u0027s not required as it\u0027s just an update\nin help instruction.\n\nChange-Id: I36f4e4794ae8066abdeaac98db5e679a3bcf0a06\n"
    },
    {
      "commit": "13378dd01acefebfb872d0cdff123b98253ee43d",
      "tree": "f522cca6866e7a2b3eae96b83148efef668b6fef",
      "parents": [
        "3674b32218dc3bd38a30be2737b9f62234c90852",
        "7ee94150ab5ad435d8dd4e9715a5547e16863292"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 17 20:14:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 17 20:14:01 2017 +0000"
      },
      "message": "Merge \"fix the permission check crash in statsd.\""
    },
    {
      "commit": "7ee94150ab5ad435d8dd4e9715a5547e16863292",
      "tree": "0ab3052ab3e95d823ec5c76db1a460b8f76fd8cf",
      "parents": [
        "902cb0b68bdd889063d90de52b24f2aea8990ae2"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 17 09:44:40 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 17 10:20:30 2017 -0800"
      },
      "message": "fix the permission check crash in statsd.\n\nAnd change the fake config uid to be 1000, so we can dump it from the test app.\n\nTest: manual\nChange-Id: I99b4cd28b351add8cf3e315e1dccf8cf511a0be8\n"
    },
    {
      "commit": "87d983cf6f609cf3467d05d92bba30329953fbdb",
      "tree": "4ba4e72413ae7e66c680864c304bf9ed87475cbb",
      "parents": [
        "fb9ec66ef025fed04b12c90a0c279a8b0296cfb8"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Nov 14 21:31:43 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Nov 16 16:25:34 2017 -0800"
      },
      "message": "Write statsd configuration to disk and add cmd to clear it\n\nTest: statsd, statsd_test\nChange-Id: Iba37a7f295256d24969185bdde6cbf28f9b89a55\n"
    },
    {
      "commit": "0feae94babf0518ac28b7c529b4e16762d48e6de",
      "tree": "e262d1057ceb7b7477430c21fbd3e84b0c8d6c74",
      "parents": [
        "1610206b04c16bccd0847b7af1faa2ece523850e"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 14:38:48 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 14:39:22 2017 -0800"
      },
      "message": "Fix AOSP copyright years in statsd\n\nTest: no test needed\n\nChange-Id: I230b7d51eb00dafb16913d038475c3ac14b44096\n"
    },
    {
      "commit": "adaf8b344e312853530e276ceff05783133ecf17",
      "tree": "e650b5b1f29ba71f5eedbf16d57e4dad809fd1e6",
      "parents": [
        "2dd2cbcb12a21adccd3c349590a01e7ed009f679"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Nov 03 15:42:08 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Nov 13 19:37:12 2017 -0800"
      },
      "message": "Adds client API for interacting with statsd.\n\nThis API will primarily be used by GmsCore to send updated configs.\nAlso, sending a config will implicitly notify the StatsD that this\nclient wants to know when it should request data for this config.\n\nWe send a broadcast so that all interested subscribers can know if\ndata needs to be pulled.\n\nTest: Manually tested that sending broadcast works via new adb\ncommand added in StatsService.\n\nChange-Id: I23cdd1df706036e14b32c3d01af30c3d4af819fa\n"
    },
    {
      "commit": "5305e1ddc22bfe9ad941cb2550987aaba8de234c",
      "tree": "6327d37eec07224d85b1e91f67dd2cfc582c7a92",
      "parents": [
        "36e94d071c5c590d70a552dd4daed1d39a0e83f9"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Oct 31 13:49:36 2017 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Nov 02 14:34:05 2017 -0700"
      },
      "message": "pull resource power manager stats into statsd\n\nTest: tested on device and check output\nChange-Id: I65932a5527d6099e12546b6928a24f3616e54e16\n"
    },
    {
      "commit": "b3dda41a5a48ddfa44dc8fa939ab495926a0195d",
      "tree": "452181236dd41eae227390d496ae691599cd29d7",
      "parents": [
        "34961873947d64896cd392af81b57ffa393f7175"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Oct 24 13:41:59 2017 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Nov 01 15:58:45 2017 -0700"
      },
      "message": "reretry ValueMetric implementation and pulling mechanism\n\nNote:\nThis is for value metric. The default operations is sum the diffs.\nThe test uses kernel wake lock, which also needs dimension by kernel\nwake lock name.\n\nThe test is a bit cumbersome as it needs StatsCompanionService to do\nthe alarm, which is not exact alarm.\n\nThe internal state of a slice of bucket would look something like this:\n\n4:ipc0000005e_727_android.hardwar\n0      0\n4:SensorService_wakelock\n40      64\n4:ipc0000005c_727_android.hardwar\n...\n\nTest: manual test on device.\nChange-Id: I2ed0ac7d3c5fcba8b7611d46f38a38ffd8bdc92a\n"
    },
    {
      "commit": "5154a379303ab90a2b2914676a4441917a329b5d",
      "tree": "eed7f5ea48e8f21770acd545faa1a03171c42de6",
      "parents": [
        "473b3345a763d45ee93214322f8d984ed4dd60af"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Oct 30 22:57:06 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Nov 01 10:07:21 2017 -0700"
      },
      "message": "Adding multi layer aggregation in DurationMetric\n\nNewly supported metrics examples:\n\n1) Compute [Total|Max] duration of [an app] holding [ANY] wake lock while [this app] is in\n   [background] and [screen off], bucket size 30seconds, and slice output by uid.\n\n2) Compute [Total|Max] duration of [ANY app] holding [ANY] wake lock while [this app] is in\n   [background] and [screen off], bucket size 30 seconds.\n\n+ DurationMetric proto has a \"what\" which is a SimpleCondition. It defines the atom level start\n  and stop of the duration timer, and it has its atom dimension. e.g., for wake locks, the atom\n  dimensions wil be uid and wl name.\n\n+ Now dimension is explicitly specified in SimpleCondition proto instead of inferred from the \"link\"\n\n+ Added support for \"Or\" and \"Max\" through 2 layers of aggregation.\n\nTODO: (1) The way we track slicedCondition in duration metric is not efficient. optimize!\n      (2) The output dimension should all use int32 instead of KeyMatcher. Fix in a future cl.\n\nTest: Added some unit tests using gmock. Will add more unit tests.\n\nChange-Id: I58a827624f01f9a54fcb80709c4de4ff94a8bc67\n"
    }
  ],
  "next": "31eb67b3498d326659b2b164ff367a01a793d641"
}
