Bug 1136765 - do not disconnect a slave if it's not connected. r=bhearsum
authorMassimo Gervasini <mgervasini@mozilla.com>
Thu, 16 Apr 2015 15:58:41 +0200 (2015-04-16)
changeset 4191 785722efec9b5cdf7d7fa56b84cf55415a390062
parent 4189 466c5a5a791cbc591318a9dd76c82bb1a8fc5891
child 4192 5f432d15a45b33ca30d55dc39c7a4f2cf7965a41
child 4195 b63222955c94f20472a11a4b7d1cf9567f627cb1
push id3495
push usermgervasini@mozilla.com
push dateThu, 16 Apr 2015 14:03:26 +0000 (2015-04-16)
reviewersbhearsum
bugs1136765
Bug 1136765 - do not disconnect a slave if it's not connected. r=bhearsum
steps/misc.py
--- a/steps/misc.py
+++ b/steps/misc.py
@@ -478,31 +478,36 @@ class DisconnectStep(ShellCommand):
         # Called when the slave command is interrupted, e.g. by rebooting
         # We assume this is expected
         self._disconnected = True
         return self.finished(SUCCESS)
 
     def start(self):
         # If a graceful shutdown was requested it doesn't make sense to reboot
         # the slave - so let's not do anything!
+        if self.build.slavebuilder.slave is None:
+            # bug 1136765 - The slave isn't connected and there's no benefit
+            # from trying to disconnect it.
+            return SKIPPED
+
         if self.build.slavebuilder.slave.slave_status.getGraceful():
             return SKIPPED
-        else:
-            # Give the machine 60 seconds to go away on its own
-            def die():
-                self._deferred_death = None
-                log.msg("Forcibly disconnecting %s" % self.getSlaveName())
-                self.buildslave.disconnect()
-                try:
-                    # Try to close the socket too
-                    self.buildslave.slave.broker.transport._closeSocket()
-                except:
-                    log.err()
-            self._deferred_death = reactor.callLater(60, die)
-            return self.super_class.start(self)
+
+        # Give the machine 60 seconds to go away on its own
+        def die():
+            self._deferred_death = None
+            log.msg("Forcibly disconnecting %s" % self.getSlaveName())
+            self.buildslave.disconnect()
+            try:
+                # Try to close the socket too
+                self.buildslave.slave.broker.transport._closeSocket()
+            except:
+                log.err()
+        self._deferred_death = reactor.callLater(60, die)
+        return self.super_class.start(self)
 
     def checkDisconnect(self, f):
         # This is called if there's a problem executing the command because the connection was disconnected.
         # Again, we assume this is the expected behaviour
         f.trap(PBConnectionLost)
         self._disconnected = True
         return self.finished(SUCCESS)