)]}'
{
  "commit": "b713e480ca9aeccaf63bccf8629eec13041c6ab6",
  "tree": "8e2715dced608b399c3a4d7157bee7519e4380f9",
  "parents": [
    "72df0f400a4f6144f9c69add91002a0ff02cfe41"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Wed Oct 12 14:22:48 2011 +0000"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Wed Oct 12 14:22:48 2011 +0000"
  },
  "message": "Better recheck of dead upstream servers.\n\nPreviously nginx used to mark backend again as live as soon as fail_timeout\npasses (10s by default) since last failure.  On the other hand, detecting\ndead backend takes up to 60s (proxy_connect_timeout) in typical situation\n\"backend is down and doesn\u0027t respond to any packets\".  This resulted in\nsuboptimal behaviour in the above situation (up to 23% of requests were\ndirected to dead backend with default settings).\n\nMore detailed description of the problem may be found here (in Russian):\nhttp://mailman.nginx.org/pipermail/nginx-ru/2011-August/042172.html\n\nFix is to only allow one request after fail_timeout passes, and\nmark backend as \"live\" only if this request succeeds.\n\nNote that with new code backend will not be marked \"live\" unless \"check\"\nrequest is completed, and this may take a while in some specific workloads\n(e.g. streaming).  This is believed to be acceptable.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dffbf22b28f2970533ca465a09631433974cbbe1",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_upstream_ip_hash_module.c",
      "new_id": "4c031eb4798067088d413a2693126dd366169435",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_upstream_ip_hash_module.c"
    },
    {
      "type": "modify",
      "old_id": "bb9a704b8959f3707adc7d5a25e0d8cb7620bfd0",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream_round_robin.c",
      "new_id": "138872c5fdfcc0e324edc700bf94c2e4a7f69d7f",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream_round_robin.c"
    },
    {
      "type": "modify",
      "old_id": "a9cb257c74f06d85f4313d0849304f6112c65433",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream_round_robin.h",
      "new_id": "195f4d8cad567315423f538cc9ede5605f890f45",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream_round_robin.h"
    }
  ]
}
