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.