bugfix: applied the single_process_graceful_exit patch to the nginx core to fix the issue that nginx fails to perform graceful exit when master_process is turned off.
This commit is contained in:
parent
0ca75dbf45
commit
ec8acae28e
|
@ -0,0 +1,53 @@
|
|||
--- nginx-1.11.2/src/os/unix/ngx_process_cycle.c 2016-07-05 08:56:16.000000000 -0700
|
||||
+++ nginx-1.11.2-patched/src/os/unix/ngx_process_cycle.c 2017-05-14 09:59:52.301108274 -0700
|
||||
@@ -304,11 +304,29 @@ ngx_single_process_cycle(ngx_cycle_t *cy
|
||||
}
|
||||
|
||||
for ( ;; ) {
|
||||
+ if (ngx_exiting) {
|
||||
+ ngx_event_cancel_timers();
|
||||
+
|
||||
+ if (ngx_event_timer_rbtree.root == ngx_event_timer_rbtree.sentinel)
|
||||
+ {
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
|
||||
+
|
||||
+ for (i = 0; cycle->modules[i]; i++) {
|
||||
+ if (cycle->modules[i]->exit_process) {
|
||||
+ cycle->modules[i]->exit_process(cycle);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ngx_master_process_exit(cycle);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
|
||||
|
||||
ngx_process_events_and_timers(cycle);
|
||||
|
||||
- if (ngx_terminate || ngx_quit) {
|
||||
+ if (ngx_terminate) {
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
|
||||
|
||||
for (i = 0; cycle->modules[i]; i++) {
|
||||
if (cycle->modules[i]->exit_process) {
|
||||
@@ -319,6 +337,19 @@ ngx_single_process_cycle(ngx_cycle_t *cy
|
||||
ngx_master_process_exit(cycle);
|
||||
}
|
||||
|
||||
+ if (ngx_quit) {
|
||||
+ ngx_quit = 0;
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
|
||||
+ "gracefully shutting down");
|
||||
+ ngx_setproctitle("process is shutting down");
|
||||
+
|
||||
+ if (!ngx_exiting) {
|
||||
+ ngx_exiting = 1;
|
||||
+ ngx_close_listening_sockets(cycle);
|
||||
+ ngx_close_idle_connections(cycle);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (ngx_reconfigure) {
|
||||
ngx_reconfigure = 0;
|
||||
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reconfiguring");
|
|
@ -62,6 +62,13 @@ if [ "$answer" = "Y" ]; then
|
|||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the single-process-graceful-exit patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-single_process_graceful_exit.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the intercept-error-log patch"
|
||||
|
|
Loading…
Reference in New Issue