> On Oct 6, 2015, at 1:29 PM, Graham Leggett <minf...@sharp.fm> wrote:
> 
> On 06 Oct 2015, at 7:00 PM, Yann Ylavic <ylavic....@gmail.com> wrote:
> 
>> Yet another filter which does not remove itself after the EOS, and
>> destroys the EOR bucket while still using *r after.
> 
> I am wondering if the EOR bucket is a suboptimal way to clean up after 
> ourselves.
> 
> The MPM itself is in a position to know when the filter buffers are all empty 
> and it is safe to delete a request pool. I am imagining a “shutdown set”, 
> which contains the pools which have been marked as ready to shut down. If 
> there is a pool in the shutdown set, walk the outstanding filters and look 
> for any filters whose pools are descendants of that pool, and check if the 
> filters are empty. If so, apr_pool_destroy() and we’re done. If the “shutdown 
> set” is empty, do nothing.
> 
> Instead of creating an EOR bucket, we call an MPM API that says “add this 
> pool to the shutdown set”, and then forget about it.
> 
> Legacy MPMs fall back to EOR behaviour, but we deprecate it.
> 
> I think the above is a far safer approach than assuming filters will “do the 
> right thing”.
> 

Basic idea seems sound... +1

Reply via email to