)]}'
{
  "commit": "64ac68756f3112414e6a4569ec45de33d3e45a95",
  "tree": "b94624e2cb2c8d151129acbe5c4f1195657f3460",
  "parents": [
    "b813150509db49e479424680ee70fd4031f3bccb"
  ],
  "author": {
    "name": "Sebastian Schuberth",
    "email": "sschuberth@gmail.com",
    "time": "Tue Aug 16 11:43:21 2016 +0200"
  },
  "committer": {
    "name": "Sebastian Schuberth",
    "email": "sschuberth@gmail.com",
    "time": "Tue Aug 16 12:12:26 2016 +0200"
  },
  "message": "xdocs: Fix a race condition in generating the temporary file name\n\nTimeUtil.nowTs() has only millisecond resolution, so calling getNanos() on\nit does not add any precision. With millisecond resolution it can happen\nfor a side-by-side diff that the same temporary file name is created for\nthe two files to compare, resulting in an exception like\n\ncom.google.common.util.concurrent.UncheckedExecutionException:\njava.io.FileNotFoundException: [...]/xdocs/tmp/asciidoctor-891000000.tmp\n(No such file or directory)\n    at com.google.common.cache.AbstractLoadingCache.getUnchecked(AbstractLoadingCache.java:55)\n    at com.googlesource.gerrit.plugins.xdocs.XDocCache.get(XDocCache.java:52)\n    at com.googlesource.gerrit.plugins.xdocs.XDocWebLink.getFileUrl(XDocWebLink.java:123)\n    at com.googlesource.gerrit.plugins.xdocs.XDocWebLink.getFileWebLink(XDocWebLink.java:92)\n\nFix this by letting Java determine a unique file name via\nFile.createTempFile() and let AsciiDoctor simply overwrite it.\n\nChange-Id: Icf3843f8cd8c4c6f4ae10b3a8b264f2e52b72f89\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8bbe7a00522b7265a5cae8cf2d7e6924771d4c26",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/AsciidoctorFormatter.java",
      "new_id": "caa31c4b14f8004d9042d8774b41559d2e990987",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/AsciidoctorFormatter.java"
    }
  ]
}
