(→Scope) |
|||
Line 63: | Line 63: | ||
== Scope == | == Scope == | ||
* Proposal owners: | * Proposal owners: | ||
** libdnf | |||
*** Modify the `Repo` object to enable conditional filelists metadata download | |||
*** Introduce a new main configuration option to set the default behavior | |||
** dnf | |||
*** Introduce a new demand to enable specific commands to override filelists metadata download behavior | |||
*** Handle demand and configuration option inputs to delegate filelists loading decision to `libdnf` | |||
*** Implement filename pattern argument detection heuristics | |||
* Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | * Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> |
Revision as of 11:13, 23 October 2023
DNF: Do not download filelists by default
Summary
Change the DNF behavior to not download filelists by default. These metadata, which describe all the files contained within each package, are unnecessary in the majority of use cases. Additionally, these metadata files can be large in size, leading to a significant slowdown in the user experience.
Owner
- Name: Jan Kolarik
- Email: jkolarik@redhat.com
Current status
- Targeted release: Fedora Linux 40
- Last updated: 2023-10-23
- [<will be assigned by the Wrangler> devel thread]
- FESCo issue: <will be assigned by the Wrangler>
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
Until now, filelists were always downloaded together with other metadata. This was hardcoded and unable to change from the outside of DNF.
With these changes, we are proposing to not download the filelists metadata by default. This can be changed through the new DNF configuration option filelists
which is False
by default. If it is set to True
, filelists will be downloaded during the standard metadata synchronization procedure. Additionally, specific commands can override this behavior during the runtime using the existing demands object in the DNF and so explicitly request loading the filelists metadata. This is used when a filename spec (other than rpm package filename) is passed as the command-line parameter.
Feedback
Benefit to Fedora
As DNF is integral to various infrastructure tasks like package building and installation, testing environment creation, and server integration tests, this change significantly reduces processing time and resource usage for these processes.
Scope
- Proposal owners:
- libdnf
- Modify the
Repo
object to enable conditional filelists metadata download - Introduce a new main configuration option to set the default behavior
- Modify the
- dnf
- Introduce a new demand to enable specific commands to override filelists metadata download behavior
- Handle demand and configuration option inputs to delegate filelists loading decision to
libdnf
- Implement filename pattern argument detection heuristics
- libdnf
- Other developers:
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Community Initiatives:
Upgrade/compatibility impact
In general, applying these changes should not affect any existing user workflows and no additional manual changes are required. However, the absence of filelists might create an issue with packages that are not correctly packaged, f.e. from third-party repositories.
How To Test
User Experience
Large filelists could be over 200MB in size. It could take 1-2 minutes to download which is greatly slowing down the user experience.
For many operations the filelists metadata are not needed, so downloading them is wasting the resources. Without filelists being downloaded, DNF performance will be improved significantly, mainly regarding the network, CPU and disk space resources. The improvement includes deployments of customer built RPMS to containers that have no need for filelists level dependencies.
Dependencies
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
Documentation
N/A (not a System Wide Change)