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: [email protected]
* Name: [[User:vashirov|Viktor Ashirov]]
* Email: [email protected]


== 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 -- [email protected]
To unsubscribe send an email to [email protected]
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/[email protected]
Do not reply to spam, report it: 
https://forge.fedoraproject.org/infra/tickets/issues/new
-- 
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
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/[email protected]
Do not reply to spam, report it: 
https://forge.fedoraproject.org/infra/tickets/issues/new

Reply via email to