[Buildbot-devel] Waterfall Reload Issue in Firefox
Brian Warner
warner at lothar.com
Sat Apr 14 01:43:15 UTC 2007
>>> On 3/28/07, Oz <oz at santacruzgames.com> wrote:
>>>> >> Here's a minor issue with the Waterfall that is quite annoying. If
>>>> >> you fetch one project's waterfall (say for buildbot master instance
>>>> >> A) and then fetch another project's waterfall (say for buildbot
>>>> >> master instance B), then A's waterfall will continue to render (with
>>>> >> B's URL in the address bar) until you reload B a second time.
>>
>>The URLs are:
>> - http://myserver/build/projectA/
>> - http://myserver/build/projectB/
>>
>>They are mapped to unique ports via Apache's httpd.conf:
>>
>>ProxyPass /build/projectA/ http://myserver:7010/
>>ProxyPassReverse /build/projectA/ http://myserver:7010/
>>
>>ProxyPass /build/projectB/ http://myserver:7011/
>>ProxyPassReverse /build/projectB/ http://myserver:7011/
The apache-bug theory sounds more likely to me. I imagine something like the
following:
1) your browser aims at 'myserver', connects to Apache, sends /build/projectA
2) Apache looks up the URL in httpd.conf, sees :7010, creates an HTTP
connection to 7010, sends the remainder of the URL (probably "/") to
buildmasterA. Once the setup is accomplished, Apache may just stop paying
attention to the bytes it is relaying back and forth, and becomes a
dumb proxy.
3) your browser keeps the connection open for a little while, in case you
request more resources from the same server (which it indexes by
hostname+port)
4) you point your browser at /build/projectB . The browser says "hey! I
already have a connection to 'myserver', I'll just use that one". It
sends the new GET request down the same wire.
5) Apache sees the GET go by, remembers enough to strip the prefix from it,
but fails to notice that the prefix it stripped no longer matches the one
that triggered the proxy. The GET is passed along the same connection
from before, resulting in buildmasterA getting the response instead of
buildmasterB.
With keepalives turned off, there will be a separate HTTP connection for each
resource, and apache won't have the opportunity to fail to notice the new
prefix. The difference between firefox and IE may be that IE isn't re-using
the connection by default (whereas you have to set no-keepalives to get
firefox to do the same).
interesting one! :)
cheers,
-Brian
More information about the devel
mailing list