)]}'
{
  "commit": "d3d84218cafbc1a95e7d6bbb775b495d1bebf4d2",
  "tree": "fcfb47b000776c42b18f199565a43f0ab44e27d1",
  "parents": [
    "c14801d0aaceefb0f67227c6ab7826061141fa12"
  ],
  "author": {
    "name": "Amin Hassani",
    "email": "ahassani@chromium.org",
    "time": "Sat Aug 17 00:27:44 2019 -0700"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Wed Sep 11 17:31:48 2019 +0000"
  },
  "message": "update_engine: Add internal error codes that used for metrics.\n\nWhenever we are dealing with some problem that require defining error\ncodes and sending UMA metrics, we need to define a new ErrorCode enum\nvalue. These error codes then will be used to send which UMA metric\nvalue to send. Some of the UMA metrics seems to have circumvent this\nprocess by introducing their own error codes without adding them to the\nglobal list of error codes.\n\nThis CL introduces three new error codes:\n - kInternalLibCurlError\n - kUnresolvedHostError\n - kUnresolvedHostRecovered (Technically not an error code, but fits the\n   description and use case of it.)\n\nThat are then translated to the UMA metric values we send for\nDownloadErrorCode.\n\nIn addition, this CL moves the responsibility of sending these UMA\nmetrics from LibCurlHttpFetcher to OmahaRequestAction which is the more\ncorrect place to send it because that\u0027s where the operations are\ncompleted (success or failure) and we can safely decide on the value of\nUMA without risking to send overlapping or duplicated metrics.\n\nFor example, previously we send kInternalLibCurlError in conjunction\nwith the kUnresolvedHostError. But doing this can hide the fact that\nthese two error codes might be related and caused by the same underlying\nissue.\n\nSame goes for kUnresolvedHostError and kUnresolvedHosRecovered. If we\nsend both these metrics at the same time, then we need to subtract the\nnumber of kUnresolvedHosRecovered from kUnresolvedHostError to figure out\nthe number of unresolved host errors that did not recover. By\nexclusively sending one or another. We can see exactly how many are\nrecovered and how many did not. Although this might change the meaning\nof kUnresolvedHostError metric, in the long term it will not be an issue\nas all the results will converge to the new behavior.\n\nThe enum.xml (chrome) is updated in crrev.com/c/1774101\n\nBUG\u003dNone\nTEST\u003dcros_workon_make --board\u003damd64-generic --test --noreconf update_engine\n\nChange-Id: I3c7bb5f6159a0bc3a37d55666572b9cd6730f3cb\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1759544\nReviewed-by: Nicolas Norvez \u003cnorvez@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nCommit-Queue: Amin Hassani \u003cahassani@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "252cc420101cc060b0a2d96b583d6ce83fd86e90",
      "old_mode": 33188,
      "old_path": "common/error_code.h",
      "new_id": "3dd74028a0a30ef151521127ca8440f0d7b05d90",
      "new_mode": 33188,
      "new_path": "common/error_code.h"
    },
    {
      "type": "modify",
      "old_id": "b0bbbd4a6a13def849ca055986efe139c45741ae",
      "old_mode": 33188,
      "old_path": "common/error_code_utils.cc",
      "new_id": "5bcbaa40d8d01c8a3e976b4cde407fe121d0e2ce",
      "new_mode": 33188,
      "new_path": "common/error_code_utils.cc"
    },
    {
      "type": "modify",
      "old_id": "94f31d7567b79f41abb8dc18e03c66edbae89faa",
      "old_mode": 33188,
      "old_path": "common/http_fetcher.h",
      "new_id": "f74a0f05504dcc339a75b483ee9e8056cd316fbf",
      "new_mode": 33188,
      "new_path": "common/http_fetcher.h"
    },
    {
      "type": "modify",
      "old_id": "ad823cf2d8e7e96f452ad19eb24a198f3a725d18",
      "old_mode": 33188,
      "old_path": "libcurl_http_fetcher.cc",
      "new_id": "4bea4eff0a233525eed6056bfd0a6c3efc518ac8",
      "new_mode": 33188,
      "new_path": "libcurl_http_fetcher.cc"
    },
    {
      "type": "modify",
      "old_id": "8f4258db7dba25a16dcb3a84c97363c96b373e5a",
      "old_mode": 33188,
      "old_path": "libcurl_http_fetcher.h",
      "new_id": "97a9a87f62c2c8847dd1f13b45eb29476ee21b12",
      "new_mode": 33188,
      "new_path": "libcurl_http_fetcher.h"
    },
    {
      "type": "modify",
      "old_id": "7f00daee440a692b19994ee70ac5ab9887973c81",
      "old_mode": 33188,
      "old_path": "libcurl_http_fetcher_unittest.cc",
      "new_id": "20f05b9ccb33841f996e32c400cd67f8a34a79d4",
      "new_mode": 33188,
      "new_path": "libcurl_http_fetcher_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "167e577caa0369eae8fb209d1fb4d85b762e3fb8",
      "old_mode": 33188,
      "old_path": "metrics_constants.h",
      "new_id": "db21d90506d42cf806e02ebe5a42797918075abb",
      "new_mode": 33188,
      "new_path": "metrics_constants.h"
    },
    {
      "type": "modify",
      "old_id": "88c8d52442fdf30f69f9cde661596c2a0edd8d13",
      "old_mode": 33188,
      "old_path": "metrics_utils.cc",
      "new_id": "efbd067d30cd4d6b785735600ea7bf2847525dec",
      "new_mode": 33188,
      "new_path": "metrics_utils.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a8ef0f440d9530fa5ef18d3358b16d4ba170a51b",
      "new_mode": 33188,
      "new_path": "mock_libcurl_http_fetcher.h"
    },
    {
      "type": "modify",
      "old_id": "6c67a3b72225275c9739270393856a4c630f55fa",
      "old_mode": 33188,
      "old_path": "omaha_request_action.cc",
      "new_id": "4d865868fbe48d25fc3fa247fce937d303631268",
      "new_mode": 33188,
      "new_path": "omaha_request_action.cc"
    },
    {
      "type": "modify",
      "old_id": "8dffb5c0babc00e9b8482653235b8565b4e660ac",
      "old_mode": 33188,
      "old_path": "omaha_request_action.h",
      "new_id": "12d36d94ac1619a36474b1a3f788e01381f67e1b",
      "new_mode": 33188,
      "new_path": "omaha_request_action.h"
    },
    {
      "type": "modify",
      "old_id": "a6c362016bf418bd3472976fe2cb764e813c49c3",
      "old_mode": 33188,
      "old_path": "payload_state.cc",
      "new_id": "355552ec4607d9a04cfce838755dbfbfb210491a",
      "new_mode": 33188,
      "new_path": "payload_state.cc"
    },
    {
      "type": "modify",
      "old_id": "fab111a2a352d31910b7005f72320d78a76a7fa4",
      "old_mode": 33188,
      "old_path": "update_manager/chromeos_policy.cc",
      "new_id": "dd6cc8d64bd56f958f4c2f2c508e7f64b8a1b0a0",
      "new_mode": 33188,
      "new_path": "update_manager/chromeos_policy.cc"
    }
  ]
}
