[nginx] Open file cache: fixed file->uses loss on retest.

Maxim Dounin mdounin at mdounin.ru
Wed Jun 4 23:37:04 UTC 2025


details:   http://freenginx.org/hg/nginx/rev/4604f3fe8f83
branches:  
changeset: 9366:4604f3fe8f83
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Thu Jun 05 02:18:00 2025 +0300
description:
Open file cache: fixed file->uses loss on retest.

If an open file was reopened during a retest, but was in use by another
request, the cache entry was re-created with file->uses set to 1.  Fix
is to preserve existing file->uses.

diffstat:

 src/core/ngx_open_file_cache.c |  7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diffs (38 lines):

diff --git a/src/core/ngx_open_file_cache.c b/src/core/ngx_open_file_cache.c
--- a/src/core/ngx_open_file_cache.c
+++ b/src/core/ngx_open_file_cache.c
@@ -147,6 +147,7 @@ ngx_open_cached_file(ngx_open_file_cache
     time_t                          now;
     uint32_t                        hash;
     ngx_int_t                       rc;
+    ngx_uint_t                      uses;
     ngx_file_info_t                 fi;
     ngx_pool_cleanup_t             *cln;
     ngx_cached_open_file_t         *file;
@@ -348,6 +349,8 @@ ngx_open_cached_file(ngx_open_file_cache
 
         file->close = 1;
 
+        uses = file->uses;
+
         goto create;
     }
 
@@ -359,6 +362,8 @@ ngx_open_cached_file(ngx_open_file_cache
         goto failed;
     }
 
+    uses = 1;
+
 create:
 
     if (cache->current >= cache->max) {
@@ -387,7 +392,7 @@ create:
 
     cache->current++;
 
-    file->uses = 1;
+    file->uses = uses;
     file->count = 0;
     file->use_event = 0;
     file->event = NULL;


More information about the nginx-devel mailing list