)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "05c68e1fa471692f8e94faedafbeefabd36f0066",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/anomaly/AnomalyTracker.cpp",
      "new_id": "f10b2cf618cddc7ecabb94cf4dc554ff3ca4bf13",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/anomaly/AnomalyTracker.cpp"
    },
    {
      "type": "modify",
      "old_id": "2d5ab867da00c7607ce220fcf95b2c2feacc4ec6",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/anomaly/AnomalyTracker.h",
      "new_id": "472c02c7ee7f20e7839a5a5670b47a530db28778",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/anomaly/AnomalyTracker.h"
    },
    {
      "type": "modify",
      "old_id": "d30810fc800dd817edc749f4ea471804537daeb8",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/anomaly/DurationAnomalyTracker.cpp",
      "new_id": "7576a38db51d73d563dd4c8c90e6217be0c36f4b",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/anomaly/DurationAnomalyTracker.cpp"
    },
    {
      "type": "modify",
      "old_id": "182ce3ba74c0d49659233f5050fb912bb5a7d86a",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/anomaly/DurationAnomalyTracker.h",
      "new_id": "de7093d3b1b64a98a12e3318352c130dc8636c41",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/anomaly/DurationAnomalyTracker.h"
    },
    {
      "type": "modify",
      "old_id": "6087ae502e7b0cd9e7acc1ea61b4120bbc82447a",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/metrics/CountMetricProducer.h",
      "new_id": "16fc7ee3c6e9dd624912a719731a18d32c66e4c0",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/metrics/CountMetricProducer.h"
    },
    {
      "type": "modify",
      "old_id": "023c25e20214e7603cc2200d41ec7f910f2612dc",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/metrics/duration_helper/DurationTracker.h",
      "new_id": "371460e804bde34821e218a76b8699f893669407",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/metrics/duration_helper/DurationTracker.h"
    },
    {
      "type": "modify",
      "old_id": "293726c590e92057141abbd215259cdcdc948632",
      "old_mode": 33188,
      "old_path": "cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h",
      "new_id": "638b7ad7af263a483da09295ad51602404c4050c",
      "new_mode": 33188,
      "new_path": "cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h"
    },
    {
      "type": "modify",
      "old_id": "5842bc889f93cb27c218772e7f2cc43a2b5a94bd",
      "old_mode": 33188,
      "old_path": "cmds/statsd/tests/anomaly/AnomalyTracker_test.cpp",
      "new_id": "66bfa68ecc5595877ce1c93dbaae73347cbe7e67",
      "new_mode": 33188,
      "new_path": "cmds/statsd/tests/anomaly/AnomalyTracker_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "768336b08416a0515d794b6c5888483ce730ddc5",
      "old_mode": 33188,
      "old_path": "cmds/statsd/tests/metrics/CountMetricProducer_test.cpp",
      "new_id": "c39151313c55616471f4a891cf7a234eafeaa01b",
      "new_mode": 33188,
      "new_path": "cmds/statsd/tests/metrics/CountMetricProducer_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "ad9c5a391743e424441a68dae2cb145777189ef1",
      "old_mode": 33188,
      "old_path": "cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp",
      "new_id": "82772d854db27a2ade3e1728628e4b849d2201a0",
      "new_mode": 33188,
      "new_path": "cmds/statsd/tests/metrics/GaugeMetricProducer_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "f98be1b24f4ee278625326493ebd812e6f317b97",
      "old_mode": 33188,
      "old_path": "cmds/statsd/tests/metrics/MaxDurationTracker_test.cpp",
      "new_id": "0772b0d4001df408d3526d82aebcb547b618228e",
      "new_mode": 33188,
      "new_path": "cmds/statsd/tests/metrics/MaxDurationTracker_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "89c6abe7cefd07dd8996d684e1b4370d55b4a9ae",
      "old_mode": 33188,
      "old_path": "cmds/statsd/tests/metrics/OringDurationTracker_test.cpp",
      "new_id": "6b8893e5973f9c3b7df34c88b0dbb4b05efeaf09",
      "new_mode": 33188,
      "new_path": "cmds/statsd/tests/metrics/OringDurationTracker_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "459da0170fc146bf9c80cc5a58b8516bf9849a07",
      "old_mode": 33188,
      "old_path": "cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp",
      "new_id": "fff3dbf5428d99775e48649b39fad09f5bfcfabc",
      "new_mode": 33188,
      "new_path": "cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp"
    }
  ]
}
