Make sure we always request that the task master shutdown cleanly.
Make sure we always request that the task master shutdown cleanly.
1.1 --- a/ambuild2/task.py Tue Nov 12 02:22:57 2013 -0800
1.2 +++ b/ambuild2/task.py Tue Nov 12 02:33:12 2013 -0800
1.3 @@ -253,10 +253,10 @@
1.4
1.5 def receiveStop(self, channel, message):
1.6 if not message['ok']:
1.7 - self.buildFailed()
1.8 + self.terminateBuild()
1.9 self.close_idle()
1.10
1.11 - def buildFailed(self):
1.12 + def terminateBuild(self):
1.13 if self.build_failed:
1.14 return
1.15
1.16 @@ -277,7 +277,7 @@
1.17 'status': 'failed',
1.18 })
1.19 self.procman.close(child)
1.20 - self.buildFailed()
1.21 + self.terminateBuild()
1.22 return
1.23
1.24 task_id = message['task_id']
1.25 @@ -356,7 +356,7 @@
1.26 'status': 'crashed',
1.27 'task_id': task.id,
1.28 })
1.29 - self.buildFailed()
1.30 + self.terminateBuild()
1.31
1.32 def onWorkerDied(self, child, error):
1.33 if error != Error.NormalShutdown:
1.34 @@ -462,12 +462,13 @@
1.35 self.terminateBuild()
1.36
1.37 def terminateBuild(self):
1.38 - if not self.build_failed:
1.39 - self.build_failed = True
1.40 - self.taskMaster.send({
1.41 - 'id': 'stop',
1.42 - 'ok': False
1.43 - })
1.44 + if self.build_failed:
1.45 + return
1.46 + self.build_failed = True
1.47 + self.taskMaster.send({
1.48 + 'id': 'stop',
1.49 + 'ok': False
1.50 + })
1.51
1.52 def receiveSpawned(self, message):
1.53 util.con_out(
1.54 @@ -490,7 +491,10 @@
1.55 elif message['status'] == 'failed':
1.56 self.terminateBuild()
1.57 else:
1.58 - self.cx.procman.close(child)
1.59 + self.taskMaster.send({
1.60 + 'id': 'stop',
1.61 + 'ok': True
1.62 + })
1.63
1.64 def run(self):
1.65 self.cx.messagePump.pump()