[PATCH] Cache: gracefully exit the cache manager process

Maxim Dounin mdounin at mdounin.ru
Mon Nov 4 21:31:31 UTC 2013


Hello!

On Mon, Nov 04, 2013 at 12:55:45PM -0800, Yichun Zhang (agentzh) wrote:

> Hello!
> 
> I've recently run into an issue in the nginx cache manager process
> which does not call ngx_worker_process_exit to gracefully exit, thus
> tragically skipping all my cleanup code registered by my (3rd-party)
> modules.
> 
> Below is a patch to fix this. This fix also makes the cache manager
> process valgrind-clean.
> 
> Thanks!
> -agentzh
> 
> # HG changeset patch
> # User Yichun Zhang <agentzh at gmail.com>
> # Date 1383598130 28800
> # Node ID f64218e1ac963337d84092536f588b8e0d99bbaa
> # Parent  dea321e5c0216efccbb23e84bbce7cf3e28f130c
> Cache: gracefully exit the cache manager process.
> 
> diff -r dea321e5c021 -r f64218e1ac96 src/os/unix/ngx_process_cycle.c
> --- a/src/os/unix/ngx_process_cycle.c Thu Oct 31 18:23:49 2013 +0400
> +++ b/src/os/unix/ngx_process_cycle.c Mon Nov 04 12:48:50 2013 -0800
> @@ -1335,7 +1335,7 @@
> 
>          if (ngx_terminate || ngx_quit) {
>              ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
> -            exit(0);
> +            ngx_worker_process_exit(cycle);
>          }

The cache manager process isn't worker process, so calling 
ngx_worker_process_exit() looks strange.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx-devel mailing list