[Buildbot] #3639: Crash when querying last finished build
Buildbot trac
trac at buildbot.net
Sun Oct 30 11:28:12 UTC 2016
#3639: Crash when querying last finished build
---------------------+-----------------------
Reporter: kayhayen | Owner:
Type: defect | Status: new
Priority: major | Milestone: undecided
Version: 0.9.0 | Keywords:
---------------------+-----------------------
the called function, builder.builder_status.getLastFinishedBuild() crashes
like this:
{{{
2016-10-30 12:20:51+0100 [Broker,0,192.168.1.28] prioritizing builders;
order unspecified
Traceback (most recent call last):
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/buildbot/process/buildrequestdistributor.py", line 376, in
resetPendingBuildersList
list(existing_pending | new_builders))
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/twisted/internet/defer.py", line 1406, in unwindGenerator
return _inlineCallbacks(None, gen, Deferred())
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/twisted/internet/defer.py", line 1260, in _inlineCallbacks
result = g.send(result)
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/buildbot/process/buildrequestdistributor.py", line 439, in
_sortBuilders
builders = yield defer.maybeDeferred(lambda:
--- <exception caught here> ---
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/twisted/internet/defer.py", line 149, in maybeDeferred
result = f(*args, **kw)
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/buildbot/process/buildrequestdistributor.py", line 440, in
<lambda>
sorter(self.master, builders))
File "/home/nuitka-buildmaster/master/master.cfg", line 1125, in
prioritizeBuilders
builders.sort(key = decidePriority)
File "/home/nuitka-buildmaster/master/master.cfg", line 1095, in
decidePriority
if builder.builder_status.getLastFinishedBuild() is not None
and \
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/buildbot/status/builder.py", line 152, in getLastFinishedBuild
b = self.getBuild(-1)
File "/home/nuitka-buildmaster/sandbox/local/lib/python2.7/site-
packages/buildbot/status/builder.py", line 184, in getBuild
number = self.nextBuildNumber + number
exceptions.AttributeError: BuilderStatus instance has no attribute
'nextBuildNumber'
}}}
I have not looked into this, but this might be an indication that it was
never run so far. Looking at the source, I didn't see "nextBuildNumber" in
that class, I assume derived classes control it?
What I am trying to achieve and did in 0.8.x was to prioritize failed
builds higher, so they get built again first.
The code I use is like this:
{{{
from buildbot.process.results import SUCCESS
def prioritizeBuilders(_, builders):
def decidePriority(builder):
score = 0
# Prefer failed builds if all equal.
if builder.builder_status.getLastFinishedBuild() is not None and \
builder.builder_status.getLastFinishedBuild().getResults() !=
SUCCESS:
score += 1
# Prefer release builds by a lot.
if builder.name.startswith("rel-"):
if "stable" in builder.name:
score += 50
else:
score += 25
# Jessie and Wheezy are most important.
if "jessie" in builder.name:
score += 5
if "wheezy" in builder.name:
score += 4
if builder.name.startswith("site-"):
score += 100
# TODO: Change names of builds around, so this matches.
if "Py26" in builder.name:
score -= 1
if "Py32" in builder.name:
score -= 1
return score
builders.sort(key = decidePriority)
builders.reverse()
return builders
}}}
--
Ticket URL: <http://trac.buildbot.net/ticket/3639>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the bugs
mailing list