On Mon, Apr 16, 2018 at 8:45 AM, Ruediger Pluem <rpl...@apache.org> wrote:
>
> On 04/14/2018 02:32 AM, Yann Ylavic wrote:
>>
>> IOW, this simple patch would work equally for me (and could go in any 
>> version):
>>
>> Index: util-misc/apr_reslist.c
>> ===================================================================
>> --- util-misc/apr_reslist.c    (revision 1829106)
>> +++ util-misc/apr_reslist.c    (working copy)
>> @@ -61,13 +61,13 @@ struct apr_reslist_t {
>>  };
>>
>>  /**
>> - * Grab a resource from the front of the resource list.
>> + * Grab a resource from the back of the resource list.
>>   * Assumes: that the reslist is locked.
>>   */
>>  static apr_res_t *pop_resource(apr_reslist_t *reslist)
>>  {
>>      apr_res_t *res;
>> -    res = APR_RING_FIRST(&reslist->avail_list);
>> +    res = APR_RING_LAST(&reslist->avail_list);
>>      APR_RING_REMOVE(res, link);
>>      reslist->nidle--;
>>      return res;
>> --
>
> Hm, but this would change this to become a fifo list instead of the current 
> lifo list or do I miss something?

Yes clearly, I suggested that reslists be changed to FIFO
unconditionnaly, because I find that LIFO and expiry don't mix well
w.r.t. starvation..

That would be the simpler patch too (not that
apr_reslist_acquire_fifo() is hard to implement, but I wonder who
needs LIFO in the firtst place with such a structure...).


Regards,
Yann.

Reply via email to