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