]> git.kaiwu.me - nginx.git/commitdiff
Cache: version in cache files.
authorMaxim Dounin <mdounin@mdounin.ru>
Wed, 25 Jun 2014 22:27:21 +0000 (02:27 +0400)
committerMaxim Dounin <mdounin@mdounin.ru>
Wed, 25 Jun 2014 22:27:21 +0000 (02:27 +0400)
This allows to change the structure of cache files without spamming logs
with false alerts.

src/http/ngx_http_cache.h
src/http/ngx_http_file_cache.c

index 193a35322b54520287f6e5112aa93c64210314f8..1a3117adb43c9024d958d02a5da55eefb42bdab6 100644 (file)
@@ -25,6 +25,8 @@
 
 #define NGX_HTTP_CACHE_KEY_LEN       16
 
+#define NGX_HTTP_CACHE_VERSION       1
+
 
 typedef struct {
     ngx_uint_t                       status;
@@ -97,6 +99,7 @@ struct ngx_http_cache_s {
 
 
 typedef struct {
+    ngx_uint_t                       version;
     time_t                           valid_sec;
     time_t                           last_modified;
     time_t                           date;
index 4d9e822357226ff8d0363958dd52a1dd01aa58d7..1eab772156f9f9a169ed205a99913cb730c91191 100644 (file)
@@ -498,6 +498,12 @@ ngx_http_file_cache_read(ngx_http_request_t *r, ngx_http_cache_t *c)
 
     h = (ngx_http_file_cache_header_t *) c->buf->pos;
 
+    if (h->version != NGX_HTTP_CACHE_VERSION) {
+        ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
+                      "cache file \"%s\" version mismatch", c->file.name.data);
+        return NGX_DECLINED;
+    }
+
     if (h->crc32 != c->crc32) {
         ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,
                       "cache file \"%s\" has md5 collision", c->file.name.data);
@@ -875,6 +881,7 @@ ngx_http_file_cache_set_header(ngx_http_request_t *r, u_char *buf)
 
     ngx_memzero(h, sizeof(ngx_http_file_cache_header_t));
 
+    h->version = NGX_HTTP_CACHE_VERSION;
     h->valid_sec = c->valid_sec;
     h->last_modified = c->last_modified;
     h->date = c->date;
@@ -1042,7 +1049,8 @@ ngx_http_file_cache_update_header(ngx_http_request_t *r)
         goto done;
     }
 
-    if (h.last_modified != c->last_modified
+    if (h.version != NGX_HTTP_CACHE_VERSION
+        || h.last_modified != c->last_modified
         || h.crc32 != c->crc32
         || h.header_start != c->header_start
         || h.body_start != c->body_start)
@@ -1060,6 +1068,7 @@ ngx_http_file_cache_update_header(ngx_http_request_t *r)
 
     ngx_memzero(&h, sizeof(ngx_http_file_cache_header_t));
 
+    h.version = NGX_HTTP_CACHE_VERSION;
     h.valid_sec = c->valid_sec;
     h.last_modified = c->last_modified;
     h.date = c->date;