test_builder.py / test_abort is failing on buildbot, but not locally
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
High
|
Julian Edwards |
Bug Description
Error in test lp.buildmaster.
Traceback (most recent call last):
_StringException: Text attachment: traceback
------------
Traceback (most recent call last):
File "/srv/buildbot/
return fn(*args)
File "/srv/buildbot/
testMethod()
File "/srv/buildbot/
result = slave.abort()
File "/srv/buildbot/
return self._server.
File "/usr/lib/
return self.__
File "/usr/lib/
verbose=
File "/usr/lib/
return self._parse_
File "/usr/lib/
return u.close()
File "/usr/lib/
raise Fault(*
Fault: <Fault 8002: 'error'>
------------
Text attachment: xmlrpc-log-file
------------
2010-10-06 03:08:54+0530 [-] Log opened.
2010-10-06 03:08:54+0530 [-] twistd 10.1.0 (/usr/bin/python 2.5.2) starting up.
2010-10-06 03:08:54+0530 [-] reactor class: twisted.
2010-10-06 03:08:54+0530 [-] twisted.
2010-10-06 03:08:54+0530 [-] Starting factory <twisted.
2010-10-06 03:08:54+0530 [-] daemon ready!
2010-10-06 03:08:54+0530 [HTTPChannel,
2010-10-06 03:08:54+0530 [HTTPChannel,
2010-10-06 03:08:54+0530 [-] Build log: Forking build subprocess...
2010-10-06 03:08:54+0530 [HTTPChannel,
Traceback (most recent call last):
File "/srv/buildbot/
self.
File "/srv/buildbot/
body = resrc.render(self)
File "/srv/buildbot/
return m(request)
File "/srv/buildbot/
d = defer.maybeDefe
--- <exception caught here> ---
File "/srv/buildbot/
result = f(*args, **kw)
File "/srv/buildbot/
self.
File "/srv/buildbot/
self.
File "/srv/buildbot/
self.
File "/srv/buildbot/
raise ProcessExitedAl
twisted.
2010-10-06 03:08:54+0530 [HTTPChannel,
2010-10-06 03:08:54+0530 [-] Iterating with success flag 0 against stage INIT
2010-10-06 03:08:54+0530 [-] Build log: RUN: /var/tmp/
2010-10-06 03:08:54+0530 [-] Build log: Upon execvpe /var/tmp/
2010-10-06 03:08:54+0530 [-] :Traceback (most recent call last):
2010-10-06 03:08:54+0530 [-] File "/srv/buildbot/
2010-10-06 03:08:54+0530 [-] executable, args, environment)
2010-10-06 03:08:54+0530 [-] File "/srv/buildbot/
2010-10-06 03:08:54+0530 [-] os.execvpe(
2010-10-06 03:08:54+0530 [-] File "/usr/lib/
2010-10-06 03:08:54+0530 [-] _execvpe(file, args, env)
2010-10-06 03:08:54+0530 [-] File "/usr/lib/
2010-10-06 03:08:54+0530 [-] func(file, *argrest)
2010-10-06 03:08:54+0530 [-] OSError: [Errno 2] No such file or directory
2010-10-06 03:08:54+0530 [-] Iterating with success flag 1 against stage UNPACK
2010-10-06 03:08:54+0530 [-] Build log: RUN: /var/tmp/
2010-10-06 03:08:54+0530 [-] Received SIGTERM, shutting down.
2010-10-06 03:08:54+0530 [-] Build log: Upon execvpe /var/tmp/
2010-10-06 03:08:54+0530 [-] :Traceback (most recent call last):
------------
Changed in soyuz: | |
status: | New → Triaged |
importance: | Undecided → High |
tags: | added: tech-debt |
Changed in soyuz: | |
status: | Fix Committed → Fix Released |
From #launchpad-dev,
<bigjools> jml: can you look at the prod_lp buildbot output, the test_abort that we added is failing. I'm going to disable it as I don't think there's a quick fix but you might see differently. xited and also deal with trying to abort something that's not started xited exception xited: pass # yay less work for me
<jml> bigjools: at a first glance it looks like a race: a bug in the slave maybe
<bigjools> jml: we're not waiting for the build to start before trying to kill it
<wgrant> The issue is more that you're waiting too long, so the test config crashes.
<jml> in either case, bug in the slave
<jml> it's a server, it should handle people asking it to do things
<bigjools> yes
<bigjools> as I discussed with wgrant above, we need to catch that ProcessAlreadyE
<jml> yeah, that sounds about right
<wgrant> Or just fix the test config to sleep a lot.
<bigjools> no :)
<wgrant> The problem is that it gets too far. Not that it doesn't get far enough.
<wgrant> Adding sleeps won't delay the test suite.
<jml> wgrant: even so, the slave should catch the ProcessAlreadyE
<wgrant> jml: Indeed. It happens a bit locally.
<wgrant> But blah twisted blah confusing.
<jml> not at all.
<jml> try: kill_process(); except ProcessAlreadyE
<bigjools> I wonder if in this case it should not be raising exceptions here, the vast majority of use cases don't care if it's already exited.
<bigjools> a return value would be sufficient if you need to know
<jml> bigjools: I don't know the use case here, but lots of similar code just swallows the exception
<jml> bigjools: it's not so much "kill the process" as "ensure that it's dead"
<bigjools> jml: yes - that points to a flaw in the API IMO
<jml> bigjools: file a ticket on Twisted if you'd like
<bigjools> mebbe
<wgrant> jml: OK then, "but blah twisted blah confusing blah slave blah untested."