)]}'
{
  "commit": "1c393e129f64661344de0eccd78c8a9f49ef3b46",
  "tree": "95a55dd76b64f5869c13125ab5c36eb56d074caf",
  "parents": [
    "b9c4c2966aa4478f980d1100f1c1c92096fe9109"
  ],
  "author": {
    "name": "Sergey Kandaurov",
    "email": "pluknet@nginx.com",
    "time": "Wed Dec 29 22:29:23 2021 +0300"
  },
  "committer": {
    "name": "Sergey Kandaurov",
    "email": "pluknet@nginx.com",
    "time": "Wed Dec 29 22:29:23 2021 +0300"
  },
  "message": "Tests: improved stop_daemons() to send signal again.\n\nAs was observed, it\u0027s possible that a signal to complete a uwsgi daemon\ncan be ignored while it is starting up, which results in tests hang due\nto eternal waiting on child processes termination.  Notably, it is seen\nwhen running tests with a high number of prove jobs on a low-profile VM\nagainst nginx with broken modules and/or configuration.  To reproduce:\n\n$ TEST_NGINX_GLOBALS\u003dERROR prove -j16 uwsgi*.t\n\nInspecting uwsgi under ktrace on FreeBSD confirms that a SIGTERM signal\nis ignored at the very beginning of uwsgi startup.  It is then replaced\nwith a default action after listen(), thus waiting until uwsgi is ready\nto accept new TCP connections doesn\u0027t completely solve the hang window.\n\nThe fix is to retry sending a signal some time after waitpid(WNOHANG)\ncontinuously demonstrated no progress with reaping a signaled process.\nIt is modelled after f13ead27f89c that improved stop() for nginx.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d87b14457fd5b2045f9f11cf83c953f5a9b66742",
      "old_mode": 33188,
      "old_path": "lib/Test/Nginx.pm",
      "new_id": "73153c2b46272ea79d170d7e188376826c9fdcf5",
      "new_mode": 33188,
      "new_path": "lib/Test/Nginx.pm"
    }
  ]
}
