Bug 83320 - performance issues with rpm-4.1 compared to rpm404 using rpm2html
Summary: performance issues with rpm-4.1 compared to rpm404 using rpm2html
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: rpm
Version: 8.0
Hardware: i386
OS: Linux
Target Milestone: ---
Assignee: Jeff Johnson
QA Contact: Mike McLean
: 83315 (view as bug list)
Depends On:
TreeView+ depends on / blocked
Reported: 2003-02-02 12:43 UTC by Fabrice Bellet
Modified: 2007-04-18 16:50 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2003-02-03 11:15:00 UTC

Attachments (Terms of Use)

Description Fabrice Bellet 2003-02-02 12:43:57 UTC
I experience severe performance differences when reindexing a RPM database with
rpm2html, depending of which version of RPM I link with. For example, on a test
machine, with dual Athlon MP 1900MHz, when reindexing the RedHat 8.0 RPMS
directory, I obtain these values :

  33.750u 8.420s 1:05.68 64.2%    0+0k 0+0io 484pf+0w
  34.100u 9.350s 1:07.06 64.7%    0+0k 0+0io 491pf+0w
  11.250u 1.640s 0:12.92 99.7%    0+0k 0+0io 376pf+0w

Comment 1 Jeff Johnson 2003-02-02 13:42:50 UTC
rpm-4.1 verifies signatures and digests when reading
package headers. In particular, the entire payload
will be read to verify the traditional header+payload

What happens if you recompile rpm2html, adding
    (void) rpmtsSetVSFlags(ts, -1);
immediately after creating a new transaction?

Comment 2 Jeff Johnson 2003-02-02 13:55:28 UTC
*** Bug 83315 has been marked as a duplicate of this bug. ***

Comment 3 Jeff Johnson 2003-02-02 14:03:44 UTC
--- rpmopen.c.orig      2003-02-02 08:58:28.000000000 -0500
+++ rpmopen.c   2003-02-02 08:59:20.000000000 -0500
@@ -1016,6 +1016,7 @@
     /* read the RPM header */
 #if defined(_RPMVSF_NODIGESTS)
     {  rpmts ts = rpmtsCreate();
+       (void) rpmtsSetVSFlags(ts, -1);
        rc = rpmReadPackageFile(ts, fd, buffer, &h);
        ts = rpmtsFree(ts);

Comment 4 Fabrice Bellet 2003-02-02 21:11:19 UTC
That works for me, and I obtain performances close to rpm-4.0.4 now. Moreover, I
 parsed the whole sourceforge archive (RPMS files only) without crashes.

Comment 5 Jeff Johnson 2003-02-03 11:15:00 UTC
OK, I'm gonna assume you're happy, but warn that you
may not have encountered a damaged package. fwiw, rpm-4.1
has stronger sanity checks on header data than rpm-4.0.4,
but the Right Thing To Do to prevent segfaults is to
check a header sha1 digest before parsing. The digest is
present in 8.0 packages and could be cheaply checked by doing
    rpmtsSetVSFlags(ts, ~RPMVSF_NOSHA1HEADER);

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