12 августа вышла новая версия ReOpenLDAP — форка общеизвестного OpenLDAP, с устранением массы ошибок и ряда доработок для стабильной работы репликации.
Эта версия, в некотором смысле, является юбилейной — 3 года с момента инициации проекта (публичный форк появился чуть позже). Всё это время ReOpenLDAP работает 24x7 в инфраструктуре ПАО МегаФон, обеспечивая высоконагруженную обработку запросов в multi-master кластере с full-mesh репликацией.
Версия 1.1.6 аккумулирует работу 8 месяцев этого года и включает:
- более сотни коммитов, в том числе более 50 исправлений ошибок;
- поддержку musl-libc, а также ряд доработок для совместимости и упрощения сборки;
- Continuous Integration на инфраструктуре Travis-CI и Circle-CI.
С этим релизом ветка 1.1 получает статус архивно-стабильной. В ней будут исправляться ошибки, но какая-либо разработка будет прекращена.
В свою очередь, работы в ветке 1.2 начнутся с переработки API в сопутствующих ldap-библиотеках с утратой совместимости с предыдущим версиями. Это позволит, с одной стороны, получить более прозрачное и удобное API, которое будет провоцировать меньше ошибок. С другой стороны, переработка API необходима для устранения неоднозначностей и адекватной работы статических анализаторов кода (Coverity, PVS-Studio и др.).
Вторым изменением в ветке 1.2 будет переход на актуальную версию движка хранения libmdbx. Которая, среди прочего, поддерживает управление геометрией и бесплатную авто-компактификацию с освобождением места на диске. С точки зрения пользователя, это позволит автоматически и безболезненно как увеличивать, так и уменьшать размер БД, в том числе без остановки сервера или деградации услуг.
К сожалению, новые возможности не даются бесплатно. Для возможности их реализации в libmdbx был существенно переработан (и ещё не зафиксирован) внутренний формат БД, с потерей совместимости с предыдущими версиями.
Пользуюсь случаем, отвечу на частый вопрос «Почему нет пакетов?»:
- ReOpenLDAP ориентирован на достаточно специализированные сценарии применения, для которых не представляется возможным создать универсальную конфигурацию и собрать соответствующий пакет. Во всех известных (авторам) случаях используются кастомизированные конфигурации (опции configure, включая возможность подключения модулей и оверлеев), в частности используются монолитные сборки с LTO.
- После анализа кода посредством Coverity (постепенно) стало очевидно, что требуется существенный рефакторинг API с нарушением совместимости. Далее, планируемые (и большей частью уже реализованные) доработки libmdbx также приведут к утрате совместимости по формату БД. Всё это вместе давало повод не формировать пакеты, так как последующие обновления нарушили бы совместимость и только огорчили пользователей.
- Авторы не владеют информацией (не имеют полноценного видения) о том, в какой именно конфигурации должен быть собран ReOpenLDAP для пакетирования. Поэтому мы (прежде всего) ждем встречной активности от тех, кто уже использует проект или планирует это сделать (состав компонентов и библиотек принципиально не изменится, поэтому всячески приветствуются pull-request-ы с пакетированием).
>>> Релиз на github