kiwix / kiwix/operations

Cache ZIM metadata on library-gen?

Open
#209 2 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
Python
Stars
15
Forks
5
PR merge metrics
No merged PRs in 30d

Description

Currently, the library generator script which is used both for library and dev-library (different source folders) spends most of its time reading metadata from ZIM files on the filesystem.

On library, this is ~6,800 files. This can be completed within ~6mn but if the disk is busy (reminder: the server is using mechanical drives), this can take 3 hours.

This script is ran every 30mn on library and every 10mn for dev-library.

While this will all be obsolete once the CMS takes over, a quick and easy improvement would be to cache this information and only read metadata for new files. It's actually already cached (in previously written library xml) so it's just a matter of skipping/reusing data for existing entries.

The only drawback is that it wont update metadata of a file that has been overwritten but that's already a scenario we've excluded and we could implement a simple file-flag that triggers a full re-read if present.

Contributor guide

Open the contributing guide

Research direction

Start by locating the Python library generator used for both library and dev-library, then inspect how it reads ZIM metadata and writes the existing library XML. Reuse metadata for entries already present and read metadata only for new files; verify repeated runs avoid unnecessary filesystem reads while preserving the existing generation behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
performance, tooling
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.