Wiki - https://fedoraproject.org/wiki/Changes/LMDB_1_transition Discourse Poll - https://discussion.fedoraproject.org/t/f46-change-proposal-lmdb-1-0-transition-system-wide/204727/2 This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee. == Summary == Update the default LMDB to 1.0. Keep existing consumers on 0.9 through compatibility packages until they are ready to migrate. == Owner == * Name: [[User:spichugi|Simon Pichugin]] * Email: spichugi@redhat.com * Name: [[User:vashirov|Viktor Ashirov]] * Email: vashirov@redhat.com == Detailed Description == LMDB 1.0 changes the library ABI and database format. It cannot open databases created with LMDB 0.9. Update <code>lmdb</code>, <code>lmdb-libs</code>, <code>lmdb-devel</code> and <code>lmdb-doc</code> to 1.0.2. Add co-installable <code>lmdb0.9</code>, <code>lmdb0.9-libs</code> and <code>lmdb0.9-devel</code> at 0.9.36. The compatibility packages will preserve the old runtime SONAME and provide tools with <code>-0.9</code> suffixes, such as <code>mdb_dump-0.9</code>. All existing Fedora packages using system LMDB will be pinned to 0.9 and rebuilt in one side tag. Both libraries will use distinct ELF symbol versions so rebuilt consumers use the intended library when both versions are loaded into one process. Change approval, upstream agreement on the symbol versions and successful validation are required before merging. The compatibility packages will be maintained through at least Fedora 48's support lifetime. Retirement requires a separate Change, with no remaining Fedora consumers or supported upgrade paths depending on them. This transition targets Rawhide for Fedora 46; existing stable releases remain on 0.9. == Feedback == [https://bugzilla.redhat.com/show_bug.cgi?id=2495052 Bugzilla 2495052] raised upstream-readiness and database-compatibility concerns. Pinning existing consumers to 0.9 avoids rebuilding them against a library that cannot read their databases. == Benefit to Fedora == Make LMDB 1.0 available while preserving existing applications and databases. == Scope == * '''Proposal owners:''' package both versions, file a Bugzilla issue for every affected package, prepare dependency and build changes, provide migration tooling and documentation, and coordinate side-tag rebuilds and validation before merging. * '''Other developers:''' review these changes and test their packages with existing data. Migration to 1.0 can follow when upstream support and data migration are ready. * '''Release engineering:''' review the coordinated side-tag build, merge and rollback plan; https://forge.fedoraproject.org/releng/tickets/issues/13543 * '''Policies and guidelines:''' no changes. * '''Trademark approval:''' not needed. * '''Alignment with the Fedora Strategy:''' N/A. Affected consumers include applications and services, shared libraries and plugins, language bindings, and development packages used by downstream builds. Their Bugzilla issues will specify the required build, runtime, tool and transitive dependency changes and tests. Build dependencies will select <code>lmdb0.9-devel</code>, with explicit selection of the 0.9 headers and library. The co-installable development-package layout and build instructions will be finalized before rebuilds. == Upgrade/compatibility impact == Upgrades will install the 0.9 compatibility libraries required by pinned applications. Their database format remains unchanged; no automatic conversion occurs. The default <code>mdb_*</code> tools and <code>lmdb-devel</code> will use 1.0. Use tools such as <code>mdb_dump-0.9</code> and <code>mdb_copy-0.9</code> for 0.9 databases. Packaged consumers that invoke these tools will be updated to select the matching version; locally maintained scripts and build configurations may also need changes. Later migrations require tested export with <code>mdb_dump-0.9</code> and import with the 1.0 <code>mdb_load</code> into a new database, or regeneration for disposable data. Packages sharing databases must move together; bindings and libraries must document the impact on user-managed data. The planned <code>mdb_convert-0.9</code> helper must preserve main and named databases and leave originals intact for recovery. Custom comparators require application-specific migration. == Early Testing (Optional) == [https://copr.fedorainfracloud.org/coprs/vashirov/lmdb-1.0.0-soname-bump/ Initial COPR rebuilds] are available. Final compatibility-package and symbol-versioning tests are pending. == How To Test == * Verify co-installability of runtime, tool and development packages, including multilib. * Confirm rebuilt consumers use 0.9 headers, SONAME and symbol versions, including through transitive dependencies. Test bindings on supported architectures, including i686 where built. * Test upgrades with existing 0.9 data and confirm applications and their tool invocations continue to work. * Test processes loading both libraries in both load orders and confirm each consumer uses the intended version. * Test conversion of main and named databases, recovery from failures, and the package rollback procedure without losing access to either database format. == User Experience == Existing applications continue using their data. Maintainers control when each application moves to 1.0. == Dependencies == Compatibility-package availability, upstream symbol-version agreement and complete consumer pinning. OpenLDAP 2.7 uses bundled LMDB and is covered by a separate Change. == Contingency Plan == * '''Contingency mechanism:''' if validation is incomplete, the proposal owners will defer the side-tag merge and keep 0.9 as the default. If already merged, coordinate a package rollback with Release Engineering, using an Epoch bump if needed. Retain compatibility dependencies and keep 1.0 tools and their runtime available for data already created with 1.0. Package rollback will not convert databases back to 0.9. * '''Contingency deadline:''' Fedora 46 branching, 2027-02-09. * '''Blocks release?''' No. == Documentation == [https://git.openldap.org/openldap/openldap/-/blob/OPENLDAP_REL_ENG_2_7_1/libraries/liblmdb/upgrading.doc Upstream upgrade notes]. Fedora instructions for selecting a library version, using the matching tools, migration and recovery will be published before the side-tag merge. == Release Notes == LMDB 1.0 becomes the default library for new builds and the default version of the command-line tools. Existing Fedora consumers remain on 0.9 compatibility packages, and their databases are not converted. Use the <code>-0.9</code> tools for 0.9 databases. -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- devel-announce@lists.fedoraproject.org To unsubscribe send an email to devel-announce-leave@lists.fedoraproject.org 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-announce@lists.fedoraproject.org Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new
No comments:
Post a Comment