Always retry jobs on executor disconnect

If an executor disconnects cleanly or uncleanly it's highly unlikely
to be the fault of the job in question. Always retry the job without
incrementing the retry count.

Change-Id: I3cd18ca2a021f70665609e51247b2110cffcb71c
diff --git a/zuul/executor/client.py b/zuul/executor/client.py
index 67613f7..0f8d7d7 100644
--- a/zuul/executor/client.py
+++ b/zuul/executor/client.py
@@ -367,12 +367,15 @@
             if result is None:
                 result = data.get('result')
                 build.error_detail = data.get('error_detail')
-            if result is None or result == 'ABORTED':
+            if result is None:
                 if (build.build_set.getTries(build.job.name) >=
                     build.job.attempts):
                     result = 'RETRY_LIMIT'
                 else:
                     build.retry = True
+            if result in ('DISCONNECT', 'ABORTED'):
+                # Always retry if the executor just went away
+                build.retry = True
             result_data = data.get('data', {})
             self.log.info("Build %s complete, result %s" %
                           (job, result))
@@ -404,7 +407,7 @@
 
     def onDisconnect(self, job):
         self.log.info("Gearman job %s lost due to disconnect" % job)
-        self.onBuildCompleted(job)
+        self.onBuildCompleted(job, 'DISCONNECT')
 
     def onUnknownJob(self, job):
         self.log.info("Gearman job %s lost due to unknown handle" % job)