)]}'
{
  "commit": "c66b6c6dd7f10a9941c4a4ab518446175135af26",
  "tree": "6ac03bb381adf0c2d444842eb157b4028ba56c62",
  "parents": [
    "302d47a01975b85e2404448256b2ba9e6512ca50"
  ],
  "author": {
    "name": "Roman Arutyunyan",
    "email": "arut@nginx.com",
    "time": "Mon May 29 23:33:38 2017 +0300"
  },
  "committer": {
    "name": "Roman Arutyunyan",
    "email": "arut@nginx.com",
    "time": "Mon May 29 23:33:38 2017 +0300"
  },
  "message": "Fixed background requests with asynchronous operations.\n\nIf the main request was finalized while a background request performed an\nasynchronous operation, the main request ended up in ngx_http_writer() and was\nnot finalized until a network event or a timeout.  For example, cache\nbackground update with aio enabled made nginx unable to process further client\nrequests or close the connection, keeping it open until client closes it.\n\nNow regular finalization of the main request is not suspended because of an\nasynchronous operation in another request.\n\nIf a background request was terminated while an asynchronous operation was in\nprogress, background request\u0027s write event handler was changed to\nngx_http_request_finalizer() and never called again.\n\nNow, whenever a request is terminated while an asynchronous operation is in\nprogress, connection error flag is set to make further finalizations of any\nrequest with this connection lead to termination.\n\nThese issues appeared in 1aeaae6e9446 (not yet released).\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fd6b513dc4c54ccac3ea425963165fd0a6d4342f",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.c",
      "new_id": "cc3722fb35dc1ea6119172a9806c9153c77d2118",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.c"
    }
  ]
}
