)]}'
{
  "commit": "427b0d8c25c309aba28c21d33adceba9087bf5a9",
  "tree": "c4300a4f5f9b7c7b4195b9693973386b01f5adc7",
  "parents": [
    "7e4ef55fe2e0530b36f1a4dfca0478d80aa8ee25"
  ],
  "author": {
    "name": "Gal Paikin",
    "email": "paiking@google.com",
    "time": "Tue Nov 30 16:39:20 2021 +0100"
  },
  "committer": {
    "name": "Gal Paikin",
    "email": "paiking@google.com",
    "time": "Tue Nov 30 16:39:20 2021 +0100"
  },
  "message": "Avoid computing votes on read: read from storage\n\nUntil now, we computed votes using ApprovalInference. This took into\naccount copied votes. This was not efficient since it had to take into\naccount copied votes from very old patchsets. E.g, votes sometimes need\nto be copied from ps1 to ps10.\n\nLater, we introduced ApprovalCache that saved some of the computations\nin Ie53fbce4e. This improved the latency.\n\nAs a long term solution, we then introduced persisting copied votes in\nNoteDb in Ia1ab9b3c. However, we didn\u0027t start using the persisted copied\nvotes yet. The reason for only using the persisted copied votes a\nversion later in upstream Gerrit, is to ensure users have enough time\nbetween versions. Older votes will be lost.\n\nAs a follow-up we will also remove ApprovalCache since it\u0027s no longer\nused.\n\nTechnical detail: We put labelNormalizer in ApprovalsUtil to ensure we\nnormalize labels (aka remove non existing labels). This is necessary\nsince we don\u0027t want to return (usually) votes to labels that don\u0027t\nexist.\n\nWe also wrote a test for deleting reviewer which should delete all\nvotes. We should delete copied votes as well, so this is verified by a\ntest.\n\nChange-Id: If95c0f8b0466e6853932f13ceba740c8f2e5307b\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c2e35d2b57397490c0b0b5a2d38039adbf9875fc",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/approval/ApprovalsUtil.java",
      "new_id": "c3921f8a60739f1a109df422275c49979159e13f",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/approval/ApprovalsUtil.java"
    },
    {
      "type": "modify",
      "old_id": "1e40429fe2c5fe6043a5272c94512f0533c75643",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/change/DeleteReviewerOp.java",
      "new_id": "415383a7daae042a2f20d9c99f9f85a9660a345e",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/change/DeleteReviewerOp.java"
    },
    {
      "type": "modify",
      "old_id": "209901d65c3cf493790f685d3c48f55d8f44094e",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/change/PatchSetInserter.java",
      "new_id": "aed177442e6b270594b310fb055f33c1e0768831",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/change/PatchSetInserter.java"
    },
    {
      "type": "modify",
      "old_id": "a9ef70e72d8e162d7f6bf0f13dc3c703b6da6396",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/git/receive/ReplaceOp.java",
      "new_id": "20ce99164ece408239457d369f8c0e8f06fed09b",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/git/receive/ReplaceOp.java"
    },
    {
      "type": "modify",
      "old_id": "0710784242c291d8a0e2a033408ae4e7662a92fc",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/mail/receive/MailProcessor.java",
      "new_id": "31e3948e242800cb8f9d9df20be1cb5697096fba",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/mail/receive/MailProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "2d9b0141968fc4acfd1e923c8647aeb4da5e92fd",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/notedb/ChangeNotes.java",
      "new_id": "bbfe8ddd49f8be5684e83db4d7fbe28787525075",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/notedb/ChangeNotes.java"
    },
    {
      "type": "modify",
      "old_id": "9961519bf7b716b26b617e2e67bcf05359dfa17b",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/query/change/ChangeData.java",
      "new_id": "e38ff3d0f90befa23b22d012e749afa9e63eadef",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/query/change/ChangeData.java"
    },
    {
      "type": "modify",
      "old_id": "43875245957b0c6eaa86b46cbfc6e8ffb00791a2",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/DeleteVote.java",
      "new_id": "b266031227805a63338f42c94a1a061a2348a1e4",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/DeleteVote.java"
    },
    {
      "type": "modify",
      "old_id": "8c218417e8d763a610ba9a4c1e46b9b5aff6a901",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/Move.java",
      "new_id": "86ec6c89e685d25d22d1b77a6ec4df42b8a1501e",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/Move.java"
    },
    {
      "type": "modify",
      "old_id": "5c252f44611f3049f45dcb314939f81a4f22eb37",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/PostReview.java",
      "new_id": "24b0799aa3bb11ea629af9f847c8bbd2ea250e81",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/PostReview.java"
    },
    {
      "type": "modify",
      "old_id": "7d428eb701acd92df10122cabd9cbab10e9204a9",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/submit/SubmitStrategyOp.java",
      "new_id": "cd8ea4cd391c7a8269dfb764398eded20358090e",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/submit/SubmitStrategyOp.java"
    },
    {
      "type": "modify",
      "old_id": "38886798caae41130c79c4edc11b35fe6cb8c030",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java",
      "new_id": "07a5a9c7d20616b55c72bc29556cc03409e97b61",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java"
    }
  ]
}
