Bug 1701807

Summary: dnf ignores exception error raised by plugin etckeeper-dnf
Product: [Fedora] Fedora Reporter: Alick Zhao <alick9188>
Component: dnfAssignee: rpm-software-management
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 29CC: dmach, jmracek, jrohel, mblaha, mhatina, packaging-team-maint, pkratoch, rpm-software-management, vmukhame
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: dnf-4.2.5-1.fc29 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-04-29 02:15:04 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:

Description Alick Zhao 2019-04-22 03:05:50 UTC
Description of problem:

This bug is about the interplay between dnf and etckeeper (more specifically the etckeeper-dnf package). etckeeper has an option that, when enabled, aborts a 'dnf upgrade/install' operation when etckeeper detects there are uncommitted changes under /etc. This used to work fine, but now on Fedora 29, after etckeeper raises an error, dnf continues upgrading/installing packages, instead of aborting and letting the user 'etckeeper commit' first.

Version-Release number of selected component (if applicable):


How reproducible:

Steps to Reproduce:
1. In `/etc/etckeeper/etckeeper.conf`, uncomment `AVOID_COMMIT_BEFORE_INSTALL=1`
2. sudo dnf upgrade

Actual results:

$ sudo dnf upgrade                                                                                                                                                                     
Last metadata expiration check: 0:24:00 ago on Sun 21 Apr 2019 09:09:27 PM CDT.                                                                                                        
** etckeeper detected uncommitted changes in /etc prior to dnf run                                                                                                                     
** Aborting dnf run. Manually commit and restart.                                                                                                                                      
Traceback (most recent call last):                                                                                                                                                     
  File "/usr/lib/python3.7/site-packages/dnf/plugin.py", line 104, in _caller                                                                                                          
    getattr(plugin, method)()                                                                                                                                                          
  File "/usr/lib/python3.7/site-packages/dnf-plugins/etckeeper.py", line 28, in resolved                                                                                               
    raise dnf.exceptions.Error('etckeeper returned %d' % (ret >> 8))                                                                                                                   
dnf.exceptions.Error: etckeeper returned 1                                                                                                                                             
Dependencies resolved.                                                                                                                                                                 
 Package                                             Architecture               Version                                            Repository                                     Size 
 kernel                                              x86_64                     5.0.7-200.fc29                                     updates                                        30 k 
 kernel-core                                         x86_64                     5.0.7-200.fc29                                     updates                                        26 M 

Expected results:

dnf aborts upon etckeeper returned 1

Additional info:

Comment 1 Jaroslav Mracek 2019-04-23 10:19:39 UTC
I created a patch that runs plugins safely, but in case that plugin raises dnf.exceptions, it allows termination (https://github.com/rpm-software-management/dnf/pull/1383).

Comment 2 Fedora Update System 2019-04-25 16:43:26 UTC
dnf-4.2.5-1.fc29 libdnf-0.31.0-2.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2019-2612a121ba

Comment 3 Fedora Update System 2019-04-26 22:10:06 UTC
dnf-4.2.5-1.fc29, libdnf-0.31.0-2.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-2612a121ba

Comment 4 Fedora Update System 2019-04-29 02:15:04 UTC
dnf-4.2.5-1.fc29, libdnf-0.31.0-2.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.