Re: Fedora 33 System-Wide Change proposal: Sqlite RpmDB

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 16, 2020 at 11:24 AM Ben Cotton <bcotton@xxxxxxxxxx> wrote:
>
> https://fedoraproject.org/wiki/Changes/Sqlite_Rpmdb
>
> == Summary ==
> Change format of the RPM database from Berkeley DB to a new Sqlite format.
>
> == Owner ==
> * Name: [[User:pmatilai| Panu Matilainen]] [[User:ffesti|Florian Festi]]
> * Email: pmatilai@xxxxxxxxxx ffesti@xxxxxxxxxx
>
> == Detailed Description ==
>
> The current rpm database implementation is based on Berkeley DB 5.x, a
> version which is unmaintained upstream for several years now. Berkeley
> DB 6.x is license incompatible so moving to that is not an option. In
> addition, the existing rpmdb implementation is notoriously unreliable
> as it's not transactional and has no other means to detect
> inconsistencies either.
>
> Changing to a more sustainable database implementation is long
> overdue. We propose to change the default rpmdb format to the new
> sqlite based implementation. Support for current BDB format will be
> retained in Fedora 33, and phased out to read-only support in Fedora
> 34.
>
> == Benefit to Fedora ==
>
> * A far more robust rpm database implementation
> * Getting rid of Berkeley DB dependency in one of the core components
>
> == Scope ==
> * Proposal owners:
> ** Once [[Changes/RPM-4.16|RPM 4.16]] lands and passes initial
> shakedown, change the default rpmdb configuration to sqlite
> ** Address any bugs and issues in the database backend found by wider
> testing base
> ** Help other developers to address Berkeley DB dependencies
>
> * Other developers:
> ** Test for hidden Berkeley DB dependencies in other software, address
> them as found and needed
>
> * Release engineering: [https://pagure.io/releng/issue/9308 #9308]
>
> * Policies and guidelines: Policies and guidelines are not affected
>
> * Trademark approval: N/A (not needed for this Change)
>
> == Upgrade/compatibility impact ==
>
> === Upgrading ===
> * Ability to upgrade is not affected
> * After upgrade completes, manual action (rpmdb --rebuilddb) will
> probably be needed to convert to sqlite. Alternatively user can change
> configuration to stay on BDB.
>
> === Compatibility ===
> * Container/chroot use-cases will be affected: older rpm versions will
> be unable to query/manipulate the rpmdb from outside the chroot
> * Koji/COPR may need to override the database format (back to) BDB for
> the time being
>
> == How To Test ==
> * Rpmdb gets thoroughly exercised as a matter of normal system
> operation, performing installs, updates, package builds etc
> * Of specific interest here is torture testing: forcibly killing rpm
> in various stages of execution - database should stay consistent and
> operational (other system state is out of scope)
> * Test database conversions from one backend to another (rpmdb
> --rebuilddb --define "_db_backend <backend>")
>
> == User Experience ==
> * In normal operation, users should see little or no change
> * Behavior in error situations is much more robust: forcibly killed
> transaction no longer causes database inconsistency or corruption
>
> == Dependencies ==
> * This change depends on [[Changes/RPM-4.16|RPM 4.16]], support for
> sqlite rpmdb is not present in older versions
> * RPM will grow a new dependency on sqlite-libs
> * Technically the rpmdb format is an internal implementation detail of
> RPM and the data is only accessible through the librpm API, but some
> software is making assumptions both about the format and/or in
> particular, file naming. These are being tracked at
> https://bugzilla.redhat.com/show_bug.cgi?id=1766120
> * Upgrade tooling could/should perform rpmdb rebuild at end, this
> would be a good thing to do regardless of this change
>
> == Contingency Plan ==
>
> * Contingency mechanism:
> ** Revert the default database back to Berkeley DB backend in the
> package. Running 'rpmdb --rebuilddb' on hosts is currently required to
> actually convert the database, but means to automate conversion in
> specific conditions is being discussed upstream.
> ** The rpm-team does not expect problems with the database backend
> itself, but we are aware that postponing may be needed due to
> infrastructure or other tooling not being ready, primarily due to
> inability to access the database from older releases.
>
> * Contingency deadline: Beta freeze
> * Blocks release? Yes
>
> == Documentation ==
> * [https://rpm.org/wiki/Releases/4.16.0 | RPM 4.16 release notes]
>
> == Release Notes ==
>
> * After upgrading from an older release, rpm operations will issue
> warnings about database backend configuration not matching what's on
> disk. Users should run 'rpmdb --rebuilddb' at earliest opportunity, or
> change configuration to stay on Berkeley DB backend (eg 'echo
> %_db_backend bdb > /etc/rpm/macros.db')
> * The details are subject to change, the database rebuild may be done
> by upgrade tooling
>

I'm glad to *finally* see this happen, so congratulations to the RPM
team for finally making this a reality! I look forward to trying this
out in Rawhide as soon as possible. 😊

Also, yay, soon no more BDB... 🥳




--
真実はいつも一つ!/ Always, there's only one truth!
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux