Cache: report error if slab allocator fails during cache loading.
diff --git a/src/http/ngx_http_cache.h b/src/http/ngx_http_cache.h index d36fa77..e93278d 100644 --- a/src/http/ngx_http_cache.h +++ b/src/http/ngx_http_cache.h
@@ -153,6 +153,8 @@ time_t inactive; + time_t fail_time; + ngx_uint_t files; ngx_uint_t loader_files; ngx_msec_t last;
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c index 37c4754..c8b19e1 100644 --- a/src/http/ngx_http_file_cache.c +++ b/src/http/ngx_http_file_cache.c
@@ -2094,6 +2094,12 @@ fcn = ngx_slab_calloc_locked(cache->shpool, sizeof(ngx_http_file_cache_node_t)); if (fcn == NULL) { + if (cache->fail_time != ngx_time()) { + cache->fail_time = ngx_time(); + ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0, + "could not allocate node%s", cache->shpool->log_ctx); + } + ngx_shmtx_unlock(&cache->shpool->mutex); return NGX_ERROR; }