[devel] postmortem p7 import at packages.altlinux.org

Igor Zubkov igor.zubkov на gmail.com
Вс Май 26 23:08:51 MSK 2013


Hi,

Я обещал рассказать почему p7 так долго заливался и что пошло не так.

Начнём с теории. Как вообще пакеты заливаются и что происходит на
фоне. После сохранения пакета в базу, в терминологии ruby on rails это
событие (callback) называет after_save, вызывается sphinx который
обновляет delta индекс. В обычном случае, индекс пересчитывается на
лету очень быстро и дальше идёт импорт следующего пакета. Так
происходит для пакетов с исходниками и дальше для бинарных пакетов.
Это индекс (для ускорения) пересчитывается каждую ночь. В это время
поиск не доступен. Раньше он просто показывал 500-страницу, сейчас
говорит о том что индекс перестраивается и попробуйте позже. Это
занимает примерно 10 минут. Было бы классно сделать так что бы когда
он пересчитывал весь индекс, sphinx отдавал данные из старого. Но у
нового плагина thinking-sphinx (через который работает весь поиск)
версии 3.x почему такой опции больше нет.

Что же пошло не так. Как раз из-за дельта индексов всё и
застопорилось. В начале всё было ещё быстро, данные добавились в базу
и пересчитался дельта индекс. Чем больше пакетов влилось, тем
медленнее пересчитывается этот дельта индекс. Получалось на один пакет
пересчёт всего дельта индекса который к тому моменты стал очень
большим. Пришлось вмешаться в этот процесс, остановить его, добавить
код который отключал дельта индексы при заливке и пересчитывал их
после. И через день всё заработало.

На будущее, packages.altlinux.org выдержит добавление нового бранча
(t7 ведь будет?) и по времени это займёт несколько дней.
Соответствующие изменения в од я добавлю.

-- 
Igor Zubkov
http://hi.im/ice


Подробная информация о списке рассылки Devel