[Yum-devel] [PATCH] Start meters immediately. BZ 831904

Zdeněk Pavlas zpavlas at redhat.com
Thu Jun 14 07:09:19 UTC 2012


URLgrabber has traditionally delayed starting of meters to first
update, and .update() && .end() need started meters.  Instead of
having to check this every time, start meters immediately.

This simplifies the update path.  Removed one more IF because
downloader sends update messages only if progress_obj was set.
---
 urlgrabber/grabber.py |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index 073d41d..4af663f 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -2047,12 +2047,7 @@ class _ExternalDownloader:
             line = line.split(' ', 5)
             _id, size = map(int, line[:2])
             if len(line) == 2:
-                opts = self.running[_id]
-                m = opts.progress_obj
-                if m:
-                    if not m.last_update_time:
-                        m.start(text = opts.text)
-                    m.update(size)
+                self.running[_id].progress_obj.update(size)
                 continue
             # job done
             opts = self.running.pop(_id)
@@ -2142,7 +2137,11 @@ def parallel_wait(meter = 'text'):
         key, limit = opts.async
         host_con[key] = host_con.get(key, 0) + 1
         opts.tries = tries
-        opts.progress_obj = meter and meter.newMeter()
+        if meter:
+            opts.progress_obj = meter.newMeter()
+            opts.progress_obj.start(text=opts.text, basename=os.path.basename(opts.filename))
+        else:
+            opts.progress_obj = None
         if DEBUG: DEBUG.info('attempt %i/%s: %s', opts.tries, opts.retry, opts.url)
         dl.start(opts)
 
@@ -2152,7 +2151,6 @@ def parallel_wait(meter = 'text'):
             host_con[key] -= 1
             if meter:
                 m = opts.progress_obj
-                m.basename = os.path.basename(opts.filename)
                 if ug_err:
                     m.failure(ug_err.args[1])
                 else:
-- 
1.7.4.4



More information about the Yum-devel mailing list