Ticket #737 (closed defect: fixed)
Stale slave connection breaks reconfig
| Reported by: | catlee | Owned by: | catlee |
|---|---|---|---|
| Priority: | major | Milestone: | 0.8.0 |
| Version: | master | Keywords: | |
| Cc: |
Description
If one of the slaves has a stale connection, then a reconfig will break because of the exception raised.
dl = [s.updateSlave() for s in self.slaves.values()]
File "/tools/buildbot-catlee/buildbot/buildbot/buildslave.py", line 141, in updateSlave
return self.sendBuilderList()
File "/tools/buildbot-catlee/buildbot/buildbot/buildslave.py", line 428, in sendBuilderList
d = AbstractBuildSlave.sendBuilderList(self)
File "/tools/buildbot-catlee/buildbot/buildbot/buildslave.py", line 329, in sendBuilderList
d = self.slave.callRemote("setBuilderList", blist)
File "/tools/buildbot-catlee/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-i686.egg/twisted/spread/pb.py", line 331, in callRemote
_name, args, kw)
File "/tools/buildbot-catlee/lib/python2.6/site-packages/Twisted-9.0.0-py2.6-linux-i686.egg/twisted/spread/pb.py", line 810, in _sendMessage
raise DeadReferenceError("Calling Stale Broker")
twisted.spread.pb.DeadReferenceError: Calling Stale Broker
Not sure what the best way to handle this is. Would something like this be appropriate?
diff --git a/buildbot/master.py b/buildbot/master.py
index fe7ba1b..c67e95e 100644
--- a/buildbot/master.py
+++ b/buildbot/master.py
@@ -244,7 +244,11 @@ class BotMaster(service.MultiService):
def _updateAllSlaves(self):
"""Notify all buildslaves about changes in their Builders."""
- dl = [s.updateSlave() for s in self.slaves.values()]
+ dl = []
+ for s in self.slaves.values():
+ d = s.updateSlave()
+ d.addErrback(log.err)
+ dl.append(d)
return defer.DeferredList(dl)
def shouldMergeRequests(self, builder, req1, req2):
Change History
Note: See
TracTickets for help on using
tickets.
![[Buildbot Logo]](/chrome/site/header-text-transparent.png)
That looks correct to me.