Yum Repo кеширование - PullRequest
0 голосов
/ 26 ноября 2018

Я хотел бы убедиться, что обороты доступны из Nexus 3 после их загрузки.

Когда обороты загружаются в Nexus 3, происходят следующие события (просмотр журналов):

Scheduling rebuild of yum metadata to start in 60 seconds
Rebuilding yum metadata for repository rpm
...
Finished rebuilding yum metadata for repository rpm

Это займет некоторое время.В моем конвейере CI я хотел бы периодически проверять, пока не станет доступен артефакт для установки.

Конвейер создает rpm, загружает его в Nexus 3, а затем каждые 10 секунд проверяет, доступен ли rpm.Чтобы проверить наличие оборотов, я выполняю следующую команду:

yum clean all && yum --disablerepo="*" --enablerepo="the-repo-I-care-about" list  --showduplicates | grep <name_of_artifcat> | grep <expected_version>

/etc/yum.conf содержит:

cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
distroverpkg=centos-release
http_caching=none

/etc/yum.repos.d/repo-i-care-about.repo содержит:

[repo-i-care-about]
name=Repo I care about
enabled=1
gpgcheck=0
baseurl=https://somewhere.com
metadata_expire=5
mirrorlist_expire=5
http_caching=none

Проблема, с которой я сталкиваюсь, заключается в том, что ответ списка, по-видимому, возвращает устаревшую информацию.

Перестройка метаданных занимает около 70 секунд (можно настроить начальные 60 секунд, в конце я настрою)и я проверяю каждые 10 секунд: ответ от репозитория yum выглядит где-то кэшированным (иногда), и когда это происходит, если я пытаюсь выполнить тот же поиск в другом окне с теми же настройками репо, я получаю ожидаемую версию артефакта.

Тот факт, что на другой машине я получаю ожидаемый результат с первой попытки, учитывая конкретную команду списка, и тот факт, что машина, на которой я проверяю каждые 10 секунд, кажется, никогда не получит ожидаемый результат (даже через несколько минуттак как артефакт доступен в другом окне), заставляет меня думать, что ответ кэшируется.

Я бы хотел не ждать 90 секунд или около того, прежде чем сделать первый запрос списка (чтобы убедиться, что в первый разЯ выполняю команду списка, артефакт, скорее всего, готов, и я не кэширую результат), особенно потому, что первоначальная задержка планирования метаданных может измениться (с 60 секунд мы можем измениться на более низкое значение).

Слабость этой проверки стала лучше, так как я добавил http_caching=none в yum.conf и в определение репо.Но это все равно не помогло решить проблему надежно.

Есть ли какие-либо другие параметры кэширования, которые я должен настроить, чтобы ожидать более надежных результатов от команды list?На данный момент меня не волнует, сколько времени займет команда list, если она не содержит устаревшей информации.

1 Ответ

0 голосов
/ 26 ноября 2018

Похоже, что удаление папок /var/cache/yum/* делает проверку более надежной.Тем не менее, я чувствую, что мне не хватает некоторых настроек для достижения того, что мне нужно аккуратно.

...