Bug 1732761

Summary: Can't install virt module from slow train to fast train on rhel8 because nbdkit-server-1.12 conflicts with file from package nbdkit-1.4
Product: Red Hat Enterprise Linux 8 Reporter: mxie <mxie>
Component: nbdkitAssignee: Libvirt Maintainers <libvirt-maint>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.1CC: berrange, juzhou, mzhan, ptoscano, rjones, tzheng, xiaodwan, zili
Target Milestone: rc   
Target Release: 8.0   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: nbdkit-1.12.1-3.module+el8.1.0+3795+00d3a468 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-11-06 07:17:49 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:
Attachments:
Description Flags
nbdkit_confiict_rhel8.log none

Description mxie@redhat.com 2019-07-24 10:02:01 UTC
Created attachment 1593080 [details]
nbdkit_confiict_rhel8.log

Description of problem:
Can't install virt module from slow train to fast train on rhel8 because nbdkit-server-1.12 conflicts with file from package nbdkit-1.4

Version-Release number of selected component (if applicable):
nbdkit-1.4.2-5.module+el8.1.0+3531+2918145b.x86_64
nbdkit-server-1.12.1-2.module+el8.1.0+3554+1a3a94a6.x86_64


How reproducible:
100%

Steps to Reproduce:
1.Prepare a rhel8 host which has installed virt-v2v and slow virt module
# yum module info virt
Name             : virt
Stream           : rhel [d][e][a]
Version          : 8010020190708102823
Context          : cdc1202b
Architecture     : x86_64
Profiles         : common [d] [i]
Default profiles : common
Repo             : slow-module
Summary          : Virtualization module
Description      : A virtualization module

# rpm -q virt-v2v nbdkit
virt-v2v-1.38.4-13.module+el8.1.0+3531+2918145b.x86_64
nbdkit-1.4.2-5.module+el8.1.0+3531+2918145b.x86_64


2.Update the virt module from slow train to fast train on rhel8 host

2.1 Enable the repo of fast train and disable the repo of slow train 

2.2 # yum module reset virt -y
=================================================
 Package                Architecture          Version                   Repository              Size
==================================================
Disabling module profiles:
 virt/common                                                                                        
Resetting modules:
 virt                                                                                               

Transaction Summary
==================================================

Complete!

2.3 Enable fast virt module
# yum module enable virt -y

=======================================================
 Package                Architecture          Version                   Repository              Size
========================================================
Enabling module streams:
 virt                                         8.1                                                   

Transaction Summary
==============================================

Complete!


3.Install virt module but the installation is failed because nbdkit-server-1.12 conflicts with file from package nbdkit-1.4
# yum module enable virt
....
....
Error: Transaction check error:
  file /usr/sbin/nbdkit from install of nbdkit-server-1.12.1-2.module+el8.1.0+3554+1a3a94a6.x86_64 conflicts with file from package nbdkit-1.4.2-5.module+el8.1.0+3531+2918145b.x86_64
  file /usr/share/man/man1/nbdkit.1.gz from install of nbdkit-server-1.12.1-2.module+el8.1.0+3554+1a3a94a6.x86_64 conflicts with file from package nbdkit-1.4.2-5.module+el8.1.0+3531+2918145b.x86_64


Actual results:
As above description

Expected results:
Should upgrade smoothly between the two nbdkit versions during virt module installation

Additional info:

Comment 1 Daniel Berrangé 2019-07-24 10:38:31 UTC
My understanding is that there is explicitly no supported upgrade path for dynamically switching a host between slow stream and fast stream virt modules, or vica-verca. IIUC, the expectation is that the admin is responsible for fully uninstalling any packages related to the virt module being disabled, *before* trying to enable & use a different virt module stream.

This doesn't mean we shouldn't still fix the upgrade issue wrt to the nbdkit package, especially if this might still affect slow stream on its own if we later rebase nbdkit in the slow stream.

Comment 2 Richard W.M. Jones 2019-07-25 08:00:40 UTC
I asked Ming to file this bug because I think we should try to make the upgrade path work here.

