[Buildbot-devel] console does not match waterfall for older builds (0.7.12 + CSS fix; SVN)
Charles Lepple
clepple at gmail.com
Mon Feb 8 03:54:51 UTC 2010
On Sun, Feb 7, 2010 at 10:48 PM, Nicolas Sylvain <nsylvain at chromium.org> wrote:
>
>
> On Sun, Feb 7, 2010 at 7:33 PM, Charles Lepple <clepple at gmail.com> wrote:
>>
>> On Sun, Feb 7, 2010 at 8:48 PM, Nicolas Sylvain <nsylvain at chromium.org>
>> wrote:
>> > For some reasons the console does not look before build 85 for the
>> > FreeBSD
>> > build. So it thinks
>> > it saw r2317 first in build 85, so it attributes the failures in b85 to
>> > that
>> > revisions as well. (while it fact it should have seen it first in build
>> > 83).
>> > The problem also seem to happen for the other builders.
>> > By looking at the debug log at the bottom, it looks like it is using
>> > only 10
>> > builds results to build the whole console, which is
>> > clearly not enough. (and not expected)
>> > If you are familiar with python and want to debug, I would look
>> > into getBuildsForRevision in buildbot/status/web/console.py
>> > In theory this function is supposed to return an array of all the builds
>> > needed to compute the console for a given builder. You
>> > can watch for calls to this function with "builderName" =
>> > "FreeBSD-i686",
>> > and then you can add output to see what's going on
>> > in the while.
>> > This function is supposed to look at 40 builds maximum, but it seems to
>> > stop
>> > early. There are 2 reasons:
>> > 1. Maybe the self.comparator.isRevisionEarlier function is failing.
>> > Maybe
>> > it's returning true when it should
>> > not. I would try adding some prints there.
>> > 2. getPreviousBuild() return None. This is outside the scope of the
>> > console, but I doubt this is it.
>> > My bet so far is that isRevisionEarlier is not called correctly. I
>> > thought
>> > we fixed that though.
>> > Can you replace :
>> >
>> > # Now break if we have enough builds.
>> >
>> > current_revision = self.getChangeForBuild(
>> >
>> > builder.getBuild(-1), revision)
>> >
>> > if self.comparator.isRevisionEarlier(
>> >
>> > devBuild, current_revision):
>> >
>> > break
>> >
>> >
>> >
>> >
>> > by:
>> >
>> >
>> > # Now break if we have enough builds.
>> >
>> > if int(got_rev) < int(revision):
>> >
>> > break
>> >
>> >
>> > And try again. Maybe it will work. (you need to restart the master).
>>
>> That seems to have fixed it. The logs are all in the right place, as well:
>
> Great, thanks!
> I also tried on my master (who seemed to have started to act badly today
> too), and it also worked.
> +aviv: In case you know what the real fix should be.
Nicolas,
thanks for the quick patch! I am open to testing other fixes,
especially if they only affect console.py.
--
- Charles Lepple
More information about the devel
mailing list