extras-buildsys/server ArchJob.py, 1.16.2.9, 1.16.2.9.4.1 Builder.py, 1.20.2.8, 1.20.2.8.4.1

Michael Schwendt (mschwendt) fedora-extras-commits at redhat.com
Thu Jan 31 14:19:44 UTC 2008


Author: mschwendt

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

Modified Files:
      Tag: Plague-0_4_5
	ArchJob.py Builder.py 
Log Message:
plague-0.4.4.1-filedownloader.patch 
plague-0.4.4.1-faster-downloads.patch 




Index: ArchJob.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/ArchJob.py,v
retrieving revision 1.16.2.9
retrieving revision 1.16.2.9.4.1
diff -u -r1.16.2.9 -r1.16.2.9.4.1
--- ArchJob.py	23 Feb 2006 19:14:49 -0000	1.16.2.9
+++ ArchJob.py	31 Jan 2008 14:19:44 -0000	1.16.2.9.4.1
@@ -196,8 +196,9 @@
                     dl_dict[DL_WAIT_TIME] = 0
                     self._downloads[uf] = dl_dict
 
-    def dl_callback(self, status, cb_data):
+    def dl_callback(self, status, cb_data, err_msg):
         url = cb_data
+        self.builder.fwd_dl_callback(self)
         self._download_lock.acquire()
         dl_dict = self._downloads[url]
         if status == 'done':
@@ -207,8 +208,8 @@
             if dl_dict[DL_RETRIES] >= 10:
                 dl_dict[DL_STATUS] = STATUS_ERROR
             else:
-                print "%s (%s/%s): Failed to retrieve %s (attempt %d), trying again..." % (self.par_job.uid,
-                        self.par_job.package, self._target_dict['arch'], url, dl_dict[DL_RETRIES])
+                print "%s (%s/%s): Failed to retrieve %s (attempt %d) (Error %s), trying again..." % (self.par_job.uid,
+                        self.par_job.package, self._target_dict['arch'], url, dl_dict[DL_RETRIES], err_msg)
                 dl_dict[DL_STATUS] = STATUS_WAITING
                 dl_dict[DL_WAIT_TIME] = 5  # Wait a bit before trying again
                 dl_dict[DL_RETRIES] = dl_dict[DL_RETRIES] + 1


Index: Builder.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Builder.py,v
retrieving revision 1.20.2.8
retrieving revision 1.20.2.8.4.1
diff -u -r1.20.2.8 -r1.20.2.8.4.1
--- Builder.py	19 Feb 2006 06:30:15 -0000	1.20.2.8
+++ Builder.py	31 Jan 2008 14:19:44 -0000	1.20.2.8.4.1
@@ -86,6 +86,9 @@
         self._when_died = 0
         self._server_cfg = cfg
 
+        self._archjob_dl_lock = threading.Lock()
+        self._archjob_dl_queue = []
+
         certs = {}
         if self._server_cfg.get_bool("Builders", "use_ssl"):
             certs['key_and_cert'] = self._server_cfg.get_str("SSL", "server_key_and_cert")
@@ -325,6 +328,11 @@
             EmailUtils.email_result(sender, addr, msg, subject)
         self._when_died = 0
 
+    def fwd_dl_callback(self,job):
+        self._archjob_dl_lock.acquire()
+        self._archjob_dl_queue.append(job)
+        self._archjob_dl_lock.release()
+    
     def run(self):
         DebugUtils.registerThreadName(self)
         while not self._stop:
@@ -356,7 +364,28 @@
 
             self._server_lock.release()
 
-            time.sleep(20)
+            last_time = time.time()
+            while (time.time() <= last_time+20):
+
+                # Process archjobs which had download callbacks,
+                # so next file download is started sooner.
+                self._archjob_dl_lock.acquire()
+                dl_jobs = self._archjob_dl_queue
+                self._archjob_dl_queue = []
+                self._archjob_dl_lock.release()
+                if len(dl_jobs):
+                    status_change = False
+                    self._server_lock.acquire()
+                    for j in dl_jobs:
+                        old_status = j.get_status()
+                        j.process()
+                        if old_status != j.get_status():
+                            status_change = True
+                    self._server_lock.release()
+                    if status_change:
+                        break
+
+                time.sleep(1)
     
     def available(self):
         """




More information about the fedora-extras-commits mailing list