)]}'
{
  "log": [
    {
      "commit": "dba47fcd09a50bdddcf6509d0766dfca3a5d39a7",
      "tree": "2730e0616e5789099ffd9911e7c21ef316d69766",
      "parents": [
        "89b182890c15451e75c5ccf938f2de833b757bd6",
        "eee317b7b67f829b89eb62247fa58d9c30bb3698"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 19 20:45:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 20:45:55 2018 +0000"
      },
      "message": "Merge \"Atoms: Mobile Connection\" into pi-dev"
    },
    {
      "commit": "f5de606f5139cf21d1198190bda62965dd2028e9",
      "tree": "7986ee17b5281e223498dbab8a5f59e646074872",
      "parents": [
        "a6268f8c9d7e59c77cf8e144ccd21547a1ffaede",
        "8faaa01489d81b815e62e4416e78e4b5500b487a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 19 18:14:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 18:14:18 2018 +0000"
      },
      "message": "Merge \"Deletes default allowed_log_sources in statsd.\" into pi-dev"
    },
    {
      "commit": "eee317b7b67f829b89eb62247fa58d9c30bb3698",
      "tree": "29b44556a73f63ded0adb0ca28185b3ab07a98bc",
      "parents": [
        "f8cb545afb8f8ec35c3b028f47247e359a6602db"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Wed Mar 07 19:28:05 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Mar 19 09:48:22 2018 -0700"
      },
      "message": "Atoms: Mobile Connection\n\nAtom definitions for MobileConnectionStateChanged and\nMobileRadioTechnologyChanged\n\nAlso cleans up batterystats.\n\nBug: b/72320589\nTest: verified logs appear in adb logcat -b stats\nChange-Id: I9feb258cf6dd4a8c8bf1cffc9566b5d0a851a9fa\n"
    },
    {
      "commit": "790befca1deb009e578a05e42504d95e9f1a03b0",
      "tree": "6f9695ebea692b816436b3a21a4e763d172c2467",
      "parents": [
        "ad121b9fdc2de38fb79dfd3c7444e00743629f27",
        "555ad976372d025875651c6eea8811c9d152c698"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 19 05:54:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 05:54:22 2018 +0000"
      },
      "message": "Merge \"Delete TODO about renumbering statd atoms\" into pi-dev"
    },
    {
      "commit": "ad121b9fdc2de38fb79dfd3c7444e00743629f27",
      "tree": "3d7d5046437c8d2879c934c11ed0073a4147e8bd",
      "parents": [
        "0487601e57fa1d808ede432a86337bc1625677a6",
        "6a1d3af7f5167be234cf8b77b927c6b366660bfa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 19 05:49:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 05:49:27 2018 +0000"
      },
      "message": "Merge changes I3ffb6e97,I689df136,Ia67a8eb6 into pi-dev\n\n* changes:\n  Statsd: remove DurationAnomalyTracker.resetStorage\n  Statsd AnomalyDetection stopAlarm also checks old\n  Statsd AnomalyDetection improvements\n"
    },
    {
      "commit": "555ad976372d025875651c6eea8811c9d152c698",
      "tree": "79a482478452d4a190111c397c57c597972ca9cd",
      "parents": [
        "d357342a4a761598742f4b1b60f70a4e9b88f997"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 15:47:57 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 15:47:57 2018 -0700"
      },
      "message": "Delete TODO about renumbering statd atoms\n\nTest: none\nBug: 72553942\nChange-Id: If59ee407dffaed713a3a2f7543314aef3e70ef2c\n"
    },
    {
      "commit": "6a1d3af7f5167be234cf8b77b927c6b366660bfa",
      "tree": "5b0075973fb929c67be34a1ca276b15ca92503db",
      "parents": [
        "3e8cd35b551827234aa115700e50abb6c4721597"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 15:25:49 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 15:25:49 2018 -0700"
      },
      "message": "Statsd: remove DurationAnomalyTracker.resetStorage\n\nThe explicit resetStorage function in the subclass isn\u0027t needed.\nIt does exactly what its superclass does.\nThe previous check for !mAlarms.empty() was actually not needed, since\nthere can be legit cases where !mAlarms.empty() (namely, when the\nmMostRecentBucket is moved forward initially - we may call reset, but we\nstill want the old alarms to remain).\n\nTest: still pass\nChange-Id: I3ffb6e97c02b75170c246f57d55ccf59cd368b9c\nFixes: 74607818\n"
    },
    {
      "commit": "3e8cd35b551827234aa115700e50abb6c4721597",
      "tree": "c0e06f024330cdd8e27756c09d1ce15d0bbaf115",
      "parents": [
        "6bf9825b1575bfc3c62ef0a5129f94b6a776ef66"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 10:09:59 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 13:23:19 2018 -0700"
      },
      "message": "Statsd AnomalyDetection stopAlarm also checks old\n\nEvery time stopAlarm() is called, it should also,\nright then, check to see if the alarm should actually\nhave already fired (but didn\u0027t due to AlarmManager lag).\nRight now, the client needs to do this check separately,\nbut they always go together. Indeed, MaxDurationTracker\nforgot to do the check, which is a bug. It would make\nmuch more sense if the stopAlarm takes care of it for\nthem, to prevent such mistakes.\n\nBug: 75273733\nTest: make statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell data/nativetest64/statsd_test/statsd_test\nTest: cts-tradefed run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.alert\nChange-Id: I689df13690df822090ac34b1171e948be1ad0d9f\n"
    },
    {
      "commit": "6bf9825b1575bfc3c62ef0a5129f94b6a776ef66",
      "tree": "c7b7c9115869bf497e70ec88fcb8354839cfea04",
      "parents": [
        "d357342a4a761598742f4b1b60f70a4e9b88f997"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Mar 14 10:44:24 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 16 11:34:21 2018 -0700"
      },
      "message": "Statsd AnomalyDetection improvements\n\nVarious fixes and improvements to statsd\u0027s anomaly detection.\n\nBug: 74607818\nTest: make statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell data/nativetest64/statsd_test/statsd_test\n\nChange-Id: Ia67a8eb6da0ea9293f698949e1565f7f024a7cb9\n"
    },
    {
      "commit": "8faaa01489d81b815e62e4416e78e4b5500b487a",
      "tree": "97127c6dd26878d62a543770ec791c8822de3244",
      "parents": [
        "edd7215f1c719e49d3ceb4f60e4f06b83402a51b"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Feb 28 15:54:36 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Mar 15 17:45:58 2018 -0700"
      },
      "message": "Deletes default allowed_log_sources in statsd.\n\nWe should fail right away if someone forgets to set this field\ninstead of setting default values since this may lead to hard to\nexplain bugs in the future (eg, why isn\u0027t systemui logging an atom\nto a config).\n\nBug: 74608359\nTest: Verified unit-tests still pass on marlin-eng.\nChange-Id: Ibd8a6ccbc5cc8d2dfb8a1577c64bf9b49822a2c3\n"
    },
    {
      "commit": "f384b900498b552c776931c8873e4bd03af36fe5",
      "tree": "e48bef946e80a43e27e37c61297a1bf0ee93914e",
      "parents": [
        "50f118a1214d00a4be1cadc9efb2bcf787927f3f"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Mar 14 18:36:45 2018 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Mar 15 13:33:04 2018 -0700"
      },
      "message": "Removes stats_log proto from uid map in statsd.\n\nWe don\u0027t need to parse the proto of uid map, so we use the\nProtoOutputStreame class to generate the binary form of the proto\noutput that\u0027s needed for parsing the uid map data.\n\nTest: Verified unit-tests still pass.\nBug: 74010813\nChange-Id: Ia2f7572f3b78bb6f7b60e8b14cf5d65428469ab6\n"
    },
    {
      "commit": "a825c8ee5d3b0c2dac954f2994d70968759eb1d2",
      "tree": "d9356cb1d32e87a3fb320501bec4ede53501ca84",
      "parents": [
        "9ba6ed4d129918848e8e4bada20478beacd7c666",
        "e06cfd777a501eca17f8dd796b32ad61002c5875"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 15 02:27:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 02:27:15 2018 +0000"
      },
      "message": "Merge \"Support slicing by chain.\" into pi-dev"
    },
    {
      "commit": "8568931d6f73081a394230fedb4021865357e1c2",
      "tree": "281fcdbd9d0e543daa880e6c54194b4e3e465f35",
      "parents": [
        "3731e47d23f50179e44c7db940c479619fac5364",
        "665208d74345d779bed8724862e8d0d1c46a7a76"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 23:05:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 23:05:33 2018 +0000"
      },
      "message": "Merge \"Add stats from storage manager to dumpsys result\" into pi-dev"
    },
    {
      "commit": "e06cfd777a501eca17f8dd796b32ad61002c5875",
      "tree": "3622c797a04cc76d2a68ac0ca9bd014aee22611d",
      "parents": [
        "d357342a4a761598742f4b1b60f70a4e9b88f997"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Mar 10 23:22:59 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Mar 14 15:36:24 2018 -0700"
      },
      "message": "Support slicing by chain.\n\nBUG: b/73975181\n\nTest: statsd test\nChange-Id: I913ae0f68ff21ed0703bb5da9c60d3eaa3bf5981\n"
    },
    {
      "commit": "665208d74345d779bed8724862e8d0d1c46a7a76",
      "tree": "3f3145a4634856e7303deeb5fc7492d34b774658",
      "parents": [
        "cb7b04a56efa5edb3ce6cea5818ea977fa806a4e"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Mar 13 18:08:09 2018 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Mar 14 12:46:27 2018 -0700"
      },
      "message": "Add stats from storage manager to dumpsys result\n\nBug: 74601313\nTest: manual test, statsd_test\nChange-Id: Ifdde6bb10d29f3983b0c27a66a6e30f1f40308ee\n"
    },
    {
      "commit": "c7ce1a09783e7b1d32576d381e9bfe312c57c089",
      "tree": "33ae598c75afc5773d5fa796f40e3fea98c5b8f6",
      "parents": [
        "a9e73469c59df4ea596d3872e90b1d13fcbac779",
        "3fa5d7fb236f263125bc6364ea693e5e9f122976"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 19:03:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 19:03:06 2018 +0000"
      },
      "message": "Merge \"Add wall clock timestamp for ConfigMetricsReport and gauge atoms.\" into pi-dev"
    },
    {
      "commit": "a9e73469c59df4ea596d3872e90b1d13fcbac779",
      "tree": "bcc7c702cc2743f666700669ca3f2fd200a9ca89",
      "parents": [
        "574182372975e8ed5b6dcb6ca0dd6f8c6ce72de4",
        "b19425e01113f3341c48f5283affd386658281b0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 18:48:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 18:48:20 2018 +0000"
      },
      "message": "Merge \"Remove unused shared lib from statsd\" into pi-dev"
    },
    {
      "commit": "aaadf6663fdc8787947d67bc14841d20094bd072",
      "tree": "195b881502b08f7dcb7641731ce3bb491906d7e0",
      "parents": [
        "dc8e7fa0ae99a3b8f67519de090a119dbda9b622",
        "3f5ab3ff1d66e53c26e3a5951dc0804bca5467a8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 16:51:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 16:51:41 2018 +0000"
      },
      "message": "Merge \"Statsd: Remove storage of bucketNum\" into pi-dev"
    },
    {
      "commit": "dc8e7fa0ae99a3b8f67519de090a119dbda9b622",
      "tree": "fc743fd8ecf2b751b7176c7b9dbfbe9b628b0cc6",
      "parents": [
        "d854d917ecf7826ab5a48c62d0d8496c0b399d6e",
        "a78d00874d4e274937734a1b73aef4b6389eb3cd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 16:45:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 16:45:49 2018 +0000"
      },
      "message": "Merge \"Dump the stats for count/gauge/value metrics.\" into pi-dev"
    },
    {
      "commit": "a78d00874d4e274937734a1b73aef4b6389eb3cd",
      "tree": "e918c2f74cc166b43bd9da17c26a937586a36292",
      "parents": [
        "7557234316248d886cafaedfa6c20297a8508688"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Mar 12 12:02:56 2018 -0700"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Wed Mar 14 16:45:37 2018 +0000"
      },
      "message": "Dump the stats for count/gauge/value metrics.\n\nBug: b/74159560\n\nTest: statsd test\nChange-Id: I1410309ecfdfc2a5becf8d0c620c68a621ebc5fa\n"
    },
    {
      "commit": "3ce667a466423a7359d1dbb9c983aa29888dd5b4",
      "tree": "9a839d668f0b361078b721bee67e2aa786ee613b",
      "parents": [
        "b129d37013ee5c485e86c8057358d6749fd67eca",
        "28d627e4bebf639d457463666b38c60cafa91e9d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 14 05:35:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 05:35:03 2018 +0000"
      },
      "message": "Merge \"Add vendor-logged stats to statsd.\" into pi-dev"
    },
    {
      "commit": "28d627e4bebf639d457463666b38c60cafa91e9d",
      "tree": "703bcd04d05b9e30c76bbbf8556d0889558b4312",
      "parents": [
        "f7e6b29718e3f16d20ba89170379d49aeaf3f18a"
      ],
      "author": {
        "name": "Andrew Chant",
        "email": "achant@google.com",
        "time": "Thu Feb 22 15:17:05 2018 -0800"
      },
      "committer": {
        "name": "Andrew Chant",
        "email": "achant@google.com",
        "time": "Wed Mar 14 05:34:47 2018 +0000"
      },
      "message": "Add vendor-logged stats to statsd.\n\nAdd atoms to statsd that are logged by code residing in /vendor.\nThese atoms are reported from code in /vendor, and\nrely on a vendor-provided /system daemon to log the atoms to statslogd.\n\nTest: Built \u0026 reported manually.\nBug: 74261180\nBug: 74261750\nBug: 74258154\nBug: 74260998\n\nChange-Id: I858a1266c4c212808fb63276439f1dd6cf2a387e\n"
    },
    {
      "commit": "a32913f0871c0556100a6188346f7afbb30fcc4b",
      "tree": "3dad9d8a085537adc049e3a542561c183917f0ef",
      "parents": [
        "feb9daffff9b28a529b4731e7115beb86b2fa2c6",
        "4490765d1552f1a2ae114f9c301386823b930828"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Tue Mar 13 21:38:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 21:38:16 2018 +0000"
      },
      "message": "Merge \"Add a check for duplicate configuration on statsd\" into pi-dev"
    },
    {
      "commit": "3f5ab3ff1d66e53c26e3a5951dc0804bca5467a8",
      "tree": "d56380984386bb9d0fc93f7a2a5a8b981cf2d7bf",
      "parents": [
        "b90670cf1752d79ffed020bf4653b300c417d57b"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Mar 13 12:18:21 2018 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Mar 13 12:18:21 2018 -0700"
      },
      "message": "Statsd: Remove storage of bucketNum\n\nPast buckets had a field mBucketNum, storing the\n\"bucket number\" they represented. Currently, the concept\nof bucket number is used by Anomaly Detection (although this\nmay not be necessary), but these stored values are not used at all,\nso removing them will save RAM.\n\nTest: statsd tests still pass\nBug: 74607818\nChange-Id: Iacc343bc39c5035f6e2f236c03de1d91606eff4c\n"
    },
    {
      "commit": "4490765d1552f1a2ae114f9c301386823b930828",
      "tree": "210d10ab5f8b168e667cd0d39cf5f6e35fe43aac",
      "parents": [
        "81cacb274c0ee2ecf1c2f8a5c9bfc6c0582e0d6c"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Mar 12 20:44:05 2018 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Mar 13 11:15:00 2018 -0700"
      },
      "message": "Add a check for duplicate configuration on statsd\n\nBug: 74349901\nTest: statsd_test, manual testing of functionality\n\nChange-Id: Ia4e3e51bfe61f5f773cecadda23e53d24b768dc8\n"
    },
    {
      "commit": "5d991e1f2530caaa653e41e85d78a0b0c188f180",
      "tree": "cafcd6bbf04cb2c2b87af722ce759340645a2337",
      "parents": [
        "ee83dd2cd04387852997aa4c2cf66120612b9cb5"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Mar 09 19:48:11 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Mar 12 21:03:22 2018 -0700"
      },
      "message": "Atoms: Bluetooth\n\nAdds atom defininitions for some bluetooth atoms.\nLogging will go in aosp. ag/3668205 contained most of this change, but\nis being split up and moved to pi-dev and aosp.\n\nBug: 74457175, 72320489\nTest: build success on marlin\nChange-Id: Ib14a74eabfab08bbae5d4d549244f1022e8c34f0\n"
    },
    {
      "commit": "81cacb274c0ee2ecf1c2f8a5c9bfc6c0582e0d6c",
      "tree": "358493ea807cdacaf59eb39c1177e22bec9df0c9",
      "parents": [
        "9722ec74e0ed00d2cc23c9f7f6c96e32ca57cd1d",
        "058d86982689071f3d26514f0a3c74d9feddf1d0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 12 18:27:02 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 18:27:02 2018 +0000"
      },
      "message": "Merge \"Statsd BroadcastSubscribers can receive \u0027cookies\u0027\" into pi-dev"
    },
    {
      "commit": "9722ec74e0ed00d2cc23c9f7f6c96e32ca57cd1d",
      "tree": "74750108a6242d96289d463d96e3ea4f13f7c5f7",
      "parents": [
        "82bc5baeb505dfbd04eb4fe4a3e3055cfb6ee980",
        "e05c8e777646c51a8fdbda8e2d5ccd35a991d03d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 12 18:25:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 18:25:00 2018 +0000"
      },
      "message": "Merge \"Remove kPullerCooldownMap from code\" into pi-dev"
    },
    {
      "commit": "3fa5d7fb236f263125bc6364ea693e5e9f122976",
      "tree": "5815d5d4dfd07d906f79d65346651ba875c2ee9b",
      "parents": [
        "3dc91c1426ef4da53ea85039c047d25b2de4ef47"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Mar 10 21:50:27 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Mar 10 22:25:28 2018 -0800"
      },
      "message": "Add wall clock timestamp for ConfigMetricsReport and gauge atoms.\n\nFix the bug when serializing multiple atoms in gauge metric\n\nBUG: b/74159560\n\nTest: new test for ALL_CONDITION_CHANGES sampling method.\nChange-Id: I6d33c1efbac92b6e13be2d64c323e090cb1f84aa\n"
    },
    {
      "commit": "072a82abf370d96a6549d401314f1e7bc2dd0538",
      "tree": "d02482422cce2a578e3fd4c974e4bc745e9182d2",
      "parents": [
        "79dd8b9c2229aa23b388915582e5f8f92f535715",
        "423f753ea3c304805d278e0ccbcbf2ef5da311e9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 10 00:55:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 10 00:55:21 2018 +0000"
      },
      "message": "Merge \"statsd AnomalyDetection improvements\" into pi-dev"
    },
    {
      "commit": "423f753ea3c304805d278e0ccbcbf2ef5da311e9",
      "tree": "3e4c9d4a46c415a7e03f88757b4108fdbd7f1c0a",
      "parents": [
        "983c1e54e1ae651ffb4c0f1ce34a561624af6060"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Mar 08 15:45:14 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 09 11:09:51 2018 -0800"
      },
      "message": "statsd AnomalyDetection improvements\n\nRe-add check to make sure that bad config won\u0027t cause duration\nanomaly detection to crash stastd\n\nBug: 74399947\nTest: manual\nChange-Id: Id175d233685c133ec3d4231272fe5708250dee6b\n"
    },
    {
      "commit": "058d86982689071f3d26514f0a3c74d9feddf1d0",
      "tree": "f518bf508a0f0b531faf2e861680cef696317090",
      "parents": [
        "983c1e54e1ae651ffb4c0f1ce34a561624af6060"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Mar 06 09:53:47 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 09 10:44:48 2018 -0800"
      },
      "message": "Statsd BroadcastSubscribers can receive \u0027cookies\u0027\n\nSubscribers can now provide additional Strings that will be passed back to\nit when an anomaly is detected. This way, the Subscriber can be informed\nabout anomaly-specific information has meaning to it.\nStatsd itself does not use these strings and doesn\u0027t care what they are\n- it simply passes them back to the subscriber.\n\nChange-Id: If269872397c4ed2c67e41d54d850cdc664d4f73e\nFixes: 74012329\nTest: run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.alert.BroadcastSubscriberTests\n"
    },
    {
      "commit": "3ce208c1e9015aa61e1250d0896306ff0624b1ca",
      "tree": "ae87eaa0b4d25c2de7c9f81fa953bbdd671d1868",
      "parents": [
        "df9737d28612c269f60db44d2f1407f179588c78",
        "66781e1bf545f715d762d147efad589832b9cbe3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 07:37:43 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 07:37:43 2018 +0000"
      },
      "message": "Merge \"Add team members in OWNER file\" into pi-dev"
    },
    {
      "commit": "66781e1bf545f715d762d147efad589832b9cbe3",
      "tree": "a10fa795d51eb9e8a6e4a405dc3370a1e2f4defb",
      "parents": [
        "0aa191ccbf159b0d6127cfc190e2c4d5fa319eb9"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Mar 08 18:41:03 2018 -0800"
      },
      "committer": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Fri Mar 09 07:37:36 2018 +0000"
      },
      "message": "Add team members in OWNER file\n\nBug: 74415902\n\nTest: no test necessary\nChange-Id: I39d0a5cb9c6e8520fd29881442e66961096d52fc\n"
    },
    {
      "commit": "7ad26e4bad08ff0ddff69d5ba5babf253f67110e",
      "tree": "e3f53111d66e48348c18dcbbbf249b6306455a21",
      "parents": [
        "f5435948d8b646a7ca3ccb63f51c2775e392de88",
        "2fb5653b9761dba5fa29d9abd84e938e59932075"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 03:23:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 03:23:17 2018 +0000"
      },
      "message": "Merge \"Fix statsd crash due to bad bucket index\" into pi-dev"
    },
    {
      "commit": "ec66e9e726f36144de73c577f5269fedf2231c1b",
      "tree": "2b2c6bb109223fb5d480dfecf4afba0fdf253618",
      "parents": [
        "0aa191ccbf159b0d6127cfc190e2c4d5fa319eb9",
        "1cf2ac5241b848ea160b65604bc894d08cba8518"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 01:18:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 01:18:27 2018 +0000"
      },
      "message": "Merge \"Write data to file when StatsCompanionSerivice (system_server) crashes\" into pi-dev"
    },
    {
      "commit": "b19425e01113f3341c48f5283affd386658281b0",
      "tree": "df79e7b6eba16d245e47392371e0b3c2fe3315bf",
      "parents": [
        "7d968346bf8e2c2e6814cf7ecb25894ced2b23db"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Mar 08 14:38:12 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Mar 08 14:38:12 2018 -0800"
      },
      "message": "Remove unused shared lib from statsd\n\nTest: build statsd, and statsd_test\n\nBug: 72129300\nChange-Id: I0ebff977dabe796799a0d41c64adb2c2f2e9035e\n"
    },
    {
      "commit": "2fb5653b9761dba5fa29d9abd84e938e59932075",
      "tree": "49e577405b4c8f6aee13248a086d93ebba75d15b",
      "parents": [
        "983c1e54e1ae651ffb4c0f1ce34a561624af6060"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Mar 08 11:16:48 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Mar 08 13:34:16 2018 -0800"
      },
      "message": "Fix statsd crash due to bad bucket index\n\nStatsd crashes because predictAnomalyTimestamp requests past buckets\nthat occurred before time began. That\u0027s fine, but statsd needs to know\nthat the data before time began was 0 (instead of reading before the\nbeginning of the array and crashing).\n\nAnomalyTracker\u0027s use of bucketNumbers is in general risky, and should be\nauditted. But this cl will fix the current crashing.\n\nBug: 73825954\nTest: Definitely necessary. Will write during audit.\nChange-Id: I990ff134153f290d3089bfe3440d838f47996b63\n"
    },
    {
      "commit": "e05c8e777646c51a8fdbda8e2d5ccd35a991d03d",
      "tree": "128b09b7ea9a19c8049641e645df06375f3254da",
      "parents": [
        "62ff4029e4cc0184f19301282800609a315d8f0b"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Mar 08 12:43:58 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Mar 08 12:43:58 2018 -0800"
      },
      "message": "Remove kPullerCooldownMap from code\n\nremove dead code\n\nBug: 74032852\nTest: manual test\nChange-Id: I0da74be21bab5842a89ede2a272094ba5ee33d80\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": "13fb7e4eeaf7aee408821afe7ee55a5167e49e59",
      "tree": "a9276dfa03587fdaae989e4090d8dacbafd6778d",
      "parents": [
        "c8a6305ddf61bb87bad9639cace9307886597714"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Wed Mar 07 17:30:49 2018 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Wed Mar 07 17:36:07 2018 -0800"
      },
      "message": "Statsd cpu optimizaton\n\n- cache the changed dimensions in condition tracker.\n- avoid query condition wizard when unnecessary.\n- avoid copy dimension keys in condition key generation.\n\nTest: statsd tests.\n\nBUG: b/73959649\nChange-Id: I17d68e2a82643de3f421309841e75f84c6fd8f43\n"
    },
    {
      "commit": "c8a6305ddf61bb87bad9639cace9307886597714",
      "tree": "b709c7eedc7c784be2bf69de962be2d702b0b0cd",
      "parents": [
        "e840cc4ecab6570a0c8873ed552a231e18cf516e",
        "ec67661bdfe1814039f625575176678219acc7b1"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Mar 08 00:24:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 00:24:00 2018 +0000"
      },
      "message": "Merge \"Refactor cpu stats pullers\" into pi-dev"
    },
    {
      "commit": "ec67661bdfe1814039f625575176678219acc7b1",
      "tree": "e73405411d9c04b9c9932fa32a3bfb0a6a0aca0f",
      "parents": [
        "8c76ca03418884d8e60bda1f5695d44563b20007"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Mar 07 09:19:17 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Mar 07 21:43:00 2018 +0000"
      },
      "message": "Refactor cpu stats pullers\n\nuse same cpu stats readers with BatteryStats so that\n1) both throttle to avoid too frequent pulls\n2) cached value is served within throttle interval to avoid double\npulling by both statsd and BatteryStats\n\nTo run unit tests:\nbit\nFrameworksCoreTests:com.android.internal.os.KernelUidCpuFreqTimeReaderTest\nbit\nFrameworksCoreTests:com.android.internal.os.KernelUidCpuClusterTimeReaderTest\nbit\nFrameworksCoreTests:com.android.internal.os.KernelUidCpuActiveTimeReaderTest\n\nmake -j56 statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell\n/data/nativetest64/statsd_test/statsd_test\n\nTest: cts test, unit test\nBug: 73745189\nBug: 73780619\nBug: 73360959\n\nMerged-In: I10a9bc91ca67fa812f4cd71c4fbd73c1a5ba580e\n\nChange-Id: I10a9bc91ca67fa812f4cd71c4fbd73c1a5ba580e\n"
    },
    {
      "commit": "d137c872cdc5e157c0ff65076689f7c4552a9013",
      "tree": "3c2dffe6115c25dc65faf975c7d3bc12f397bde4",
      "parents": [
        "aa79f03ca6c4c5a3a262aeaf2b608ffd4807ab13"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Mar 07 11:42:04 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nExempt-From-Owner-Approval: Global cleanup\nChange-Id: I26458e41ecb84de91ac9a356a5d4bafb44f463c1\n"
    },
    {
      "commit": "f9500e9c01f6e515e78952beecb827ff80e900a6",
      "tree": "630fbc673c123294ba5f90c2c6a7eae37b500f18",
      "parents": [
        "76439d832f6c4535535d0e3288be9669f76b128b",
        "a883b37fc0bd6ae2536358b23b592a8379d5fed9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 07 00:41:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 00:41:35 2018 +0000"
      },
      "message": "Merge \"Atom: ResourceConfigurationChanged\" into pi-dev"
    },
    {
      "commit": "a883b37fc0bd6ae2536358b23b592a8379d5fed9",
      "tree": "2c6052b4b7fd65b1a72cf7c9db55bb1b8e56cbfa",
      "parents": [
        "983c1e54e1ae651ffb4c0f1ce34a561624af6060"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Feb 15 11:30:01 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Mar 06 17:49:39 2018 +0000"
      },
      "message": "Atom: ResourceConfigurationChanged\n\nLogs when the configuration changes, such as when the screen orientation\nchanges. Logs information including font scale, screen width/height,\nscreen orientation, color mode.\n\nTest: verified atom appears in adb logcat -b stats when screen\norientation changes.\n\nChange-Id: Ifc3f3c62c5e386960b77d78f2ff2f17fc27db2b8\n(cherry picked from commit 8a6df9290f82ee195ecc05df340035a82dc34a40)\n"
    },
    {
      "commit": "5ee0787024cc446a21008ff5710dec19c6afc834",
      "tree": "d4dec75efaf8df8de9385f298d3ff91193048390",
      "parents": [
        "d97a0f1ac58d64462316f2b0d32162a01e3f828c"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Mar 05 18:18:27 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Mar 05 18:18:27 2018 -0800"
      },
      "message": "Use uint64_t instead of long long as API type for consistent reason.\n\nBug: 74118023\nTest: manual\nChange-Id: Icd5f506c76d3a008a79cb6c9d2061962ca7fdd40\n"
    },
    {
      "commit": "076eebfb3d5c2db573972817a6ef587237975d07",
      "tree": "bc3a27aeb32074a979d3cc906146457b8b30cbc7",
      "parents": [
        "3a4f974c911291cdcb18154d21dd5a562f740781",
        "aea8d10b1ed867c31a173ecb678e3a73c430243d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 05 05:43:44 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 05:43:44 2018 +0000"
      },
      "message": "Merge \"Add #alerts to StatsdStats printout\""
    },
    {
      "commit": "b603fb06ba2dfd459f2e9043f3e5432d23834704",
      "tree": "c7199e8f03f1e0caf7738ef5fdccc94a9f7aeb96",
      "parents": [
        "9055c1b6afc2b1afc7b3bb112d994572f858a216",
        "06dba5d79c096b02d3ba6fb73e64451ff12e388d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 23:38:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 23:38:21 2018 +0000"
      },
      "message": "Merge \"Add API to let metrics directly drop data without writing to an output.\""
    },
    {
      "commit": "644e15d5bd476009178bdfb16e0a4ed94255f3e6",
      "tree": "e33bad2f9ec243feda9c2106362d740b42c50e02",
      "parents": [
        "8e4419a087a6112d1a656636175fe765d0cd1916",
        "20e9e6231a1aba79b4e5ae47f3ccfb066920e60f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 19:41:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 19:41:56 2018 +0000"
      },
      "message": "Merge \"Reduce statsd binary size from 730KB-\u003e 664KB\""
    },
    {
      "commit": "a793e508496e12c021881a49fdc17d6a1024eee0",
      "tree": "b94c90cae0eb19db72d8071ce06e6ad199c1b162",
      "parents": [
        "ffcd4bc88f62d49ce3cd178cfbba4c98267e6ab1",
        "99427efbe85cc5dd9bcc40dd47bf05ad8600cecb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 19:12:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 19:12:18 2018 +0000"
      },
      "message": "Merge \"Add the MetricDimensionKey to the log when anomaly happens.\""
    },
    {
      "commit": "aea8d10b1ed867c31a173ecb678e3a73c430243d",
      "tree": "7a4d6adbca4816febf7332cc85e0200e5ab4e2df",
      "parents": [
        "53f259280f76c6d34ca08d32f67ada5d212e434e"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 02 10:37:24 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Mar 02 10:37:24 2018 -0800"
      },
      "message": "Add #alerts to StatsdStats printout\n\nWhen print-stats is called, now #alert\u003d0 won\u0027t always be 0.\n\nChange-Id: If618c9a0890b45f7211f05853f4d97332d7f4cf1\nFixes: 73493830\nTest: Manual confirmation\n"
    },
    {
      "commit": "cbecb1a0060b79d5b1453b793fc32050f2700599",
      "tree": "c6c175b2c27338c7777b2302a2ee6b15149e91fe",
      "parents": [
        "b2cdabf7aa209c20e1c0492855713741e885736b",
        "580ea321b16c71ddec515553761d6f37359bd3a0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 17:54:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 17:54:08 2018 +0000"
      },
      "message": "Merge \"Add StateTracker.\""
    },
    {
      "commit": "06dba5d79c096b02d3ba6fb73e64451ff12e388d",
      "tree": "b9b61d75abe1019a931afaa6428f0b3a16482126",
      "parents": [
        "aec6950118319e93084f4c3d2ba6087e8f7e15df"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Jan 26 13:38:16 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Mar 01 15:22:55 2018 -0800"
      },
      "message": "Add API to let metrics directly drop data without writing to an output.\n\n+ Metrics will do flushIfNeeded() to correctly move the clock and informing\n  AnomalyTracker the past bucket info, and then clear past buckets.\n\n+ We will still keep the current bucket data for the validity of the future metrics.\n\nBug: 70571383\nTest: statsd_test\nChange-Id: Ib13c45574974e7b4e82bd8f305091dc93bda76f5\n"
    },
    {
      "commit": "51b54606d70436f79d812defca3f73bff006149d",
      "tree": "5dd68cf4e5810fd947b6af234938a1fdd79db4ff",
      "parents": [
        "b437f30f286131cc3a01bca7b56ca7dcab37cf74"
      ],
      "author": {
        "name": "Rajeev Kumar",
        "email": "rajekumar@google.com",
        "time": "Thu Mar 01 12:18:26 2018 -0800"
      },
      "committer": {
        "name": "Rajeev Kumar",
        "email": "rajekumar@google.com",
        "time": "Thu Mar 01 13:28:31 2018 -0800"
      },
      "message": "Create a pushed atom that gets logged when the ActivityManagerService detects that an app died.\n\nTest: Manual\nBug: 73660232\nChange-Id: I8e1fda35deb1e6876da0b6638fefea9f1b92b641\n"
    },
    {
      "commit": "99427efbe85cc5dd9bcc40dd47bf05ad8600cecb",
      "tree": "b1d0e97ca2e5b8c1c3bf705ab86c9b2d1dcd3c88",
      "parents": [
        "aec6950118319e93084f4c3d2ba6087e8f7e15df"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Mar 01 13:03:38 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Mar 01 13:03:38 2018 -0800"
      },
      "message": "Add the MetricDimensionKey to the log when anomaly happens.\n\nTest: statsd_test\nChange-Id: I9454da23a95d106a6e70249bb26c04492fee9135\n"
    },
    {
      "commit": "580ea321b16c71ddec515553761d6f37359bd3a0",
      "tree": "bbc7c757480eac4e3db44e6be7bd389cfc8369a0",
      "parents": [
        "aec6950118319e93084f4c3d2ba6087e8f7e15df"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Feb 26 14:21:54 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Feb 28 16:57:03 2018 -0800"
      },
      "message": "Add StateTracker.\n\nStateTracker is a special condition tracker that\u0027s based on a state atom.\nState atoms are annotated in atoms.proto.\n\nThe rules for StateTracker:\n 1. must not have \"stop\". must have \"dimension\"\n 2. must be based on a state atom.\n 3. it must have the all primary fields and the exclusive state field in its dimension.\n\n For example UidProcessStateTracker, will have output dimension {uid, state}.\n\nTest: unit tests added.\nChange-Id: I6b77e58e9fabe61f7326daf929577d8b2cfbf27b\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": "6158952c30497fa10bed5f7955cfb25c394e7593",
      "tree": "1fe5a8f455c55299ce75299bc6895f61134612df",
      "parents": [
        "fa3ed7540676dc33fb2ced05dfa6b8467db5033f",
        "8f42ba0e2c70a441bc7821dd32d5bab1c562b062"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 19:37:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 19:37:05 2018 +0000"
      },
      "message": "Merge \"Avoid reading logs that were processed before.\""
    },
    {
      "commit": "99e8972919da38a7981021f949e83be19adcc602",
      "tree": "5ffa9579de74b13aa09ca85069e1ba8919996755",
      "parents": [
        "69f99c8e1f10add1d2d1ef72978afbc46fe5faf3",
        "9b1140eecdf1b7c0ce56289e91d945312eceebea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 04:50:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 04:50:17 2018 +0000"
      },
      "message": "Merge \"Add the option to match a whitelist of strings in FieldValueMatcher.\""
    },
    {
      "commit": "bb69f73a0c0a7a2db927a93f2a5371976ab0d483",
      "tree": "d006203ff8f1e500b1b6fd102ca223e27cbeb391",
      "parents": [
        "6e0f8e2620f0df322d6d94a19058566c308c3bec",
        "dd7bd35f308bcb2428f8cd74961ce95db77d6d81"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 04:10:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 04:10:29 2018 +0000"
      },
      "message": "Merge \"Atoms: Keygaurd and Bouncer\""
    },
    {
      "commit": "f4405efb97eb012caa79efccc6b2ccc9573913d0",
      "tree": "7d4feaf900e31a5c6e14dc79cecd9d27691061af",
      "parents": [
        "ec98448f153aff274e7e9c7db473d8413049ba2f",
        "a1fe77c6bdeddbf81ff35de6395032aa02f619a6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 03:15:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 03:15:46 2018 +0000"
      },
      "message": "Merge \"Add a comment to allocate field number above 100000 for OEMs to use and block them off from being used.\""
    },
    {
      "commit": "a1fe77c6bdeddbf81ff35de6395032aa02f619a6",
      "tree": "5434e285c7bfe4a2e4323811de568ba287c86f6b",
      "parents": [
        "67aef39ea2394ec30a92c4608fc6f72ca09ed24b"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Feb 26 14:22:54 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Feb 27 16:59:49 2018 -0800"
      },
      "message": "Add a comment to allocate field number above 100000 for OEMs to use and block\nthem off from being used.\n\nBug: 72866543\nTest: statsd_test, cts tests\nChange-Id: I2074f53eb3360aa93a9bea4e596a8c295696312f\n"
    },
    {
      "commit": "539288806fe5ae3733ef7883eb8ec01cce293988",
      "tree": "d2a885d1772aa8fffffcc59612646f02b59f54eb",
      "parents": [
        "15739d309966ef8453b7c59cc1ef622e2f5eca93"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sun Feb 25 23:02:56 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Feb 27 15:31:57 2018 -0800"
      },
      "message": "Duration tracker optimization.\n\n* Avoid querying sliced condition for stop/stopAll events for duration metric.\n* Avoid extracting the internal dimension key when it is identical to the what dimension.\n\nTest: statsd test\nChange-Id: I664e8d3b1a68960d05c9ce4789caefb60b1ab502\n"
    },
    {
      "commit": "8f42ba0e2c70a441bc7821dd32d5bab1c562b062",
      "tree": "b2f3cc2fe56581640467ee239634616b55202411",
      "parents": [
        "3f8237f356ee03712ac7379aa7a173991f3017ce"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Feb 27 15:17:07 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Feb 27 15:17:07 2018 -0800"
      },
      "message": "Avoid reading logs that were processed before.\n\nThis could happen when statsd is disconnected from logd reader. When we reconnect, we are going to\nget all events from the buffer again.\n\nBug: 72379125\nTest: manual\nChange-Id: Ie0122d5452555500c3bdfc1f905a0b1c646efdf7\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": "dd7bd35f308bcb2428f8cd74961ce95db77d6d81",
      "tree": "bf2b285b4e9c45f5c8725171b2ea99974ce61718",
      "parents": [
        "195599663ad221aca06a80c8f4e41b61f984b7f2"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Feb 09 19:33:15 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Feb 27 14:54:00 2018 -0800"
      },
      "message": "Atoms: Keygaurd and Bouncer\n\nLogs changes in the state of the keyguard and the keyguard bouncer\n\nTest: verified logs appear in adb logcat -b stats\nChange-Id: I1ffdf72ab088318c883197b3e1eb283bec2b8b2a\n"
    },
    {
      "commit": "9b1140eecdf1b7c0ce56289e91d945312eceebea",
      "tree": "4f5cfc57ec3838efbb8d788fe22f11495fd2e017",
      "parents": [
        "3f8237f356ee03712ac7379aa7a173991f3017ce"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Feb 27 10:55:54 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Feb 27 14:52:31 2018 -0800"
      },
      "message": "Add the option to match a whitelist of strings in FieldValueMatcher.\n\n+ This is useful when we want to build Anomaly detection on wakelocks, but want to whitelist\nwakelocks held by some apps that are whitelisted. It reduces the number of matchers needed\nin such a config.\n\n+ Also added the ability to match an AID by string name.\n\nBug: 73897465\nTest: unit tests added.\nChange-Id: I19315ae4d7d27fc467655d3a29866049cd8c9a2b\n"
    },
    {
      "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": "f3537c2054e4bfd627dd488e25564e07fb4009da",
      "tree": "b6bf79236974301d5f03d06d83ce97d0d8007e69",
      "parents": [
        "3b73ced5a824f5148bdf0d37cf746a269e6bad3f",
        "77ef671c41c2e587f34e156834ffa35b135bc866"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 20:47:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 20:47:33 2018 +0000"
      },
      "message": "Merge \"Updates jank metrics in statsd to include uid.\""
    },
    {
      "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": "dcd6ae8bc8f54050a150c18f7a9923fb5d4d19cf",
      "tree": "b3258530bfba3eb9bcf17f43e1ff54f017bd960f",
      "parents": [
        "f01ac95f079248cd25c9475242274fbc2be023fd",
        "4029831e36ef1e4a017bf55e1ec8f8b64849c5a3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 07:00:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 07:00:45 2018 +0000"
      },
      "message": "Merge \"Atom: TemperatureReported\""
    },
    {
      "commit": "4029831e36ef1e4a017bf55e1ec8f8b64849c5a3",
      "tree": "7a04bb9122801b432513744c93f9ee87a21079f8",
      "parents": [
        "b9cacbea949e59fe4611dfbf2387d11938275e5b"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Feb 16 00:15:09 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Feb 26 20:55:26 2018 -0800"
      },
      "message": "Atom: TemperatureReported\n\nMakes the temperature reported atom pulled, and adds CPU, GPU, and SKIN\ntemperatures. Pulls information from the thermal hal.\n\nTest: CTS test on cl in this topic\nChange-Id: I0a8e2d1135bdd77e1cc510f24ff5214ce9e14ead\n"
    },
    {
      "commit": "77ef671c41c2e587f34e156834ffa35b135bc866",
      "tree": "1e7b11b0f96d4bcbb024884caf5c88759fbbcb44",
      "parents": [
        "147c44d9782c6149a88cda3117d593a459546fea"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Feb 23 18:23:42 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Feb 26 17:18:20 2018 -0800"
      },
      "message": "Updates jank metrics in statsd to include uid.\n\nWe need the uid to easily know which app to blame for producing the\nframe with excessively long render time. Also updates the errors so\nit\u0027s more obvious if the error is in parsing versus the other checks.\n\nTest: Test that statsd builds and verified CTS test still passes.\nChange-Id: Ib6518f2d9fe6f9c78d548b6dcbdb67a0f211ff5c\n"
    },
    {
      "commit": "c4534e93e66c2d1ff2994b77e3d2febbaaf8d0e4",
      "tree": "486cc5de011b63112a2effbb47a04e1906876ccb",
      "parents": [
        "d8580e897be41b130a491ac959926b4444aec2b5",
        "926fc7571a656b6ab7b758e4b108aee102029c94"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 26 23:18:57 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 26 23:18:57 2018 +0000"
      },
      "message": "Merge \"Fixes timebase used when dumping reports.\""
    },
    {
      "commit": "3b3d38d99645dbbfd55ab160acf2718d8245efaf",
      "tree": "9da2914a0e28cf94686998ef7559699bda2f54c1",
      "parents": [
        "1184694c305f1a3ddc0562531811f7b97eac078d",
        "f520492279ce5c0a029c36b5251031a66f1413fb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 24 10:13:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 24 10:13:19 2018 +0000"
      },
      "message": "Merge \"Avoid creating temporary objects in FiterValue().\""
    },
    {
      "commit": "f520492279ce5c0a029c36b5251031a66f1413fb",
      "tree": "b8ab5b8bb0a353cf19b44de4fff4894261ea1c26",
      "parents": [
        "5d108838257b60e344f1f34a0eb95bccdd115410"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Feb 23 13:08:03 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Feb 23 20:53:23 2018 -0800"
      },
      "message": "Avoid creating temporary objects in FiterValue().\n\nIt reduces the cpu time from 1000ns to 750ns\n\nTest: statsd test.\nChange-Id: Ifa7e98e3368f8d55f85c7b09d05a6c416482981d\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": "7509bb3f97feb1d15d4472b7112e6485ea453ee0",
      "tree": "f27d14d5f6dbcc348ca089627f71ec321bec167a",
      "parents": [
        "183a553273ccbec7b32bfb5611dd88d9c524ab9f",
        "16b7ff735ecba7275347fe550b6f6fc66debb604"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 23 21:20:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 23 21:20:20 2018 +0000"
      },
      "message": "Merge \"Use android reinterpret hash for float as it is faster.\""
    },
    {
      "commit": "c9b2722cb8055e23a2ef903fe29244498a4b4255",
      "tree": "4224062e6dc45a94ee2c6d31ba318f53d8ca9ff9",
      "parents": [
        "147c44d9782c6149a88cda3117d593a459546fea",
        "759fbda51ba6f9d0294ba8c459f73a4370567485"
      ],
      "author": {
        "name": "Zhi An Ng",
        "email": "zhin@google.com",
        "time": "Fri Feb 23 21:15:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 23 21:15:32 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Log the apk optimization state in the MetricsLogger\"\"\""
    },
    {
      "commit": "16b7ff735ecba7275347fe550b6f6fc66debb604",
      "tree": "6536d3e7140849bd3756830a980ff6db08678a98",
      "parents": [
        "5d108838257b60e344f1f34a0eb95bccdd115410"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Feb 23 11:11:36 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Feb 23 11:11:36 2018 -0800"
      },
      "message": "Use android reinterpret hash for float as it is faster.\n\nTest: statsd test\nChange-Id: I593edac1d7dcd0c5e84195602b42b7c6c3072a38\n"
    },
    {
      "commit": "193fe201da5ca4c50ba7df53588acbae521db26c",
      "tree": "60f570a02ff69e3c272b452b92b4203d39a59f27",
      "parents": [
        "e406ac080f97da742c7eae49231883f4267fb8db",
        "12c1270f8bec36f208daab5c5ca650a8c3130a69"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 23 18:50:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 23 18:50:16 2018 +0000"
      },
      "message": "Merge \"Statsd alerts can inform subscribers probabilistically\""
    },
    {
      "commit": "759fbda51ba6f9d0294ba8c459f73a4370567485",
      "tree": "98fb1cbb3eee4324051fd2833e32885100eb003c",
      "parents": [
        "cfd17093cd9cb092a7c3c31eb8afb7e91525a06c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 20 19:52:30 2018 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 22 16:53:48 2018 -0800"
      },
      "message": "Revert \"Revert \"Log the apk optimization state in the MetricsLogger\"\"\n\nThis reverts commit 203a9ab7665787c94f7d0711a1ad172588070aa6.\n\nReason for revert: Fix the original issue. There was a race with the\ncleanup method which was resetting the app record to null.\n\nTest: manual, adb logcat -b events | grep sysui_multi_action\n      repeat steps from bugreport reporting the crash\nBug: 73102540\n\nChange-Id: I6d9c6110a9d5dadeb9d4361592711d63563c958a\n"
    },
    {
      "commit": "868688ed1610b55461175db752bf4ef1900f7fcc",
      "tree": "eee2c51ff18348ca27429c431c9729e38653c819",
      "parents": [
        "2cb882d61a6f213eaf231f106c8aa735ca28ccfc",
        "9c1debe330006b2b4d5c08a55905789c57369609"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 05:36:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 22 05:36:45 2018 +0000"
      },
      "message": "Merge \"Add annotation to atoms that represent a state change in atoms.proto\""
    },
    {
      "commit": "f9f44c954bdf3da27d1c1db889dd2ab919bba50e",
      "tree": "9fb0476196d32ecdc419157d96282b1d3a3a6a33",
      "parents": [
        "93068d7ab419e91b325cbf5da7a9d1e8ea518935",
        "32f2d4f320bd8f002527f52548b919e7dc222fb6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 03:13:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 22 03:13:04 2018 +0000"
      },
      "message": "Merge \"Statsd anomaly output log fix\""
    },
    {
      "commit": "9c1debe330006b2b4d5c08a55905789c57369609",
      "tree": "ec02b691f65a16d75d5cee817b404012706ea961",
      "parents": [
        "75c515effa72b2e7af774ee2c513cff7ec1dbd0e"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Feb 19 14:39:19 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Feb 21 16:46:56 2018 -0800"
      },
      "message": "Add annotation to atoms that represent a state change in atoms.proto\n\n+ A state change atom can have one exclusive state field, and any\n  number of primary key fields.\n\n  When there is primary key in the atom, it means the state belongs to the primary key.\n  For example,\n  message UidProcessStateChanged {\n    optional int32 uid \u003d 1 [(stateFieldOption).option \u003d PRIMARY];\n    optional android.app.ProcessStateEnum state \u003d 2 [(stateFieldOption).option \u003d EXCLUSIVE];\n  }\n\n  When there is no primary key fields in the atom, the state is global.\n  For example,\n  message ScreenStateChanged {\n     optional android.view.DisplayStateEnum state \u003d 1 [(stateFieldOption).option \u003d EXCLUSIVE];\n  }\n\n+ The annotation is consumed by stats_log_api_gen to generate a static map from the state\n  atoms to its primary fields, and exclusive fields\n\n+ stats_log.proto is splitted into 2 proto files, because statsd needs proto lite, and c++\n  lite proto library cannot properly ignore the field options which requires full proto.\n\n This CL doesn\u0027t change any logic in the statsd yet. A separate CL will use the field option\n information to correctly track the state.\n\nTest: added unit tests in stats_log_api_gen_test. and statsd_test pases.\nChange-Id: I9e8a979fe81ba60efd4d854bb7087ce4b2b147ec\n"
    },
    {
      "commit": "32f2d4f320bd8f002527f52548b919e7dc222fb6",
      "tree": "ef4df17263b73db510bcc75309cbc84fb580057a",
      "parents": [
        "62b618eef6749283382b325264daeddb31294a2f"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Feb 21 14:30:51 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Feb 21 14:30:51 2018 -0800"
      },
      "message": "Statsd anomaly output log fix\n\nAlert.id() is signed, so the output line needs to be lld instead of llu.\n\nTest: none\nChange-Id: I7e3eeddac60931234285548b99a9c9cc78582716\n"
    },
    {
      "commit": "e1faa03b48ce9132371acc52dee2d990df0d6418",
      "tree": "43516c99ec72a432bfec33b4125c668444af37c1",
      "parents": [
        "5e589b7fec1fa27d1179d28daa6daa9f4f4eab1f"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Wed Feb 21 14:08:17 2018 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Wed Feb 21 14:08:17 2018 -0800"
      },
      "message": "Fix the bug of timestamp encoding in event metric report.\n\nTest: statsd cts tests\nChange-Id: Id1d330f5d48d15ba026ae7c7e8cf4e1f6b460fba\n"
    },
    {
      "commit": "32bdf16288d0105cd3aada878b4bda8fda10a037",
      "tree": "d7eb790ec29617bb7eee0641957a9d7f816ce488",
      "parents": [
        "f66699314c762ea8ee3bcfbd6654b02e4e6b7c98",
        "019240235f99ace92ec05feadf3274cf0a0f7cfc"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Wed Feb 21 21:12:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 21 21:12:41 2018 +0000"
      },
      "message": "Merge \"Remove relevant configs when a uid (app) is uninstalled\""
    },
    {
      "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": "3d7f2d40d4c1f78d5bb5c8941dc71bf8d2dcded8",
      "tree": "f21e107daa714330d1681417662c53b91cd172a6",
      "parents": [
        "4550becca1055ba3faaead5bc209a4e112987683",
        "2e414b99f44f00000d84765b3a095490415695af"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 20 23:38:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 23:38:00 2018 +0000"
      },
      "message": "Merge \"Adds anomaly detection to max duration metrics.\""
    },
    {
      "commit": "81198c73321fe7211c14b810a96583f157f94521",
      "tree": "4020c11ae2f902e33c2c1936d7dbf5345ea3d120",
      "parents": [
        "76b9bb78df83ed5e82af7dee227cbf80bd49cf2c",
        "ebe7e237a6b242d46c473117e4457bfff0d0df33"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 20 22:56:02 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 22:56:02 2018 +0000"
      },
      "message": "Merge \"Fix bug in edge case for statsd anomaly tracking.\""
    },
    {
      "commit": "2e414b99f44f00000d84765b3a095490415695af",
      "tree": "1233cb7da17d422af1030247fd2d3300e7d72952",
      "parents": [
        "f4546316cdf70079e944729c6e2fd63ca066bc17"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Feb 12 17:24:40 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Feb 20 13:45:25 2018 -0800"
      },
      "message": "Adds anomaly detection to max duration metrics.\n\nStatsd supports anomaly detection for max duration, which is\nconceptually like asking for an anomaly on the current duration.\nThere was a bug previously in the logic for max duration since we\nrecorded a duration every time a dimension went into pause. Now, we\nonly record a max duration when the dimension goes into stop.\n\nWhen a dimension inside the MaxDurationTracker leaves the started\nstate, we need to check if we still need to keep an anomaly alarm\nset. It\u0027s possible that we just immediately set an alarm with the\nsame timestamp as what was just deleted.\n\nTest: Added some unit-tests and tested on marlin-eng.\nChange-Id: I09c82cd266b4cc6e1c893ad166e602bf08baca0e\n"
    },
    {
      "commit": "ebe7e237a6b242d46c473117e4457bfff0d0df33",
      "tree": "98812baf0e7f488f0e2efcb4ac7aec5663004862",
      "parents": [
        "28ff9ceeeb2aa9f864a0f73e6d3557125042c22a"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Feb 20 13:22:53 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Feb 20 13:22:53 2018 -0800"
      },
      "message": "Fix bug in edge case for statsd anomaly tracking.\n\nGetting a past bucket value will always crash for anomalies\nconfigured to track only the most recent one bucket.\n\nTest: N/A\nChange-Id: I2cd1c82fe8ba4cecb4fac21038bb5f04a60c360e\n"
    },
    {
      "commit": "581ff5ec0dd4c63cae9f86ad95b76ff951853b13",
      "tree": "821e9760b7cab91e028fd2144c7148ee99ff7e04",
      "parents": [
        "62b618eef6749283382b325264daeddb31294a2f",
        "d5c356214fabec1ad9d5d16d673f000deb49ea30"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 20 20:41:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 20:41:29 2018 +0000"
      },
      "message": "Merge \"Timestamp Truncating whitelist.\""
    },
    {
      "commit": "28ff9ceeeb2aa9f864a0f73e6d3557125042c22a",
      "tree": "19de45c83c982a9b355127a8c18bdc41aaa82331",
      "parents": [
        "8b3a832cdd66e86db609aaf49f9a24a4112a21c1",
        "203a9ab7665787c94f7d0711a1ad172588070aa6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 20 18:17:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 18:17:34 2018 +0000"
      },
      "message": "Merge \"Revert \"Log the apk optimization state in the MetricsLogger\"\""
    },
    {
      "commit": "203a9ab7665787c94f7d0711a1ad172588070aa6",
      "tree": "a3071eb431ca2d41c3826cb24e12fcc9a03f2a94",
      "parents": [
        "0a8bea818c330d02161322901534992253a2f9ee"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 20 17:06:21 2018 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 20 17:06:21 2018 +0000"
      },
      "message": "Revert \"Log the apk optimization state in the MetricsLogger\"\n\nThis reverts commit 0a8bea818c330d02161322901534992253a2f9ee.\n\n\nE AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: ActivityManager\nE AndroidRuntime: java.lang.NullPointerException: Attempt to read from field \u0027java.lang.String com.android.server.am.ProcessRecord.requiredAbi\u0027 on a null object reference\nE AndroidRuntime:        at com.android.server.am.ActivityMetricsLogger.logAppTransition(ActivityMetricsLogger.java:504)\nE AndroidRuntime:        at com.android.server.am.ActivityMetricsLogger.access$100(ActivityMetricsLogger.java:62)\n\nBug: 73626352\nChange-Id: Idd50e0d2cf34e5393b4ae76ef8bc48b0067532eb\n"
    },
    {
      "commit": "6e24ac89485ffc6e05d88850a9f19429ddb35609",
      "tree": "ec33ac8b5a3219717d74dbcea24ca2fa201d7370",
      "parents": [
        "2588dbce3470cd72b8e0237e8a2e3bc22850c2ce",
        "0a8bea818c330d02161322901534992253a2f9ee"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 19 19:36:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 19 19:36:08 2018 +0000"
      },
      "message": "Merge \"Log the apk optimization state in the MetricsLogger\""
    },
    {
      "commit": "ae9fdf0403fdb24acc2c1d7e33ec96834d154dcf",
      "tree": "e490d99fc25a8a56e16bbde359d2caa362ed7312",
      "parents": [
        "2094d9d306e6f7a7855cd2eb548548cece851cf6"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Feb 15 10:19:32 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sun Feb 18 00:08:01 2018 -0800"
      },
      "message": "fix picture-in-picture logging\n\n+ log uid and activity name\n\nTest: manual test. Will add cts test\nChange-Id: I3d3e77b24779e439eacc06007fae62c037a19fd6\n"
    }
  ],
  "next": "d5c356214fabec1ad9d5d16d673f000deb49ea30"
}
