extras-buildsys/builder builder.py,1.44.2.3,1.44.2.4

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Wed Nov 2 02:27:56 UTC 2005


Author: dcbw

Update of /cvs/fedora/extras-buildsys/builder
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8515/builder

Modified Files:
      Tag: STABLE_0_4
	builder.py 
Log Message:
2005-11-01  Dan Williams  <dcbw at redhat.com>

    * builder/builder.py
        - (dl_callback): retry failed downloads from the build
            server up to 3 times before failing the job




Index: builder.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/builder/builder.py,v
retrieving revision 1.44.2.3
retrieving revision 1.44.2.4
diff -u -r1.44.2.3 -r1.44.2.4
--- builder.py	1 Nov 2005 15:16:31 -0000	1.44.2.3
+++ builder.py	2 Nov 2005 02:27:54 -0000	1.44.2.4
@@ -91,6 +91,7 @@
         self._target_cfg = target_cfg
         self._builder_cfg = target_cfg.parent_cfg()
         self._srpm_url = srpm_url
+        self._srpm_tries = 0
         self._log_fd = None
         self._mock_config = None
         self._done_status = ''
@@ -167,11 +168,19 @@
             self._status = 'downloaded'
             self._log("Retrieved %s.\n" % url)
         elif dl_status == 'failed':
-            # Don't overwrite our status with 'failed' if we were cancelled
-            # and a download error ocurred
-            if not self.is_done_status():
+            # If job was cancelled, just return
+            if self.is_done_status():
+                return
+
+            # Retry up to 3 times
+            self._srpm_tries = self._srpm_tries + 1
+            if self._srpm_tries >= 3:
                 self._status = 'failed'
                 self._log("ERROR: Failed to retrieve %s.\n" % url)
+            else:
+                # retry the download
+                self._status = 'init'
+                self._log("ERROR: Failed to retrieve %s on attempt %d.  Trying again...\n" % (url, self._srpm_tries))
 
     def _copy_mock_output_to_log(self):
         if self._mock_log and os.path.exists(self._mock_log):
@@ -348,9 +357,9 @@
             self._start_cleanup()
 
     def _status_prepping(self):
+        # Mock shouldn't exit at all during the prepping stage, if it does
+        # something is wrong
         self._watch_mock('failed', 'failed')
-
-        # Check that mock didn't failed already
         if self._status != 'prepping':
                return
 




More information about the fedora-extras-commits mailing list