Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1627534 - A lot of errors "TransactionItem not found" during update
Summary: A lot of errors "TransactionItem not found" during update
Keywords:
Status: CLOSED DUPLICATE of bug 1625259
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: rpm-software-management
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-09-10 19:57 UTC by Mikhail
Modified: 2018-09-14 14:54 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-09-12 16:30:31 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
downgrade in chroot log (286.29 KB, text/plain)
2018-09-10 19:57 UTC, Mikhail
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1598590 0 unspecified CLOSED dnf RuntimeError: C++ std::exception: Step: UNIQUE constraint failed 2022-05-16 11:32:56 UTC

Internal Links: 1598590

Description Mikhail 2018-09-10 19:57:49 UTC
Created attachment 1482227 [details]
downgrade in chroot log

Description of problem:


Version-Release number of selected component (if applicable):
# dnf --version
3.2.0
  Installed: dnf-0:3.2.0-2.fc29.noarch at Fri 10 Aug 2018 11:42:27 AM GMT
  Built    : Fedora Project at Wed 08 Aug 2018 04:52:11 PM GMT

  Installed: rpm-0:4.14.2-1.fc30.x86_64 at Fri 24 Aug 2018 03:02:15 AM GMT
  Built    : Fedora Project at Tue 21 Aug 2018 11:33:49 AM GMT


How reproducible:


Steps to Reproduce:
1. Boot from LiveUSB
2. Look how recognized partitions.
# fdisk -l
3. Create mount point
# mkdir /mnt/point
4. Mount root и EFI partitions
# mount /dev/nvme0n1p2 /mnt/point/
# mount /dev/nvme0n1p1 /mnt/point/boot/efi
5. Mount /proc
# mount --bind /proc /mnt/point/proc
6. Enter in chroot
# chroot /mnt/point/
7. Look dnf history
# dnf history
8. Try undone last update
# dnf history undo 102 --refresh

Actual results:
A lot of error messages:
Running transaction
  Preparing        :                                                                                                                                                                  1/1 
  Running scriptlet: grub2-common-1:2.02-51.fc30.noarch                                                                                                                               1/1 
  Downgrading      : grub2-common-1:2.02-51.fc30.noarch                                                                                                                              1/22 
  Downgrading      : grub2-tools-minimal-1:2.02-51.fc30.x86_64                                                                                                                       2/22 
  Downgrading      : grub2-tools-extra-1:2.02-51.fc30.x86_64                                                                                                                         3/22 
  Running scriptlet: grub2-tools-1:2.02-51.fc30.x86_64                                                                                                                               4/22 
  Downgrading      : grub2-tools-1:2.02-51.fc30.x86_64                                                                                                                               4/22 
  Running scriptlet: grub2-tools-1:2.02-51.fc30.x86_64                                                                                                                               4/22 
  Downgrading      : grub2-pc-modules-1:2.02-51.fc30.noarch                                                                                                                          5/22 
  Downgrading      : grub2-pc-1:2.02-51.fc30.x86_64                                                                                                                                  6/22 
  Downgrading      : grub2-efi-ia32-1:2.02-51.fc30.x86_64                                                                                                                            7/22 
  Downgrading      : grub2-efi-x64-1:2.02-51.fc30.x86_64                                                                                                                             8/22 
  Downgrading      : grub2-efi-ia32-cdboot-1:2.02-51.fc30.x86_64                                                                                                                     9/22 
  Downgrading      : grub2-efi-x64-cdboot-1:2.02-51.fc30.x86_64                                                                                                                     10/22 
  Downgrading      : grub2-tools-efi-1:2.02-51.fc30.x86_64                                                                                                                          11/22 
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 253, in callback
    self._elemProgress(key, amount)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 296, in _elemProgress
    _, _, tsi = self._extract_cbkey(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 237, in _extract_cbkey
    raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
RuntimeError: TransactionItem not found for key: grub2-pc

Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 265, in callback
    self._uninst_progress(amount, total, key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 347, in _uninst_progress
    _, _, tsi = self._extract_cbkey(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 237, in _extract_cbkey
    raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
RuntimeError: TransactionItem not found for key: grub2-pc

Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 265, in callback
    self._uninst_progress(amount, total, key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 347, in _uninst_progress
    _, _, tsi = self._extract_cbkey(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 237, in _extract_cbkey
    raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
RuntimeError: TransactionItem not found for key: grub2-pc


but undone operation was successful.

Expected results:
No error messages.

Additional info:

Comment 1 Zbigniew Jędrzejewski-Szmek 2018-09-11 13:47:46 UTC
I'm seeing the same error, on a normal machine (a VM, but this shouldn't matter):

=====================&<=============================================
  Cleanup          : libvirt-daemon-driver-network-4.6.0-1.fc29.x86_64                          633/752 
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 253, in callback
    self._elemProgress(key, amount)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 296, in _elemProgress
    _, _, tsi = self._extract_cbkey(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 237, in _extract_cbkey
    raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
RuntimeError: TransactionItem not found for key: libvirt-daemon

Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 273, in callback
    self._script_start(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 405, in _script_start
    pkg, _, _ = self._extract_cbkey(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 237, in _extract_cbkey
    raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
RuntimeError: TransactionItem not found for key: libvirt-daemon

...


Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 273, in callback
    self._script_start(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 405, in _script_start
    pkg, _, _ = self._extract_cbkey(key)
  File "/usr/lib/python3.7/site-packages/dnf/yum/rpmtrans.py", line 237, in _extract_cbkey
    raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
RuntimeError: TransactionItem not found for key: libvirt-daemon

  Cleanup          : gdb-headless-8.1.90.20180727-44.fc30.x86_64                                635/752 

...

Failed:
  libvirt-daemon-4.1.0-1.fc29.x86_64                                                                    

Error: Transaction failed
=====================>&=============================================

The traceback repeats maybe a 100 times.

It seems I'm left with a duplicate package:
$ rpm -q libvirt-daemon
libvirt-daemon-4.1.0-1.fc29.x86_64
libvirt-daemon-4.7.0-1.fc30.x86_64

I'm setting high severity since this results in a failed transaction.

Comment 2 Zbigniew Jędrzejewski-Szmek 2018-09-12 16:30:31 UTC

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

Comment 3 Adam Williamson 2018-09-13 17:34:59 UTC
I think Zbigniew may have had a pre-existing dupe in his RPM database, and that may be a trigger for the bug.

Note that we end up with libvirt-daemon-4.7.0-1.fc30 in the db, and the transaction logs this:

Cleanup          : libvirt-daemon-driver-network-4.6.0-1.fc29.x86_64                          633/752

to me that looks a lot like the transaction was updating from 4.6.0-1.fc29 to 4.7.0-1.fc30. *But*, the rpm -qa shows this:

$ rpm -q libvirt-daemon
libvirt-daemon-4.1.0-1.fc29.x86_64
libvirt-daemon-4.7.0-1.fc30.x86_64

where'd that 4.1.0-1.fc29 come from, if we were going from 4.6.0-1 to 4.7.0-1 in the transaction?

This suggests to me that *before* the 'dnf update', the RPM db *already* had duplicate entries for 4.1.0-1.fc29 and 4.6.0-1.fc29 , perhaps due to an earlier crashed update or something along those lines. And so perhaps updating a package which *already has* duplicate entries in the DB triggers the TransactionItem bug?


Note You need to log in before you can comment on or make changes to this bug.