)]}'
{
  "commit": "c16ab0df0d711a44944656b46f784f679352ac00",
  "tree": "98c217f77a6e89ce5bcde8adc3a7ad8734915196",
  "parents": [
    "3f8b7a5da2e2704a552caff7588b1ea86435683f"
  ],
  "author": {
    "name": "Dave Borowitz",
    "email": "dborowitz@google.com",
    "time": "Thu Apr 23 22:42:44 2015 -0700"
  },
  "committer": {
    "name": "Dave Borowitz",
    "email": "dborowitz@google.com",
    "time": "Thu Apr 23 22:42:44 2015 -0700"
  },
  "message": "Fix race condition in checking topic mergeability\n\nThe list of changes in the topic is looked up using the secondary\nindex, which prepopulates the mergeable field on the ChangeData. This\nvalue may be stale, as it is just a boolean yes/no, suitable\nprimarily for rendering the search results list. In particular, it\nmay not reflect the current state of the branch tip, if the\nReindexAfterUpdate queue has not yet been fully processed.\n\nActionsIT was hitting this race condition by submitting a change then\nimmediately checking the mergeability of a change conflicting with the\nnew branch tip. The mergeability of this second change should switch\nfrom true to false as a result (blocking submission of the whole\ntopic). Because of this race condition, it was indeterminate which\nmergeability bit would be returned from the search index.\n\nThe workaround for now is to allow explicitly clearing the mergeable\nbit in ChangeData. A more robust change would be to tweak the index\nsystem to say we want to prepopulate the ChangeData with fewer stored\nfields from the index. As InternalChangeQuery is used more, this may\nbecome more and more important.\n\nChange-Id: I847c7896371451b85a05f4d768b805b953b61466\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b53d193c173a5d7bf1bb42312221a1495409b2de",
      "old_mode": 33188,
      "old_path": "gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/ActionsIT.java",
      "new_id": "66c99f1f7949314e3a798a07aac5af6c1365051c",
      "new_mode": 33188,
      "new_path": "gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/ActionsIT.java"
    },
    {
      "type": "modify",
      "old_id": "3cba4be8069119927d67bdd95ba6d0ecf281e8ea",
      "old_mode": 33188,
      "old_path": "gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java",
      "new_id": "f7fab696eb5256bd5107cee25dbaedb742ab00b7",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java"
    },
    {
      "type": "modify",
      "old_id": "3c24dd221e24ce7e0f9a97e99949d1e5c587372d",
      "old_mode": 33188,
      "old_path": "gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java",
      "new_id": "802cf6560f7d7ab51062665e13bc68caf6669b7b",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java"
    }
  ]
}