What happened is that we renamed nbdkit -> nbdkit-server.  The nbdkit package in 1.12 is now
a virtual package which depends on nbdkit-server and a few others.

The server binary (/usr/sbin/nbdkit) and manual page (/usr/share/man/man1/nbdkit.1.gz) moved from
nbdkit to nbdkit-server.

Looking at the dnf output it seems like before the transaction, (old) nbdkit is
installed, containing the server and the man page.  Then libguestfs is upgraded
which only depends on the minimal nbdkit-server package.  But dnf doesn't
either remove or upgrade nbdkit.  In other words dnf is trying to upgrade to:

  nbdkit-server 1.12
  nbdkit 1.4

which of course causes a conflict.

I'm not sure how to solve this without going back in time and fixing the 1.4 package.

Comment 3 Daniel Berrangé 2019-07-25 08:23:47 UTC
If the 'nbdkit-1.12' package actually exists in the repos, that should be considered an upgrade path from 'nbdkit-1.4', which would mean everything should "just work".

From this conflict, it looks like 'nbdkit-1.12' doesn't exist in the repos, meaning that when yum tries to pull in nbd-server for libguestfs, things become unresolvable.

Comment 4 Richard W.M. Jones 2019-07-25 08:44:52 UTC
I wonder if this has something to do with CRB not being enabled.  mxie can you check if
it's possible to install just the nbdkit 1.12 package on its own?  Also which repository
that package comes from?

Comment 8 mxie@redhat.com 2019-07-30 10:57:37 UTC
Verify the bug with builds
nbdkit-1.4.2-5.module+el8.1.0+3531+2918145b.x86_64
nbdkit-1.12.1-3.module+el8.1.0+3795+00d3a468.x86_64

Steps:
1.Prepare a rhel8 host which has installed virt-v2v and slow stream virt module
# yum module info virt
Name             : virt
Stream           : rhel [d][e][a]
Version          : 8010020190723195906
Context          : cdc1202b
Architecture     : x86_64
Profiles         : common [d]
Default profiles : common
Repo             : slow-module
Summary          : Virtualization module
Description      : A virtualization module

# rpm -q virt-v2v nbdkit
virt-v2v-1.38.4-13.module+el8.1.0+3531+2918145b.x86_64
nbdkit-1.4.2-5.module+el8.1.0+3531+2918145b.x86_64


2.Update the virt module from slow train to fast train on rhel8 host

2.1 Enable the repo of fast stream and disable the repo of slow stream

2.2 # yum module reset virt -y
=================================================
 Package                Architecture          Version                   Repository              Size
==================================================
Disabling module profiles:
 virt/common                                                                                        
Resetting modules:
 virt                                                                                               

Transaction Summary
==================================================

Complete!

2.3 Enable fast virt module
# yum module enable virt -y

=======================================================
 Package                Architecture          Version                   Repository              Size
========================================================
Enabling module streams:
 virt                                         8.1                                                   

Transaction Summary
==============================================

Complete!


3.Install fast stream virt module 
# yum module install virt -y
.....
.....
Installed:
  libvirt-daemon-driver-storage-iscsi-direct-5.5.0-2.module+el8.1.0+3773+7dd501bf.x86_64
  nbdkit-basic-filters-1.12.1-3.module+el8.1.0+3795+00d3a468.x86_64             
  nbdkit-basic-plugins-1.12.1-3.module+el8.1.0+3795+00d3a468.x86_64             
  nbdkit-python-plugin-1.12.1-3.module+el8.1.0+3795+00d3a468.x86_64             
  nbdkit-server-1.12.1-3.module+el8.1.0+3795+00d3a468.x86_64                    
  nbdkit-vddk-plugin-1.12.1-3.module+el8.1.0+3795+00d3a468.x86_64    

Result:
  Upgrade smoothly between the two nbdkit versions (slow and fast) during virt module installation,so move the bug from ON_QA to VERIFIED

Comment 10 errata-xmlrpc 2019-11-06 07:17:49 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2019:3723