Rbtree in ngx_http_upstream_fair_module.c

hi…

Just wanted to ensure my understanding of rbtree usage in Grzegorz
Nosek’s
upstream fair load balancer is correct. I believe the rbtree is
necessary
because when nginx.conf is reloaded workers may continue to reference
upstream server metadata from earlier versions aka generations of the
nginx.conf file. The rbtree stores the metadata until none of the
workers
reference it. The extra complexity is needed because this load balancer
tracks server load across requests and nginx.conf reloads. Does this
seem
accurate? If so, is this currently considered a recommended way to
handle
this situation?

thanks

Posted at Nginx Forum:

I think i underatand a bit better now. The tree is storing metadata for
potentially multiple upstream groups per generation. It seems like a
reasonable implementation given the expected short duration of threads
referencing data from older generations (hence a shallow tree) and the
fact
there is only one read from the tree per request. Anyway… i asked the
question so i’ll fill in what i find out. I may well have missed
something…
any help appreciated.

Posted at Nginx Forum: