extras-buildsys/server Builder.py,1.36,1.37

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Tue May 9 02:57:14 UTC 2006


Author: dcbw

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

Modified Files:
	Builder.py 
Log Message:
2006-05-08  Dan Williams  <dcbw at redhat.com>

    * builder/Builder.py
        - pylint cleanups
        - make SRPM downloads and uploads work

    * builder/BuilderMock.py
        - pyling cleanups
        - remove log()
        - make download and upload work

    * server/Builder.py
        - Don't send multiple UnlockRepo commands
        - Actually let archjobs have some processing time




Index: Builder.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Builder.py,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- Builder.py	5 May 2006 02:10:39 -0000	1.36
+++ Builder.py	9 May 2006 02:57:12 -0000	1.37
@@ -192,7 +192,7 @@
             try:
                 job = self._jobs[uniqid]
                 job.set_builder_job_status(status)
-#                reported_uniqids.append(uniqid)
+                reported_uniqids.append(uniqid)
             except KeyError:
                 pass
 
@@ -523,9 +523,16 @@
         """Called by an archjob to request the sending of a RepoUnlocked
         command to the builder for a particular archjob."""
 
-        cmd = Commands.PlgCommandUnlockRepo(uniqid, self._seq_gen.next())
         self._lock.acquire()
-        self._cmd_queue.append(cmd)
+        found = False
+        for cmd in self._cmd_queue:
+            if isinstance(cmd, Commands.PlgCommandUnlockRepo):
+                if cmd.archjob_id() == uniqid:
+                    found = True
+                    break
+        if not found:
+            cmd = Commands.PlgCommandUnlockRepo(uniqid, self._seq_gen.next())
+            self._cmd_queue.append(cmd)
         self._lock.release()
 
     def request_job_files(self, archjob):
@@ -581,6 +588,12 @@
         # Copy command queue
         self._cmd_queue = self._cmd_queue + new_cmds
         cmd_list = self._cmd_queue[:]
+        # Remove commands that don't require an ack
+        tmp_cmd_queue = []
+        for cmd in self._cmd_queue:
+            if cmd.need_ack():
+                tmp_cmd_queue.append(cmd)
+        self._cmd_queue = tmp_cmd_queue
         self._lock.release()
         return cmd_list
 
@@ -596,13 +609,19 @@
                 time.sleep(self._SLEEP_INTERVAL)
                 continue
 
+            process_jobs = True
             self._lock.acquire()
             if self._unavail_count > 2:
                 self._handle_builder_suspend(SUSPEND_TIMEOUT, "the builder timed out")
+                process_jobs = False
             elif self._last_contact + self._REQUIRED_CONTACT_INTERVAL < time.time():
                 self._unavail_count = self._unavail_count + 1
             self._lock.release()
 
+            if process_jobs:
+                for j in self._jobs.values():
+                    j.process()
+
             time.sleep(self._SLEEP_INTERVAL)
 
     def _handle_builder_suspend(self, reason, msg):




More information about the fedora-extras-commits mailing list