--- yum/repos.py | 9 +++++++++ yum/yumRepo.py | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/yum/repos.py b/yum/repos.py index 3793bad..8162da2 100644 --- a/yum/repos.py +++ b/yum/repos.py @@ -22,6 +22,7 @@ import misc import Errors from packageSack import MetaSack +import urlgrabber.grabber from weakref import proxy as weakref @@ -288,6 +289,14 @@ class RepoStorage: else: data = [ mdtype ] + if hasattr(urlgrabber.grabber, 'parallel_wait'): + # download all metadata in parallel + for repo in myrepos: + if repo.async: + sack = repo.getPackageSack() + sack.pre_populate(repo, data) + urlgrabber.grabber.parallel_wait() + for repo in myrepos: sack = repo.getPackageSack() try: diff --git a/yum/yumRepo.py b/yum/yumRepo.py index 0f0750e..053c1c3 100644 --- a/yum/yumRepo.py +++ b/yum/yumRepo.py @@ -124,6 +124,25 @@ class YumPackageSack(packageSack.PackageSack): # umm, wtf? pass + def pre_populate(self, repo, data): + """ Just schedule the metadata downloads """ + + for item in data: + if item in self.added.get(repo, []): + continue + if item == 'metadata': + mydbtype = 'primary_db' + elif item == 'filelists': + mydbtype = 'filelists_db' + elif item == 'otherdata': + mydbtype = 'other_db' + else: + continue + + if self._check_db_version(repo, mydbtype): + if not self._check_uncompressed_db(repo, mydbtype): + repo._retrieveMD(mydbtype, async=True, failfunc=None) + def populate(self, repo, mdtype='metadata', callback=None, cacheonly=0): if mdtype == 'all': data = ['metadata', 'filelists', 'otherdata'] -- 1.7.4.4 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel