[nginx] Silenced complaints about socket leaks on forced termination.

Sergey Kandaurov pluknet at nginx.com
Tue Jan 30 15:08:17 UTC 2024


details:   https://hg.nginx.org/nginx/rev/791ead216b03
branches:  
changeset: 9201:791ead216b03
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Mon Jan 29 10:29:39 2024 +0300
description:
Silenced complaints about socket leaks on forced termination.

When graceful shutdown was requested, and then nginx was forced to
do fast shutdown, it used to (incorrectly) complain about open sockets
left in connections which weren't yet closed when fast shutdown
was requested.

Fix is to avoid complaining about open sockets when fast shutdown was
requested after graceful one.  Abnormal termination, if requested with
the WINCH signal, can still happen though.

diffstat:

 src/os/unix/ngx_process_cycle.c  |  10 +++++-----
 src/os/win32/ngx_process_cycle.c |   2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diffs (40 lines):

diff -r ee40e2b1d083 -r 791ead216b03 src/os/unix/ngx_process_cycle.c
--- a/src/os/unix/ngx_process_cycle.c	Mon Dec 25 21:15:48 2023 +0400
+++ b/src/os/unix/ngx_process_cycle.c	Mon Jan 29 10:29:39 2024 +0300
@@ -948,7 +948,7 @@ ngx_worker_process_exit(ngx_cycle_t *cyc
         }
     }
 
-    if (ngx_exiting) {
+    if (ngx_exiting && !ngx_terminate) {
         c = cycle->connections;
         for (i = 0; i < cycle->connection_n; i++) {
             if (c[i].fd != -1
@@ -963,11 +963,11 @@ ngx_worker_process_exit(ngx_cycle_t *cyc
                 ngx_debug_quit = 1;
             }
         }
+    }
 
-        if (ngx_debug_quit) {
-            ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "aborting");
-            ngx_debug_point();
-        }
+    if (ngx_debug_quit) {
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "aborting");
+        ngx_debug_point();
     }
 
     /*
diff -r ee40e2b1d083 -r 791ead216b03 src/os/win32/ngx_process_cycle.c
--- a/src/os/win32/ngx_process_cycle.c	Mon Dec 25 21:15:48 2023 +0400
+++ b/src/os/win32/ngx_process_cycle.c	Mon Jan 29 10:29:39 2024 +0300
@@ -834,7 +834,7 @@ ngx_worker_process_exit(ngx_cycle_t *cyc
         }
     }
 
-    if (ngx_exiting) {
+    if (ngx_exiting && !ngx_terminate) {
         c = cycle->connections;
         for (i = 0; i < cycle->connection_n; i++) {
             if (c[i].fd != (ngx_socket_t) -1


More information about the nginx-devel mailing list