]> git.ipfire.org Git - thirdparty/squid.git/commit - src/cache_cf.cc
Author: Mark Nottingham <mnot@pobox.com>
authorAmos Jeffries <squid3@treenet.co.nz>
Thu, 17 Jul 2008 12:38:06 +0000 (00:38 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Thu, 17 Jul 2008 12:38:06 +0000 (00:38 +1200)
commit32a47e3eefac17ab6d209a357d0f77c2ef452580
treef3d2f888d492dd1fa913b679bad7c78293a73ab7
parent626a988975458b253ab188e346f0176d83111316
Author: Mark Nottingham <mnot@pobox.com>
Bug #2376: Round-Robin becomes unbalanced when a peer dies and comes back

When a peer goes down and then comes back, its round-robin counters aren't
reset, causing it to get a disproportionate amount of traffic until it "catches
up" with the rest of the peers in the round-robin pool.

If it was down for load-related issues, this has the effect of making it more
likely that it will go down again, because it's temporarily handling the load
of the entire pool.

Normally, this isn't a concern, because the number of requests that it can get
out-of-step is relatively small (bounded to how many requests it can be given
before it is considered down -- is this 10 in all cases, or are there corner
cases?), but in an accelerator case where the origin has a process-based
request-handling model, or back-end processes are CPU-intensive, it is.

This patch resets the counters each time a peer changes state.
src/cache_cf.cc
src/neighbors.cc
src/protos.h
src/structs.h