Bug 1820579

Summary: RFE: Handle database conversion automatically
Product: [Fedora] Fedora Reporter: Panu Matilainen <pmatilai>
Component: rpmAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: igor.raits, mjw, packaging-team-maint, pmatilai, pmoravco, vmukhame
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-05-07 06:45:48 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:
Bug Depends On:    
Bug Blocks: 1818910    

Description Panu Matilainen 2020-04-03 11:45:27 UTC
Acceptance of https://fedoraproject.org/wiki/Changes/Sqlite_Rpmdb essentially required that the database is converted automatically in the process. We need to handle that somehow, this bug is to track that specific goal.

Comment 1 Panu Matilainen 2020-05-07 06:45:48 UTC
Database conversions are handled by the following scheme:

There's a new rpmdb-rebuild systemd service, which can be flagged to run on next reboot by creating '.rebuilddb' flag file in the rpm database directory, ie 'touch /var/lib/rpm/.rebuilddb'. This is not conversion or backend specific in any way, so it can be used to flag the database for maintenance rebuild (think VACUUM, regardless of the backend) at a time where there are no external users.

During updates of rpm package, if BDB rpm database is detected (/var/lib/rpm/Packages), it's flagged for rebuild on the next reboot regardless of configured backend. This serves two purposes: convert away from BDB to the configured database, or if configured to stay on BDB for now, give it a much needed maintenance rebuild (ensure index sanity, restore performance etc) from time to time.

Established in rawhide as of rpm >= 4.15.90-0.git14971.11