Am 23.01.2017 um 23:42 schrieb Yann Ylavic:
> On Mon, Jan 23, 2017 at 11:37 PM, Yann Ylavic <[email protected]> wrote:
>> Hi Stefan,
>>
>> On Mon, Jan 23, 2017 at 9:54 PM, Stefan Eissing
>> <[email protected]> wrote:
>>>
>>> I am not aware of any special expectations now. Almost all is triggered by
>>> (parent) pool cleanups and is therefore more deterministic than before. The
>>> only explicit destroy is done on finished streams and slave connections no
>>> longer used. When the master conn disappears, all is deallocated as the
>>> force wills it.
>>
>> I wonder if the attached patch makes sense.
>> If beam_{recv,send}_cleanup() are to be executed on (parent) pool
>> destroy, there will be before beam_cleanup() itelf (which also calls
>> beam_send_cleanup() explicitly), so it should avoid potential a double
>> cleanup in this case.
>>
>> WDYT?
>
> Please ignore the last (garbage) hunk.
last garbage hunk?
This one?
@@ -520,8 +529,8 @@ static apr_status_t beam_cleanup(void *data)
* beam should have lost its mutex protection, meaning
* it is no longer used multi-threaded and we can safely
* purge all remaining sender buckets. */
- apr_pool_cleanup_kill(beam->send_pool, beam,
beam_send_cleanup);
ap_assert(!beam->m_enter);
+ beam_set_send_pool(beam, NULL);
beam_send_cleanup(beam);
}
ap_assert(H2_BPROXY_LIST_EMPTY(&beam->proxies));
Stefan