[Yum-devel] Something broken in downloading progress

Zdenek Pavlas zpavlas at redhat.com
Thu Aug 9 14:35:56 UTC 2012


> The (1/1) -> (8/8) is not supposed to be there, when using a custom
> download progress handler.

These files were downloaded in parallel.  repos.setProgressBar(obj) 
sets a *single* callback object with methods .start() .update() .end()
which is reused for all files.

This is incompatible with multi downloader, which needs >1 callback
objects to exist at the same time, so it must use different API.

This incompatibility is currently handled in multi downloader
as follows:

obj == None: no progress display in multi downloader
obj != None: ignore obj, use TextMultiFileMeter.

See BZ 831291.  This means multi progress is on-off only,
no custom progress meters.

> Is there something else there need to be set other than
> YumBase.repos.setProgressBar( dnlcb ) to use a custom download
> callback handler ?

No, multi downloader can't reasonably call a progress object,
which assumes a single file is downloaded at once.

The most clean solution I can think of ATM is to add an attribute 
.multi to the custom single-file progress object 'dnlcb'.
When multi-downloading, we'd use this instead of TextMultiFileMeter.

But You have to implement 2 different APIs, anyway.


More information about the Yum-devel mailing list