httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Ruggeri <>
Subject Re: Proxy balancer providers and aging
Date Fri, 26 Jun 2015 00:41:20 GMT
On 6/24/2015 3:12 PM, Jim Jagielski wrote:
> All LBmethods have an "age" function which is designed to appropriately
> "age" the data so that things even out after awhile. Of course, right
> now, none actually *uses* that.

I had never realized this function exists... what triggers it? ... or
are you saying that today nothing triggers it because of the next sentence?

> But I think the reason is because there is no real good way,
> currently, in mod_proxy to do that...
> Well, in the LBmethod I was hacking away on, it really DOES need
> its age function, and currently it's doing so via mod_watchdog.
> But the more I think of it, ideally, mod_proxy *itself* should
> create the watchdog thread and just handle the age itself, rather
> than having a LBmethod provider having to be responsible for
> creating that (it also kind of destroys the abstraction that pure
> providers should have, imo)...

Yup - if there is some sort of contract between mod_proxy such that each
balancer ought to be able to "age" its data, mod_proxy should provide
the facilities to call that age function on some interval. However,
looking at the age function signature in the existing balancers, I'm
seeing a conspicuous lack of a time delta since the last call to age().
It seems to me that if mod_proxy is responsible for the 'tick' it should
also be responsible for providing a time delta so the lbmethod can age
the data proportionally to the time since last tick.

(or, maybe I'm missing it altogether and the module should be managing
this itself which kinda puts us back to the beginning of which module
should be responsible for this stuff)

> Anyway... anyone opposed to me adding this to mod_proxy in
> trunk with hope towards it backporting to 2.4? It does mean
> that mod_proxy will now have a dependency on mod_watchdog.

I'm conflicted. This is useful functionality but would break existing
configurations using 2.4 in an unexpected way. I remember dealing with
lots of questions about "why is this slotmem thing needed all of a
sudden" when moving from 2.2 to 2.4.

I think that if I were to be forced to work through the cognitive
dissonance I'd be +1 for adding this to trunk but -1 for 2.4 unless we
can find a way to avoid the dependency unless the lbmethod really needs
it (I don't see how, but please do enlighten me if this is possible).

Daniel Ruggeri

View raw message