diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-03-10 22:02:19 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-03-10 22:02:19 -0800 |
commit | 9411ac7406c6e775998bf6055ca8f022acce9e25 (patch) | |
tree | 3f3ce2da2f612a389d8855ce3f50bb274d4b5ecb /pym/_emerge/MetadataRegen.py | |
parent | 33946e6594e16d1c8ff493cf71b8587878ec7b29 (diff) | |
download | portage-9411ac7406c6e775998bf6055ca8f022acce9e25.tar.gz portage-9411ac7406c6e775998bf6055ca8f022acce9e25.tar.bz2 portage-9411ac7406c6e775998bf6055ca8f022acce9e25.zip |
PollScheduler: tweek termination logic
* PollScheduler and all subclasses now use the _terminated_tasks
variable to check whether or not _terminate_tasks() has been called,
and behave appropriately in that case.
* The _schedule_tasks() method now has documentation about the
relationship with _terminate_tasks() and _terminated_tasks.
Diffstat (limited to 'pym/_emerge/MetadataRegen.py')
-rw-r--r-- | pym/_emerge/MetadataRegen.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/pym/_emerge/MetadataRegen.py b/pym/_emerge/MetadataRegen.py index 45c4f4d29..810317533 100644 --- a/pym/_emerge/MetadataRegen.py +++ b/pym/_emerge/MetadataRegen.py @@ -44,7 +44,7 @@ class MetadataRegen(PollScheduler): portage.writemsg_stdout("Regenerating cache entries...\n") every_cp.sort(reverse=True) try: - while not self._terminated.is_set(): + while not self._terminated_tasks: yield every_cp.pop() except IndexError: pass @@ -56,13 +56,13 @@ class MetadataRegen(PollScheduler): consumer = self._consumer for cp in self._cp_iter: - if self._terminated.is_set(): + if self._terminated_tasks: break cp_set.add(cp) portage.writemsg_stdout("Processing %s\n" % cp) cpv_list = portdb.cp_list(cp) for cpv in cpv_list: - if self._terminated.is_set(): + if self._terminated_tasks: break valid_pkgs.add(cpv) ebuild_path, repo_path = portdb.findname2(cpv) @@ -94,7 +94,7 @@ class MetadataRegen(PollScheduler): while self._jobs: self._poll_loop() - if self._terminated.is_set(): + if self._terminated_tasks: self.returncode = 1 return @@ -145,9 +145,10 @@ class MetadataRegen(PollScheduler): @returns: True if there may be remaining tasks to schedule, False otherwise. """ + if self._terminated_tasks: + return False + while self._can_add_job(): - if self._terminated.is_set(): - return False try: metadata_process = next(self._process_iter) except StopIteration: @@ -167,7 +168,7 @@ class MetadataRegen(PollScheduler): self.returncode = 1 self._error_count += 1 self._valid_pkgs.discard(metadata_process.cpv) - if not self._terminated.is_set(): + if not self._terminated_tasks: portage.writemsg("Error processing %s, continuing...\n" % \ (metadata_process.cpv,), noiselevel=-1) |