)]}'
{
  "commit": "33d28aab6f1492acb6f811c01fed7525cfe0e4d5",
  "tree": "f043aa9c1073c8264c875a6861178ea2f3ec0dae",
  "parents": [
    "deebb54e70c16e76fcc4c95e5c624b6409e210cc"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "mfick@codeaurora.org",
    "time": "Fri Feb 07 11:31:35 2020 -0700"
  },
  "committer": {
    "name": "Sumit LNU",
    "email": "suchawla@codeaurora.org",
    "time": "Mon Jun 07 10:22:09 2021 +0530"
  },
  "message": "Fix event plugin possible transaction reuse bug\n\nWith the previous design, it was possible for a proposal for an old\ntransaction to be replayed after the transaction had been completed and\ndeleted by another actor. This can result an outdated sequence number\nfrom being reused and losing an old event. Previously proposals were\nrenamed to update/\u003cuuid\u003e/ which could happen at the wrong time after the\n\u003cuuid\u003e dir was deleted. Fix this by introducing the \u0027next\u0027 directory. In\nthe new design, all actors must rename their next proposals to\n\u003cuuid\u003e/next. This prevents outdated proposals for old transactions from\nbeing used after the \u003cuuid\u003e dir is deleted.\n\nTesting FsStoreTest with -j 100 and a count of 1000 shows that the\nprevious design would result in many reused ids, around 150 out of 100K\nevents. With the same settings, there were no errors with the new\ndesign.\n\nTesting also show this to be compatible with the previous design. While\nthe previous and new designs cannot complete each other\u0027s transactions,\nthey do not interfere with each other. This should make a multi master\ntransition while both the old and new designs are running acceptable.\n\nThe new design is slower in the single threaded case due to the extra\ndirectory being created and deleted. The new design appears to be faster\n50% faster with 100 threads, possibly due to the bug fix preventing more\ncollisions, although it is hard to make an apples to apples comparison\ndue to the buggy nature of the previous design.\n\nChange-Id: I4bbea6c8a17b84ac84cf7906825ad65f9f7f5301\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cc26ad2795ee18c50b6fc5802d765a9e1bc11861",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/events/fsstore/EventSequence.java",
      "new_id": "9ab49fdab6ffa65e14a1d87ada444e95f4942152",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/events/fsstore/EventSequence.java"
    },
    {
      "type": "modify",
      "old_id": "6f41b43f3efa6fa4b97649b2ee762901e32402c7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/events/fsstore/UpdatableFileValue.java",
      "new_id": "59cb13edb88a170b20f2302b383c2a6ca5cd7a98",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/events/fsstore/UpdatableFileValue.java"
    },
    {
      "type": "modify",
      "old_id": "76ccbbb20717f356b6a3a1998f8054a10b9d2be9",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/events/fsstore/FsStoreTest.java",
      "new_id": "fb7539d04ae33fc54f3a02144bd3e14c068c7a46",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/events/fsstore/FsStoreTest.java"
    }
  ]
}
