Рабочее :: История одного бага или маленьким коммит запрещен

Итак, после ковыряния в коде 30-летней давности мне был доверен более интересный (с практической точки зрения) бажик в пользовательском интерфейсе (хехе).

Баг довольно неприятный, но совсем не критичный. Для начала немного введения:

Авиакомпании (операторы воздушных судов) могут подавать заявки на «полет» (флайт, flight) для планирования своей загрузки, это не настоящий полет, под него может не быть самолета, не заправлено топливо. Такой флайт называется «Proposal» и оператор может делать с ним все действия, которые его душе угодны — менять маршрут для снижения затрат на топливо, времени полета  или расстояния (и одно другому совсем не прямо пропорционально, например затраты на топливо сильно зависят от эшелона, а время полета от загруженности трасс) без какого либо уведомления органов управления воздушным движением. Затем оператор подтверждает полет и в системе создается новый флайт (с другим ID), при этом Proposal вариант остается и линкуется с «нормальным». Этот «нормальный» полет может быть изменен только при определенных условиях и в строго определенные моменты времени. Так вот проблема была в том, что система не показывала полет, который был отменен, но для которого имеется proposal вариант, в то время как должна была сообщать «вы ищете полет AFL777, от отменен, но есть Proposal». В итоге получалася этакий социальная «гонка» — один сотрудник оператора полет по какой-то причине отменял, второй, пытаясь найти этот полет получал «Not such flight» и начинал звонить в Help Desk со словами «Я тут создал полет и уже летчиков из кроватей вытаскиваю, а мне выдают «No such fligth»». В общем задача была исправить этот баг (который привнесли в систему 7 лет назад, к слову).

Я сразу полез в код с отладчиком в руках, закопался в самое нутро, нашел то место, где должен выдаваться результат из памяти и провел пару дней с дебаггером и тестами, чтобы исправить тот код который там был (не очень красивый, местами 🙂 ) и убрать костыли. Пятница, все тесты проходят на ура, баг исправлен, зову тилида на проверку. Ответ меня немного расстроил «Ого как ты глубоко забрался, нет, давай не будем трогать этот пакет, он слишком низкоуровневый , а завтра релиз- страшно, а ты еще не опытный, давай поправим вот в этой части (собственно UI, самый верхний, «окошечный» уровень)». Самое интересное, что этот в этом самом UI именно 7 лет назад другой программист потратил свое время на то, чтобы эти слои разделить и сделал он это довольно красиво (ну подумаешь не учел одной мелочи), а тут пришел такой вот чайник в виде меня и все сломал, потому что еще маленький 🙂

Ну да ладно, подрасту немного, вернусь к этому злополучному итератору, неделя прошла все равно не зря, покопался в коде «боевой системы» и даже немного посмеялся местами =)

Комментарии запрещены.