)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "d5c356214fabec1ad9d5d16d673f000deb49ea30",
      "tree": "42ebd65160ded90da5941fcf1bf90dda6f3bdbdd",
      "parents": [
        "15235cd5f700ba9dfa30532b38bad66f2f75b60e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Feb 02 10:33:25 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Feb 17 21:11:54 2018 -0800"
      },
      "message": "Timestamp Truncating whitelist.\n\nTest: manually tested.\nChange-Id: I46da375b6c0773ffc611bc06fff12cb4f9a7fc18\n"
    },
    {
      "commit": "a9e43fa9b796b8d1642758b3a8c42ed8c0ee307b",
      "tree": "ae28bac918433d3f3d1b196455eb4833fd7897c5",
      "parents": [
        "7ed04f9590bbdd723bba63b6c6b4b7b92d3ddcff",
        "00621d212ea15c64257d7150d2904f32d4cfe62d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 17:28:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 17:28:32 2018 +0000"
      },
      "message": "Merge \"Remove a statsd duration anomaly sanity check.\""
    },
    {
      "commit": "7d5beeb25530ec016557f37bb900b201ba4d498c",
      "tree": "5de75b38e3a728437ed0101e648dc3ad8ffd5e7c",
      "parents": [
        "bc5fc746a7cc85f1d39c16659a6603b23e33369a",
        "b639d14f1a97b77c4e69de480a6d222265094bba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 19:26:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 19:26:32 2018 +0000"
      },
      "message": "Merge \"More formatting fixes for statsd\""
    },
    {
      "commit": "f31667f41246438bbe9f3555e26309d7c5d4fa31",
      "tree": "fb75288e20cb9236e1783f0afd6d64389940756f",
      "parents": [
        "4db3ca08dc1830e8bad453cefbc3f3417e152098",
        "1476ef24f33fd9ff7d0e748f61cc964723e6bb1c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 17:15:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 17:15:41 2018 +0000"
      },
      "message": "Merge \"Statsd guardrail for Alerts\""
    },
    {
      "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": "00621d212ea15c64257d7150d2904f32d4cfe62d",
      "tree": "3408a5b350d013550be4e19865772e88dd2b235f",
      "parents": [
        "581576efef1b25efedc4a7657e8ea84a26a7fe2f"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Feb 14 17:30:38 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Feb 14 17:30:38 2018 -0800"
      },
      "message": "Remove a statsd duration anomaly sanity check.\n\nThe logic previously assumed that each bucket can only contain a\nduration up to the bucket size, but this is not true for the max\nsparse aggregation type. Instead of trying to keep this logic up to\ndate on the client, we will remove this check.\n\nTest: Test that statsd still builds and unit-tests pass.\nChange-Id: I576d75f8697b4e691b864f12ccaa6fa4611336c5\n"
    },
    {
      "commit": "db15052ae2ea34807644e2e97afa908e43ae59fd",
      "tree": "1d98487a749efcd2dcb89cf6d2c0de9170d2605c",
      "parents": [
        "d69c65f368e01893618a28520a6849776e70789b",
        "59cc24dbfda4148c1f5ef4de9c8763caa8672443"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Thu Feb 15 00:18:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 00:18:22 2018 +0000"
      },
      "message": "Merge \"Add a guardrail to limit minimum bucket duration to be 5 minutes except when configured through adb command\""
    },
    {
      "commit": "1476ef24f33fd9ff7d0e748f61cc964723e6bb1c",
      "tree": "01ddd8cce2a2edbfdecb9146ceed6e292ca99e7d",
      "parents": [
        "07b2dbc2c54d3b436791ea532d5c0d70a3281574"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Feb 13 12:26:01 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Feb 14 13:56:25 2018 -0800"
      },
      "message": "Statsd guardrail for Alerts\n\nNow, each config is allowed at most 100 Alerts in it.\nThat is, for each uid, for each config id, the config\u0027s alert section\ncan have at most 100 items in it.\n\nBug: 73287046\nTest: none yet\nChange-Id: I2c81bc647627e432337c359c0a76aa3fc08bdd23\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": "59cc24dbfda4148c1f5ef4de9c8763caa8672443",
      "tree": "0d59c3b09bffc9a9c23ba0808e9dbb2df3d84ac3",
      "parents": [
        "147e799606a642d1e5a779c44550260890f6c2ce"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Feb 13 20:17:32 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Feb 13 20:26:31 2018 -0800"
      },
      "message": "Add a guardrail to limit minimum bucket duration to be 5 minutes except\nwhen configured through adb command\n\nBug: 73287251\nTest: statsd_test\nChange-Id: Iee51fedbaabb2c1f534a6edef3c564da88ef658b\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": "e8cf6110aed233019a41fddd4fdca0cc93bb8433",
      "tree": "26194099faa70eff6dd5581acc2fb7e07061e290",
      "parents": [
        "6b83824afaa271fc760d0bd39e339fa25a081c2d",
        "8a8d16ceea1e5b7a2f8c41e17b5d993035f50f5d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 12 19:53:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 12 19:53:56 2018 +0000"
      },
      "message": "Merge \"Statsd CPU optimization.\""
    },
    {
      "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": "7f9e63b63269baa41a36fc31acd6fc071309c26c",
      "tree": "783f5e5b55341f7dad48db2fba706295f9b25ca8",
      "parents": [
        "421822ce0f3bb581d36cdc5273d4c345c634f9c0"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 02 16:25:11 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Feb 09 14:20:48 2018 -0800"
      },
      "message": "Add clear method to ProtoOutputStream so it is reusable by just\nrewinding its internal pointer.\n\nBug: 72319159\nTest: atest incidentd_test and atest statsd_test\nChange-Id: Id046b987a7460d68300e5d4d46ae56aec1eba2d0\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": "16049578001364e1fcb0f10d6f94868081e57316",
      "tree": "ed3c22c00ead5d9ba9ee4bb8c957ae3f7e5e3b9d",
      "parents": [
        "171951d8e0bc09dc6882b3c97c17dc7ebb7dc636"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Feb 01 18:27:51 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Feb 08 09:59:45 2018 -0800"
      },
      "message": "Modifies statsd output for start and end times.\n\nWe include the start of when the last dump occurred and the current\ntimestamp. These timestamps are shared across all metrics, so\nthere\u0027s no advantage in duplicating these numbers across all metrics.\n\nAlso, we should use elapsed realtime instead of times based on wall\nclock, which can jump around and go backwards.\n\nTest: Test that statsd can still build and\nadb shell cmd stats dump-report doesn\u0027t crash.\nChange-Id: I819e5643cee75dfa3e78a58f94c9d61ededa78d7\n"
    },
    {
      "commit": "32134a20f1fc4c58845af16b266b2899ac460809",
      "tree": "6fcf9e3b67f4d50d006386ea7408e1dab3b88f30",
      "parents": [
        "fbde6988ac7d51be80e246447da14ea01a345425",
        "27785a8a4a684c831c18f7189a6fa1b98c3573e6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 06 06:16:10 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 06 06:16:10 2018 +0000"
      },
      "message": "Merge \"Partial buckets on app upgrade and fix duration.\""
    },
    {
      "commit": "6f1979015883dd32f775b5030b2acb3dc0512911",
      "tree": "43d36123baefc05ee76796fe7c1ce76dbb968727",
      "parents": [
        "7b2354ece2809819255f64b0dd60b108745a5739"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Feb 05 12:30:14 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Feb 05 12:30:14 2018 -0800"
      },
      "message": "Statsd - use AID_STATSD in MetricsManager\n\nMetricsManager needs to know the uid of Statsd. Right now it fetches it,\nbut it is actually a constant that it can access directly.\n\nTest: manual\nChange-Id: I36437136babaf99ecad1fac7c233f7aaf06f380d\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": "27785a8a4a684c831c18f7189a6fa1b98c3573e6",
      "tree": "dd4bac285defe0f60e912970cf1d0bc606357118",
      "parents": [
        "c326b50fa009be5e30797f37c23ec7fa2c3c29aa"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Jan 19 17:06:45 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Feb 02 13:30:10 2018 -0800"
      },
      "message": "Partial buckets on app upgrade and fix duration.\n\nStatsd will create partial buckets in all metrics producers when an\napp is upgraded so that we can separate metrics between different\nversions of an app. By looking at the uid map changes, we can tell\nwhich app versions belong to a bucket; for metrics that are not\naffected by an app version, we can instead join the buckets together.\n\nTo simplify the logic, the ends of the full buckets are always\naligned to when the metric producers were created. These boundaries\nare computed on the fly by using the bucket number and the metric\nproducers\u0027 start times.\n\nWe keep the anomaly trackers to only be given full buckets; we buffer\nthe partial buckets within each metric producer.\n\nDuration metric\u0027s MAX_SPARSE is fixed to be implemented as such. In\naddition, after further discussion, we find anomaly detection on\nMAX_SPARSE to be unnecessary, so this functionality is removed.\n\nTest: Unit-tests added and modified, passed on marlin-eng.\nChange-Id: I5ff7a9c7f05c406e9faf400c6a39162970ded102\n"
    },
    {
      "commit": "98b136c915584f7432448b4b1668883c55dea1c3",
      "tree": "2841e6afc7e56093f70b1d9d1a0c8d12a54e214e",
      "parents": [
        "044111b8b38037eae96d70794cdbf3ea81d52b7b",
        "bb8554afda4eb172639300e715c03e4aa4917708"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 02 03:15:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 02 03:15:50 2018 +0000"
      },
      "message": "Merge \"Atom: DaveyOccurred\""
    },
    {
      "commit": "bb8554afda4eb172639300e715c03e4aa4917708",
      "tree": "a3290ae802f8890bf386698442dac0ec1ed63834",
      "parents": [
        "00646ee730e93f5971c8a9adaa99c4ce580b2f95"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Jan 26 11:59:14 2018 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Feb 01 16:34:55 2018 -0800"
      },
      "message": "Atom: DaveyOccurred\n\nAtom for davey occurred\n\nTest: cts test accompanying \u0026\u0026 statsd unit tests \u0026\u0026 hwui unit tests\nChange-Id: I715ac213b09ef2b3ef1de75bc456a5edf7e0a244\n"
    },
    {
      "commit": "9369446f0b04945d6674550728ae81196d6fb5c2",
      "tree": "6d333c7fb29ce69e4262b37eab21daee75d03ccb",
      "parents": [
        "321ef3a5afb4cb9a9b47c5e028b43261b4fc8370"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 22 20:49:31 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 30 13:33:57 2018 -0800"
      },
      "message": "Support dimension in condition in metric producers.\n\nTest: added e2e tests for count/duration metrics sliced by fields in condition and with/without links.\n\nChange-Id: Ie34deba68e6780abdde458be3f0ce5284e76a1a2\n"
    },
    {
      "commit": "641e29df46c94015abea0ad2ffc202dd8e8325d0",
      "tree": "2bc97ed8868b23246aef01cbf814f941869aa947",
      "parents": [
        "4307efc89eccc773a50036e83ccec734b23bdb95",
        "34ea1103a0faa0e01df0e2b0ac1ce98e7ec3e3f1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 19:08:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 19:08:41 2018 +0000"
      },
      "message": "Merge \"Extend gauge metric to support memory metric.\""
    },
    {
      "commit": "357b63b1727177e53f6ef896887b04eb7d71d274",
      "tree": "72171f4aa8e76e22d5bf60bb10762a517a32c262",
      "parents": [
        "a14bbf5517f09c07d720e3c66ca8682b907f85d8",
        "7ba8fc357e44ee3bb8e614c202852a1c46a9d4a8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 17:37:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 17:37:14 2018 +0000"
      },
      "message": "Merge \"Cpu usage optimization: 1/ Avoid unnecessary field/dimension proto construction. 2/ use unordered_map for slicing. 3/ Use dimension fields to compare dimension keys.\""
    },
    {
      "commit": "34ea1103a0faa0e01df0e2b0ac1ce98e7ec3e3f1",
      "tree": "19a58dee26e2fdf029ba45e8a3b218511b509f23",
      "parents": [
        "752d7ca14c668df04a25e1565d5058ba7dc9ffe8"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 29 12:40:55 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 30 09:14:54 2018 -0800"
      },
      "message": "Extend gauge metric to support memory metric.\n\nTest: statd unit test passed.\n\nTest: statsd unit test passed\nChange-Id: I2e3f26563678ae77d44afe168454b6d1ea449f3a\n"
    },
    {
      "commit": "7ba8fc357e44ee3bb8e614c202852a1c46a9d4a8",
      "tree": "6d5a63f0653abb15820b5340e6594e9de5cb1e1e",
      "parents": [
        "94713885ae90fc925ac9be38311269c8527f490e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 24 16:16:46 2018 -0800"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Fri Jan 26 23:17:02 2018 +0000"
      },
      "message": "Cpu usage optimization:\n1/ Avoid unnecessary field/dimension proto construction.\n2/ use unordered_map for slicing.\n3/ Use dimension fields to compare dimension keys.\n\nTest: all statsd tests passed.\nChange-Id: I2f74f78589b7f6ecd0803a2ead822b8d0399f334\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": "635b4b37210bd61b73aebf19298e38b8fb382e85",
      "tree": "088b9499c976249993f79d83b96a39169d270a3d",
      "parents": [
        "4ee9a3e9287a76fd83f1a3ed760ac6054d738976"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 23 20:17:35 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 23 20:30:46 2018 -0800"
      },
      "message": "Do not output empty metric reports.\n\nTest: statsd unit test passed.\n\nChange-Id: I296edbe621eaea72ad2e1dfe656698302614c0f3\n"
    },
    {
      "commit": "0ed268b1ec41003c7ed7fbe3c8cba726e7a1dbde",
      "tree": "51d33c9b60b6512579b0c8f90dab4d837ed88dfb",
      "parents": [
        "5e1f854620ecf48febb6ef8ddc3bff856efda7b1"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Jan 10 09:37:10 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Jan 19 10:11:58 2018 -0800"
      },
      "message": "similar to the samplers in batterystats, when we do diff,\nif the value is not monotically increasing, we should take\nthe absolute value as the diff.\n\nTest: unit tested\nChange-Id: Idd8a248b4092b1863eb8e50539f8f14b3ac9af9e\n"
    },
    {
      "commit": "468ff04fd4cb43a384a3d4948cccd4438be7202a",
      "tree": "6211636e6d6723ac6d65923ca7d2251e04c432f6",
      "parents": [
        "5736685560ebdacd9c9ab4205014f2298c08b523"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 17 12:26:34 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 17 21:19:45 2018 -0800"
      },
      "message": "Proto change for dimension from condition.\n\nTest: all statsd unit tests and cts tests passed.\n\nChange-Id: I955143aca7c76e2e22a10d7ba42eb797bd32e147\n"
    },
    {
      "commit": "87718e283a62660eaa0e39fd780c97a290da988f",
      "tree": "23c2899a0c1228fb19d7a12fc875fac204b4e0c6",
      "parents": [
        "278050ed4e63a2d68547336f8ecd5501ed29eddb"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 11 16:16:26 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 15 20:41:08 2018 -0800"
      },
      "message": "Gauge metric e2e test\n\nTest: new test passed\nChange-Id: I6a8bceb43fbb6e7b82f47951e71b5620779f2ceb\n"
    },
    {
      "commit": "d6808dc0c00ba45fd589449647f792daf9fa8126",
      "tree": "e0437e8d8ac2e63f4f9b0502825921a569703942",
      "parents": [
        "032626a7edd3f76a8f21540fbf3bc86104beeee1",
        "b5bc74122fb95c81bedad625160fb8d144a863cd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 10 00:22:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 10 00:22:45 2018 +0000"
      },
      "message": "Merge \"E2e test: attribution matching and slicing by attribution.\""
    },
    {
      "commit": "1bf94382d036fa8d61258205c5f4e18cd53cb61d",
      "tree": "2a376b76bc68439756cc4a0941c819efb4b76971",
      "parents": [
        "26d5b41fdbb5fe9f42dd33d78ccafd2ea8e38aff"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Jan 04 11:43:20 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Jan 09 11:29:41 2018 -0800"
      },
      "message": "Anomaly detection is per dimension\n\nAnomalies are now detected and declared per dimension. This means that\ndeclareAnomaly now gets access to the key that is responsible for the\nanomaly. Moreover, the refractory period is per dimension, not overall.\nSo a second anomaly for the same metric but a different dimension can\nfire within the first dimension\u0027s refractory period. Thus, if app A\nmisbehaves and app B misbehaves shortly thereafter, they will both be\ndetected.\n\nEventually this key will be passed to the subscribers, although this cl\ndoesn\u0027t do anything with it.\n\nTest: adb shell data/nativetest64/statsd_test/statsd_test\nChange-Id: Id76856dc44fe9ecf91ac81a423e84f97c81d30ab\n"
    },
    {
      "commit": "d59a6589faeb8a1b7b3c23e5ac95671bda736cdd",
      "tree": "f69cf30239cbe29ebad1a1061471b907bc94c4df",
      "parents": [
        "c7dca1bddf49cbe4219258cbd71f4cabc4388543"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jan 08 11:17:11 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jan 08 11:17:11 2018 -0800"
      },
      "message": "Some fixes in duration metrics\n\n+ Don\u0027t need to keep the condition key if the condition is not sliced.\n+ Whiten the hash before returning.\n\nTest: statsd_test\nChange-Id: Ie0bcb14b3adc4a15b79ba3be050431a672a68c28\n"
    },
    {
      "commit": "b5bc74122fb95c81bedad625160fb8d144a863cd",
      "tree": "c495593b360600c599e46003f954ba69319915f6",
      "parents": [
        "102f5632fb02fe9ef440410edf8b28e6612e1c72"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Jan 06 23:17:45 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Jan 06 23:23:19 2018 -0800"
      },
      "message": "E2e test: attribution matching and slicing by attribution.\n\nTest: statsd unit tests passed.\nChange-Id: I05875b80a9a1ab5f87a478d1f63543f9798254a5\n"
    },
    {
      "commit": "fa14c11f05bbc1fce0a416f980e2bdaee3beb8fa",
      "tree": "e8364cd79f75ff9fa91329485a0da830ae1b3770",
      "parents": [
        "a070b6a40c95df5b64d195aba1386815fec5d5b7"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Jan 05 12:00:37 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Jan 05 12:00:37 2018 -0800"
      },
      "message": "Avoid overwriting bucket in Gauge metric producer as anomaly tracker needs past buckets.\n\nTest: statsd unit test passed.\nChange-Id: I3c76846da169b36c447c77db76b3deeda87e9e6e\n"
    },
    {
      "commit": "a070b6a40c95df5b64d195aba1386815fec5d5b7",
      "tree": "bbd5c822dba0558723f6a024446aca705765fa6f",
      "parents": [
        "c9cbc3e5fcb1c3b9683c617df0c3b645d6516b02"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 13:28:38 2018 -0800"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Fri Jan 05 04:34:49 2018 +0000"
      },
      "message": "Bug fix: gauge metric producer does not need the atom id parameter.\n\nTest: statsd unit test passed\nChange-Id: Ifd1e2f7a05a03886eb227ac1ae0e30b884e49f0c\n"
    },
    {
      "commit": "efc331b287e8e227ec4aca7459f04a951f5b81c3",
      "tree": "6f1b20707986d4bdf9a88660d5c4aef23d04d95a",
      "parents": [
        "5d8307186f589d764de34ed9f4a5456a1de6a35d",
        "b814481ad1f8d0e429d799b1571a6272e1a7f6c5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 04 22:53:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 22:53:29 2018 +0000"
      },
      "message": "Merge \"Use TimeUnit enum to specify the bucket size.\""
    },
    {
      "commit": "b814481ad1f8d0e429d799b1571a6272e1a7f6c5",
      "tree": "705222cc3054f6e86ceae24b6a7590c3cc2a223a",
      "parents": [
        "ec397abf931a39ed1c3d36f0af4ee9a68b883b07"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 10:56:23 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 13:01:14 2018 -0800"
      },
      "message": "Use TimeUnit enum to specify the bucket size.\n\nTest: all statsd unit test passed\n\nChange-Id: I4f6b80ba2f8c984b06e46e6de6df3e546e99a968\n"
    },
    {
      "commit": "147ce6027880d05286f051f1501100a4ce2b52e8",
      "tree": "661aa199cb8a9c74a8577a26a941c056160707e4",
      "parents": [
        "ec397abf931a39ed1c3d36f0af4ee9a68b883b07"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Dec 22 14:35:34 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 09:57:03 2018 -0800"
      },
      "message": "use only string type in the log source whitelist.\n\n+ predefined \"AID_X\" will be provided as string type to statsd, and we will translate\n  to integer uid using the static map.\n\nTest: statsd_test\n\nChange-Id: Ie47d8481e0c456457e6881ebb9cb4ce008e772b8\n"
    },
    {
      "commit": "a7fb12d2d285a3a62f5e8956d1bacfa0e15e9d0f",
      "tree": "bc7a9387a4308bbf665a4a6e8c93670e35f1a1a6",
      "parents": [
        "478b6caa48ee001aa9273e36efe1b754dca87d7e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 03 17:17:20 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 03 23:49:36 2018 -0800"
      },
      "message": "1/ Use FieldMatcher to specify the value fields in value metric.\n2/ rename number_of_buckets as num_buckets\n3/ use double for the Alert\u0027s threshold\n\nTest: statsd unit tests passed.\nChange-Id: Id1f55f14d3712eddee561681e3cd77343f086c7a\n"
    },
    {
      "commit": "48989c2744dcaaba4d4a23d9ca19b41c88c483bf",
      "tree": "769108f97e8f415fdbf69e0074b18dc549b392e4",
      "parents": [
        "5e798fe27900ace578f15867d69c8f9211cdb933",
        "94e197cceb2ba7df13ff8de04f60bfeec64015d9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 03 23:36:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 03 23:36:21 2018 +0000"
      },
      "message": "Merge \"1/ Change all \"name\" to id in statsD. 2/ Handle Subscription for alert. 3/ Support no_report_metric\""
    },
    {
      "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": "5459651bf6cd645e4595363f649f1140b1f1a38a",
      "tree": "aed6a7013e5eea28699dd80fe99e0f44072b5315",
      "parents": [
        "2ca03a5fa8211f8329fea13e60bdcc756bcadc2f",
        "daa9f3a6798421d9db7a96837ff6383e1a9818b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 03 20:43:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 03 20:43:48 2018 +0000"
      },
      "message": "Merge \"Checks in statsd that fields are within range.\""
    },
    {
      "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": "daa9f3a6798421d9db7a96837ff6383e1a9818b1",
      "tree": "ea846e379f1091040f983cbd01ac1b14f007896a",
      "parents": [
        "cb37da8b13a8f70942d253ac56a9ad3ae3cbf7ba"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 28 16:52:22 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 28 17:01:49 2017 -0800"
      },
      "message": "Checks in statsd that fields are within range.\n\nWe check that both the developer-chosen label and the state fields\nare within the expected ranges.\n\nTest: Test that statsd still builds.\n\nChange-Id: I9f76dfbf16edc4540b28a778385f416cb1306d4e\n"
    },
    {
      "commit": "857aaa520804d846a050e1eeb85d82977c983666",
      "tree": "7e2e8b8e22c50b243ed320e1e92e588176dd3a19",
      "parents": [
        "dc40b9082a11f6819b2a0dd174371c4a11da46c6"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Dec 19 15:29:06 2017 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Dec 22 15:05:31 2017 -0800"
      },
      "message": "Splits AnomalyTracker into two files\n\nSplits out DurationAnomalyTracker-specific functions into their own\nsubclass.\n\nTest: the unit tests and CTS tests\nChange-Id: Id6eb74d232b4a9c3a932d805d1ba3f0ba43a88b1\n"
    },
    {
      "commit": "d5aa01b3716e07463019fa772f07a40613f9e39e",
      "tree": "bc3b08795c7c22ae0fb9b6077cdc8850bdb4d885",
      "parents": [
        "d10f7b1c7bdb1c66aa04148945cae9733ee4cadf"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Dec 19 16:46:36 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 20 18:45:43 2017 -0800"
      },
      "message": "Remove the hacky HashableDimensionKey.\n\n+ Add a real HashableDimensionKey as a wrapper of the dimension.\nSo we can get rid of the maps that we kept.\n\nPay down technical debt and reduce memory usage.\n\nTest: statsd_test \u0026 manual\nChange-Id: I233280cf1e2ce93da6a8cd4e8514abb066f4016d\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": "2b4fc9d657feaafb654a38096ec46622dcdb37bc",
      "tree": "549f237af249ea46ff4f8b7ecaccdc24710c1935",
      "parents": [
        "4561b431acd3806b579fe7643e6bf8e74f67e509"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 18 15:20:00 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 18 15:53:18 2017 -0800"
      },
      "message": "align metrics start time to the previous 5 min start, instead\nof the next 5 min start. Also refactor config check condition\nto be more readable.\n\nTest: unit test\nChange-Id: Iaa6b4a59d27c52996723862d92080d90c9e794cb\n"
    },
    {
      "commit": "e6abcbed993c81562cddb4122235fc2bcffff8e8",
      "tree": "4f3a70c7cba0f60d65587e536d5710ae6599a51e",
      "parents": [
        "dc4e426a17044f799ad1d7bd8a363022e8044619",
        "3c0b95ceb520c6b23871da90c23f89c55b76b560"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Dec 17 17:01:36 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Dec 17 17:01:36 2017 +0000"
      },
      "message": "Merge \"Turn off verbose logging, remove the fake config.\""
    },
    {
      "commit": "dc4e426a17044f799ad1d7bd8a363022e8044619",
      "tree": "2df2ed4889e462cbea977118053257179f8e0f80",
      "parents": [
        "8a3138d56ad238fd86d60f0d5643fb86f8775fd5",
        "d9dfda76e0aa8b8aa4d2562a7ff4259f4500e355"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Dec 17 16:58:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Dec 17 16:58:46 2017 +0000"
      },
      "message": "Merge \"add feature: GaugeMetricProducer now takes repeated list of fields bug fix: GaugeMetricProducer now works better with pulled events. unit test also includes GaugeMetricProducer_test\""
    },
    {
      "commit": "d6815d74dd051c0881cbbfa9fb68a8f91a6634bd",
      "tree": "74e2c342da98390369910590d39d81cb1cfbfa9e",
      "parents": [
        "13dbdde43d59cc497b18be755945d3881422fff3",
        "85ed8387135849f256cecb4429c75938ad91cd55"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Dec 17 03:14:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Dec 17 03:14:27 2017 +0000"
      },
      "message": "Merge \"align metrics to 5min bundary We use one alarm clock for all pulled atoms. If metrics from different configs are not aligned, the clock will be set to repeat at higher and higher frequency, and consume a lot of battery. Current implementation assumes a 5min minimum bucket size. New metric start time is set to be aligned to the start time of statsd in the next 5min. So it will ignore events up to 5min.\""
    },
    {
      "commit": "d9dfda76e0aa8b8aa4d2562a7ff4259f4500e355",
      "tree": "6d107b412a6aaeb49beaebd012d235f6ae431a4d",
      "parents": [
        "418875d9ac7d8031287da40b553e73c08a256efa"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 11 17:41:20 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Dec 16 17:12:45 2017 -0800"
      },
      "message": "add feature: GaugeMetricProducer now takes repeated list of fields\nbug fix: GaugeMetricProducer now works better with pulled events.\nunit test also includes GaugeMetricProducer_test\n\nTest: unit test\nChange-Id: Ic60f09342d14cfb107be2130d445b323a56909e0\n"
    },
    {
      "commit": "85ed8387135849f256cecb4429c75938ad91cd55",
      "tree": "ec014988fa0c5d4a500b3e4a93c00d4e14b3c0e2",
      "parents": [
        "14b1f3ede6e40606733156c431792b390cac5d17"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Dec 14 16:48:54 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Dec 16 17:08:46 2017 -0800"
      },
      "message": "align metrics to 5min bundary\nWe use one alarm clock for all pulled atoms.\nIf metrics from different configs are not aligned,\nthe clock will be set to repeat at higher and higher\nfrequency, and consume a lot of battery.\nCurrent implementation assumes a 5min minimum bucket\nsize. New metric start time is set to be aligned to\nthe start time of statsd in the next 5min.\nSo it will ignore events up to 5min.\n\nalign puller alarm to minute bundary\n\nTest: unit test\nChange-Id: I77ffa3c13de363c780b1000181b9a9b780dd0846\n"
    },
    {
      "commit": "3c0b95ceb520c6b23871da90c23f89c55b76b560",
      "tree": "e3c2a1f38626d262fede788a2240f9679e7bd509",
      "parents": [
        "1beb268423054b362b3c6114cab449b4b890fb4f"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Sat Dec 16 14:34:20 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Sat Dec 16 14:34:20 2017 -0800"
      },
      "message": "Turn off verbose logging, remove the fake config.\n\nTest: statsd_test \u0026 manual\nChange-Id: I43068c8db006cbbeccacaa9d8426ab4d0394313a\n"
    },
    {
      "commit": "de1b5562c8a6fdad1e9d2f409c7aa35a23181d34",
      "tree": "87bc8c7ed5635151bfb398cf38a308e73365cf80",
      "parents": [
        "e1080cfceb241be88698262a2fada6ac7e6693f6"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Dec 14 18:38:27 2017 -0800"
      },
      "committer": {
        "name": "Adam Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Dec 15 18:10:10 2017 +0000"
      },
      "message": "Statsd value metric anomaly detection\n\nAdd anomly detection to Value metric in statsd.\n\nTest: make statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell data/nativetest64/statsd_test/statsd_test\nTest: run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.HostAtomTests#testValueAnomalyDetection\nFixes: 70240042\nChange-Id: I05cf36495cdfd0ac7aa1a922f0e253a60fda1787\n"
    },
    {
      "commit": "f09569f848ca0b81a21a74e9f4dd8bd9a886151a",
      "tree": "f952554217c69df0fce243fc0d011e5043020307",
      "parents": [
        "14b1f3ede6e40606733156c431792b390cac5d17"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 13 17:00:51 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Dec 14 09:07:54 2017 -0800"
      },
      "message": "Further reduce statsd memory usage.\n\n+ Remove the protobuf *Metric object from MetricProducers\n   -- This saves ~150 bytes per metric.\n+ Remove the StatsdConfig from ConfigManager\n   -- This saves us xKB per config.\n+ Also remove alerts from fake config to avoid crash (Bug: 70627390)\n+ Other misc fixes too.\n\nTest: statsd_test \u0026 manual\nChange-Id: Ied4eb3fa31c50599817b3a5e1caf5077c487fad2\n"
    },
    {
      "commit": "a7259abde4e89fd91404b14b4845113cd313d1ec",
      "tree": "480c24621cf02d53f0200c290e6df9d024f866da",
      "parents": [
        "c9f1a9e3dd214b167a49ac4560382e2e98084ff6"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sun Dec 10 08:31:05 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Dec 13 22:32:23 2017 -0800"
      },
      "message": "use running sum for ValueMetricProducer bucket\nsimplify ValueMetricProducer logic for pulled data\n\nTest: unit test\nChange-Id: Ic0a21a543166cc5c34c1fa505dba08d1fc2f510a\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": "288c60001330a5a924a47c0eebd6097ae3ee5d67",
      "tree": "f69c1c4b2271ef0a96ac983a95a1d153ea8033a4",
      "parents": [
        "32c2161965c5cee8798abdc399b804bb2cb4802c"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Dec 12 13:43:18 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Dec 12 14:20:32 2017 -0800"
      },
      "message": "Only create ProtoOutputStream when onGetData() is called.\n\nThe exception is EventMetricProducer. Each EventMetricProducer will still have a ProtoOutputStream\nBecause LogEvent comes as a fixed 4K, it\u0027s more memory efficient to have an 8k ProtoOutputStream for\nstoring the events.\n\nAlso removed finish() api in MetricProducer, which was intended to use with Dropbox.\n\nTest: statsd_test \u0026 dogfood app\nBug: 70393808\nChange-Id: I2efe4ecc76a88060a9aa5eb49d1fa6ea60bc5da8\n"
    },
    {
      "commit": "62c1fb0f4993eecc7c78eac0e54427eb47a5a9bc",
      "tree": "7cc072eeaadbe142a9d6db5f4d8a4e954abc180f",
      "parents": [
        "ad2b492fe96e43282c9c34296443c446b992c8b7",
        "d9269e2ee70b01cad3dda14c786e0e4434192248"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 04:46:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 08 04:46:56 2017 +0000"
      },
      "message": "Merge \"Adds rate limit to checking byte size.\""
    },
    {
      "commit": "c51ec6767f7fb17336ca59bbab22d476879c400a",
      "tree": "522db3f4a76826e855450b4f4b78200583b4f6bd",
      "parents": [
        "2514d1ca7910a34502c04e9b5e70066431a3a78c",
        "8f2f3d82053693b0dac828e848e2bb238e1db2d2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 03:50:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 08 03:50:57 2017 +0000"
      },
      "message": "Merge changes Ib254db7e,I4aa0539a\n\n* changes:\n  Anomaly Alert declarations in StatsdStats\n  Anomaly detection statsdstats\n"
    },
    {
      "commit": "d9269e2ee70b01cad3dda14c786e0e4434192248",
      "tree": "ed49673ea27ba84dbaa1709afb0de38ba28cc47a",
      "parents": [
        "f10f83d5071ae74f38d4dec19500b53ac177e8bf"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Dec 05 13:43:51 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 07 18:22:58 2017 -0800"
      },
      "message": "Adds rate limit to checking byte size.\n\nSince there is a separate guardrail for memory used by uid map, we\nno longer add the memory from uid map with the memory per each\nconfig\u0027s metrics. We also prevent the byte size check from happening\ntoo frequently. In order to mock the MetricsManager, we refactor\nsome of the existing methods.\n\nTest: Added unit-tests and verified they all pass on marlin.\nChange-Id: I15cf105f7d95f4016fdb0443b0a33eebe862cafb\n"
    },
    {
      "commit": "8f2f3d82053693b0dac828e848e2bb238e1db2d2",
      "tree": "4707180959cdd6809f84d992cb5d645aecff8bb5",
      "parents": [
        "1d0136d322899cd9db4416c22873ee7ed01d843a"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Dec 07 13:53:21 2017 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Dec 07 18:00:44 2017 -0800"
      },
      "message": "Anomaly Alert declarations in StatsdStats\n\nStatsdStats now tracks the number of times an anomaly is detected (per\nconfig, per alert name).\n\nAlso adds a configKey to AnomalyTracker, which is needed, not only for\nstatsdstats, but also (in the future) for reporting the header\ninformation to incidentd.\n\nBug: 67978682\nTest: adb shell data/nativetest64/statsd_test/statsd_test\nChange-Id: Ib254db7e1edb4f0f193f4772d17f14934cdf7e30\n"
    },
    {
      "commit": "f20ed0321032d70d715eb1ccdde338689a30c7f1",
      "tree": "c5d9f70f20c1afdc10b9f0fd9307680454478848",
      "parents": [
        "734afbe61e3a7180649aebe4a89fb9e21dd668ae",
        "a5b5191351a85ea33641dc42ee4223189b3612f3"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Thu Dec 07 17:58:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 17:58:57 2017 +0000"
      },
      "message": "Merge \"Rename EventConditionLink as MetricConditionLink in statsd_config.proto.\""
    },
    {
      "commit": "42a24dcce51c429b66b91abfa8c6c92f2af5ed94",
      "tree": "e259800d25a8f91d9ba2298f3707f997807a108c",
      "parents": [
        "4ab17843a1a8b95a37705a077d5be8bbded71667",
        "5c5eebca0e50f5ceb08ad271e4f25731a5b5f95c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 07 01:51:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 01:51:58 2017 +0000"
      },
      "message": "Merge \"Fix a deadlock in statsd.\""
    },
    {
      "commit": "5c5eebca0e50f5ceb08ad271e4f25731a5b5f95c",
      "tree": "4ae505d4bd3cee5c1735fac171e87a9478a6ded0",
      "parents": [
        "1f272d89e3cf850965fc0db30f1ae3614a1892b9"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 06 15:35:50 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 06 15:35:50 2017 -0800"
      },
      "message": "Fix a deadlock in statsd.\n\nTest: manual\nChange-Id: I7676713f604699737d819ac67fe49bc5b5d8cf98\n"
    },
    {
      "commit": "a5b5191351a85ea33641dc42ee4223189b3612f3",
      "tree": "9800014a5eca81763abced6c264e0d489da12658",
      "parents": [
        "057087457b123f1810d028ac044e2ece9e7610e3"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Dec 05 21:43:52 2017 -0800"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Dec 05 21:51:46 2017 -0800"
      },
      "message": "Rename EventConditionLink as MetricConditionLink in statsd_config.proto.\n\nTest: Ran statsd_test and cts tests.\nChange-Id: Ia9a38892854443aa4f17d800a075860fcf874652\n"
    },
    {
      "commit": "6e43f5361cc73ad2c1126baa5f5551f9c65a920a",
      "tree": "c07a798b3d46867a2d1eab29208fa892c0113745",
      "parents": [
        "bd4518d95632c8a4efd417177a2ba59f2cdfa6f4",
        "12d01fa7c165a1f79091d4d742a48bffd7552650"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Wed Dec 06 03:38:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 06 03:38:56 2017 +0000"
      },
      "message": "Merge \"Rename more things in statsd_config.proto.\""
    },
    {
      "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": "12d01fa7c165a1f79091d4d742a48bffd7552650",
      "tree": "2abf40dbd5eeaaca71cbb7950cb1a449d68eea18",
      "parents": [
        "a2d0fc00125d9ad8a3ab465fdff25a3e2a437ae8"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Mon Dec 04 20:56:09 2017 -0800"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Dec 05 09:20:28 2017 -0800"
      },
      "message": "Rename more things in statsd_config.proto.\n\nSimpleCondition -\u003e SimplePredicate\nsimple_condition -\u003e simple_predicate\nCondition -\u003e Predicate\ncondition -\u003e predicate\n\nTest: Ran statsd and statsd_test.\n\nChange-Id: I3115fb51a4dc3cbe5f23535dfc448d5755b9ed7f\n"
    },
    {
      "commit": "456385cba9eaa3c1c04a8c0b877c896966234a44",
      "tree": "d8df9cbdfff966c51b38a87552b2ea2e5b4e7bfe",
      "parents": [
        "ef1037390a22b1376dffaca3aa20dc8c74ab79a0",
        "f60e0bad5908c51c954ca8dc763c8efd394c56dc"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Dec 05 17:15:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 17:15:17 2017 +0000"
      },
      "message": "Merge \"Fix how DurationTracker passes results to DurationMetricProducer\""
    }
  ],
  "next": "450099db169d386077584d93486908c3bae1244e"
}
