Smart hangs forever when trying to install package as regular user
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Smart Package Manager |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Smart 1.2 hangs forever when trying to install package as regular user:
-------
[unity@cml ~]$ smart install DoAsRoot
Loading cache...
Updating cache... #######
Computing transaction...
Installing packages (1):
DoAsRoot-
3.2kB of package files are needed. 1.3kB will be used.
Confirm changes? (Y/n):
Fetching packages...
-------
Similar behaviour in Smart GUI.
This is caused by bug in PyCurlHandler.
When tick() method finds out that it has not enough permissions to create file, it just sets the failure info but leaves the handle in handler's active downloads list - this causes the method to return True, meaning there are still active or queued downloads.
But the download is removed from waiting downloads queue before trying to create file and never makes it to pycurl multi queue.
The result is, the download is in twilight zone - not in waiting queue and also not in pycurl multi queue.
tick() then keeps returning True forever and the handler is never removed from active handlers list by Fetcher.run() method.
See attached patch for fix.
Changed in smart: | |
milestone: | none → 1.3.1 |
status: | New → Confirmed |
Changed in smart: | |
status: | Confirmed → Fix Committed |
Changed in smart: | |
status: | Fix Committed → Fix Released |