[nginx] Access log: removed dead ev->timedout check in flush timer handler.

Maxim Dounin mdounin at mdounin.ru
Tue Mar 7 17:00:52 UTC 2017


details:   http://hg.nginx.org/nginx/rev/c36d160cd4e0
branches:  
changeset: 6927:c36d160cd4e0
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Tue Mar 07 18:51:12 2017 +0300
description:
Access log: removed dead ev->timedout check in flush timer handler.

The ev->timedout flag is set on first timer expiration, and never reset
after it.  Due to this the code to stop the timer when the timer was
canceled never worked (except in a very specific time frame immediately
after start), and the timer was always armed again.  This essentially
resulted in a buffer flush at the end of an event loop iteration.

This behaviour actually seems to be better than just stopping the flush
timer for the whole shutdown, so it is preserved as is instead of fixing
the code to actually remove the timer.  It will be further improved by
upcoming changes to preserve cancelable timers if there are other timers
blocking shutdown.

diffstat:

 src/http/modules/ngx_http_log_module.c |  15 +--------------
 src/stream/ngx_stream_log_module.c     |  15 +--------------
 2 files changed, 2 insertions(+), 28 deletions(-)

diffs (56 lines):

diff --git a/src/http/modules/ngx_http_log_module.c b/src/http/modules/ngx_http_log_module.c
--- a/src/http/modules/ngx_http_log_module.c
+++ b/src/http/modules/ngx_http_log_module.c
@@ -748,23 +748,10 @@ ngx_http_log_flush(ngx_open_file_t *file
 static void
 ngx_http_log_flush_handler(ngx_event_t *ev)
 {
-    ngx_open_file_t     *file;
-    ngx_http_log_buf_t  *buffer;
-
     ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                    "http log buffer flush handler");
 
-    if (ev->timedout) {
-        ngx_http_log_flush(ev->data, ev->log);
-        return;
-    }
-
-    /* cancel the flush timer for graceful shutdown */
-
-    file = ev->data;
-    buffer = file->data;
-
-    buffer->event = NULL;
+    ngx_http_log_flush(ev->data, ev->log);
 }
 
 
diff --git a/src/stream/ngx_stream_log_module.c b/src/stream/ngx_stream_log_module.c
--- a/src/stream/ngx_stream_log_module.c
+++ b/src/stream/ngx_stream_log_module.c
@@ -641,23 +641,10 @@ ngx_stream_log_flush(ngx_open_file_t *fi
 static void
 ngx_stream_log_flush_handler(ngx_event_t *ev)
 {
-    ngx_open_file_t       *file;
-    ngx_stream_log_buf_t  *buffer;
-
     ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                    "stream log buffer flush handler");
 
-    if (ev->timedout) {
-        ngx_stream_log_flush(ev->data, ev->log);
-        return;
-    }
-
-    /* cancel the flush timer for graceful shutdown */
-
-    file = ev->data;
-    buffer = file->data;
-
-    buffer->event = NULL;
+    ngx_stream_log_flush(ev->data, ev->log);
 }
 
 


More information about the nginx-devel mailing list