Bug 1756105

Summary: "Restart & Install" restarts but silently fails to install due to TypeError in /usr/lib/python3.7/site-packages/dnf-plugins/system_upgrade.py
Product: [Fedora] Fedora Reporter: Stephan Bergmann <sbergman>
Component: dnf-plugins-extrasAssignee: rpm-software-management
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 31CC: awilliam, dmach, extras-orphan, gnome-sig, jkadlcik, jmracek, jrohel, klember, mblaha, mhatina, packaging-team-maint, pkratoch, rhughes, robatino, rpm-software-management, vmukhame
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-09-27 08:40:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1644939    

Description Stephan Bergmann 2019-09-26 19:05:49 UTC
Description of problem:
In Gnome Software, "Updates - Download - Restart & Update - Restart & Install" restarts but silently fails to install the updates.


Version-Release number of selected component (if applicable):
gnome-software-3.34.0-2.fc31.x86_64
python3-dnf-plugin-system-upgrade-4.0.5-1.fc31.noarch


How reproducible:
always


Additional info:
Afterwards, `journalctl -b -1` contains
> Sep 26 20:40:54 delta pk-offline-update[880]: status query
> Sep 26 20:40:54 delta pk-offline-update[880]: percentage 0%
> Sep 26 20:40:54 delta pk-offline-update[880]: status loading-cache
> Sep 26 20:40:54 delta python3[878]: detected unhandled Python exception in '/usr/bin/dnf'
> Sep 26 20:40:54 delta pk-offline-update[880]: percentage 1%
> Sep 26 20:40:54 delta dnf[878]: Traceback (most recent call last):
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/bin/dnf", line 58, in <module>
> Sep 26 20:40:54 delta dnf[878]:     main.user_main(sys.argv[1:], exit_code=True)
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 191, in user_main
> Sep 26 20:40:54 delta dnf[878]:     errcode = main(args)
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 65, in main
> Sep 26 20:40:54 delta dnf[878]:     return _main(base, args, cli_class, option_parser_class)
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 94, in _main
> Sep 26 20:40:54 delta dnf[878]:     cli.configure(list(map(ucd, args)), option_parser())
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf/cli/cli.py", line 970, in configure
> Sep 26 20:40:54 delta dnf[878]:     self.command.configure()
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf-plugins/system_upgrade.py", line 335, in configure
> Sep 26 20:40:54 delta dnf[878]:     self._call_sub("configure")
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf-plugins/system_upgrade.py", line 347, in _call_sub
> Sep 26 20:40:54 delta dnf[878]:     subfunc()
> Sep 26 20:40:54 delta dnf[878]:   File "/usr/lib/python3.7/site-packages/dnf-plugins/system_upgrade.py", line 410, in configure_upgrade
> Sep 26 20:40:54 delta dnf[878]:     repo.gpgcheck = repo.id in self.state.gpgcheck_repos
> Sep 26 20:40:54 delta dnf[878]: TypeError: argument of type 'NoneType' is not iterable
> Sep 26 20:40:54 delta python3[878]: can't communicate with ABRT daemon, is it running? [Errno 2] No such file or directory
> Sep 26 20:40:54 delta python3[878]: error sending data to ABRT daemon: 
> Sep 26 20:40:54 delta pk-offline-update[880]: percentage 2%
> Sep 26 20:40:54 delta pk-offline-update[880]: percentage 3%
> Sep 26 20:40:54 delta systemd[1]: dnf-system-upgrade.service: Main process exited, code=exited, status=1/FAILURE
> -- Subject: Unit process exited
> -- Defined-By: systemd
> -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
> -- 
> -- An ExecStart= process belonging to unit dnf-system-upgrade.service has exited.
> -- 
> -- The process' exit code is 'exited' and its exit status is 1.
> Sep 26 20:40:54 delta systemd[1]: dnf-system-upgrade.service: Failed with result 'exit-code'.
> -- Subject: Unit failed
> -- Defined-By: systemd
> -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
> -- 
> -- The unit dnf-system-upgrade.service has entered the 'failed' state with result 'exit-code'.
> Sep 26 20:40:54 delta systemd[1]: Failed to start System Upgrade using DNF.
[...]

Comment 1 Kalev Lember 2019-09-26 19:26:25 UTC
This looks like the dnf system upgrade plugin erroring out and restarting while the packagekit process is busy applying the offline update. The dnf system upgrade plugin should check that it was itself that initiated the offline update and not take over when packagekit is doing the offline update.

Also proposing as a Final Blocker.

Comment 2 Kalev Lember 2019-09-26 19:27:13 UTC
Hm, dnf-plugin-system-upgrade seems orphaned. Moving to dnf then.

Comment 3 Adam Williamson 2019-09-26 20:11:28 UTC
[adamw@adam tmp]$ sudo dnf repoquery -i python3-dnf-plugin-system-upgrade
...
Source       : dnf-plugins-extras-4.0.5-1.fc31.src.rpm

Comment 4 Pavla Kratochvilova 2019-09-27 07:06:48 UTC
This is likely a duplicate of bug 1751103.

> This looks like the dnf system upgrade plugin erroring out and restarting while the packagekit process is busy applying the offline update. The dnf system upgrade plugin should check that it was itself that initiated the offline update and not take over when packagekit is doing the offline update.

Kalev, can you please explain what you mean by this? I thought that PackageKit simply ran dnf system-upgrade and there was a traceback, but I don't know how PackageKit works, so maybe I am missing something. Do you believe there is some other problem?

If not, I will close it as duplicate.

Comment 5 Kalev Lember 2019-09-27 08:40:21 UTC
Yeah, looks like a dup of that other issue. Let's close this one then.

As for PackageKit, no, it does not use dnf system upgrade. It has its own offline updater. In addition, fwupd has its own offline updater as well.

The way it's all supposed to work is that /system-update symlink points to a different location depending on which offline updater is supposed to run. The others are supposed to just check the symlink and exit without rebooting if it's not their update.

In this case, I guess dnf system upgrade tracebacked and didn't get to exiting cleanly and then the dnf system upgrade systemd unit rebooted after the unit failed. This all happened at the same time as packagekit was already installing its update.

*** This bug has been marked as a duplicate of bug 1751103 ***

Comment 6 Stephan Bergmann 2019-09-27 09:24:37 UTC
Ah, so the dnf-system-upgrade.service would be responsible for doing the work of `dnf system-upgrade reboot` (which I didn't initiate, so somewhat surprising to see that service even kicking in), while that pk-offline-update is what's doing the work initiated by my gnome-software "Restart & Install"?  I see.

Comment 7 Kalev Lember 2019-09-27 09:40:02 UTC
Yes, exactly.