From 8e71066bd23667ae2e3e903419f7fcfaac114008 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 21 Feb 2011 11:03:32 +0200 Subject: [PATCH] - fix erronous double cursor open, causing yum reinstall hang (#678644) --- rpm-4.9.0-rc1-double-cursor.patch | 24 ++++++++++++++++++++++++ rpm.spec | 7 ++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 rpm-4.9.0-rc1-double-cursor.patch diff --git a/rpm-4.9.0-rc1-double-cursor.patch b/rpm-4.9.0-rc1-double-cursor.patch new file mode 100644 index 0000000..17adffa --- /dev/null +++ b/rpm-4.9.0-rc1-double-cursor.patch @@ -0,0 +1,24 @@ +commit 4f7fe5e668e9cd8ba62e700f6f3fdaf2256306d8 +Author: Panu Matilainen +Date: Mon Feb 21 10:55:02 2011 +0200 + + Fix db cursor double-open, causing yum to hang on reinstall (RhBug:678644) + - A refactoring error in commit 475391dc581bf5ba72b6d59d16d875505b45bd51 + causes us to open a double cursor on the Package db. This doesn't + seem to affect much in rpm context, but Yum is being naughty and holding + two different handles to the same db simultaneously, which causes + to deadlock on trying to lock the same record twice from two different + handles .. or something to that effect. + +diff --git a/lib/rpmdb.c b/lib/rpmdb.c +index dc6d7a7..eb7a49d 100644 +--- a/lib/rpmdb.c ++++ b/lib/rpmdb.c +@@ -2331,7 +2331,6 @@ static int updatePackages(dbiIndex dbi, unsigned int hdrNum, DBT *hdr) + DBT data; + + memset(&data, 0, sizeof(data)); +- xx = dbiCopen(dbi, &dbcursor, DB_WRITECURSOR); + rc = dbiGet(dbi, dbcursor, &key, &data, DB_SET); + if (rc) { + rpmlog(RPMLOG_ERR, diff --git a/rpm.spec b/rpm.spec index 1753d53..d5ba984 100644 --- a/rpm.spec +++ b/rpm.spec @@ -22,7 +22,7 @@ Summary: The RPM package management system Name: rpm Version: %{rpmver} -Release: %{?snapver:0.%{snapver}.}2%{?dist} +Release: %{?snapver:0.%{snapver}.}3%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ Source0: http://rpm.org/releases/rpm-4.8.x/%{name}-%{srcver}.tar.bz2 @@ -42,6 +42,7 @@ Patch4: rpm-4.8.1-use-gpg2.patch # Patches already in upstream Patch100: rpm-4.9.0-rc1-getoutput.patch +Patch101 : rpm-4.9.0-rc1-double-cursor.patch # These are not yet upstream Patch301: rpm-4.6.0-niagara.patch @@ -208,6 +209,7 @@ packages on a system. %patch4 -p1 -b .use-gpg2 %patch100 -p1 -b .getoutput +%patch101 -p1 -b .double-cursor %patch301 -p1 -b .niagara %patch302 -p1 -b .geode @@ -418,6 +420,9 @@ exit 0 %doc COPYING doc/librpm/html/* %changelog +* Mon Feb 21 2011 Panu Matilainen - 4.9.0-0.rc1.3 +- fix erronous double cursor open, causing yum reinstall hang (#678644) + * Mon Feb 21 2011 Panu Matilainen - 4.9.0-0.rc1.2 - fix broken logic in depgen collector, hopefully curing #675002