[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