llivejo: (Default)
[personal profile] llivejo
Вчера снова был укушен в чувствительное место - вручную скомпилированный софт после апгрейда системы перестал работать.

Расскажу подробно (раз уж вы не поленились заглянуть сюда):
для аутентификации, авторизации и учета звонков VoIP у нас на одном из серверов запущен вручную скомпилированный (--with-experimental-modules с поддержкой embedded perl interpreter) сервер freeradius. Встроенный Перл (rlm_perl) позволяет самописной perl-программе иметь полный доступ к атрибутам RADIUS - для проверки пин-кода звонящего, для записи в базу длительности и стоимости звонка в зависимости от направления, etc. База на Mysql - даже и не спрашивайте, legacy code, сейчас бы я все написал на Python+PostgreSQL+PL/pgSQL.

И вот вчера, после добавления очередной voip-железяки в /etc/raddb/clients и рестарта freeradius эта конструкция перестала взлетать.

Ничто не предвещало беды: апгрейд с Debian Woody на Sarge произошел еще летом, без перезагрузки, все про него уже забыли, аптайм сервера - 469 дней, винты здоровы и RAID is clean...

Оказывается, в процессе апгрейда был обновлен perl с версии 5.6 до 5.8.x, а радиус продолжал использовать версию 5.6. После рестарта вкомпиленный в радиус интерпретатор не смог найти нужные модули типа strict и Mysql от старого перла. Катастрофа! Срочная перекомпиляция свежескаченного freeradius 1.0.5 порадовала ошибками другого рода: мол mysql handle не может быть использован несколькими threads одновременно, и вообще, ребята, не буду я с вами работать.

После нескольких часов ужимок и прыжков удалось исправить перловый код под новый rlm_perl, клонировать для каждой нити отдельное соединение с mysql, оттестировать звонки и задокументировать подробности инцидента.

Пообещал себе впредь собирать всё в виде пекеджей, с соблюдением зависимостей и тэдэ. Мультик-стайл™ это здорово, но грамотно собранный .deb - лучше :-)

December 2020

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
27282930 31  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 16th, 2026 10:46 pm
Powered by Dreamwidth Studios