Баг

Nov 22, 2015 21:55

- Висит! - звонок от заказчика был кратким, как тост в рабочее время на рабочем месте. - Опять висит.
В те времена на нас свалилась поддержка унаследованной системы, написанной непонятно когда неизвестно кем:
- Ну, разные программисты писали...
- А поддерживать почему не берутся?
- Да мы им за разработку не заплатили.
Что ж, резонно.
Удивительно, что при таком подходе у клиента остались исходники. На дельфи. Они, правда, не компилировались, потому что чего-то им не хватало, а другого чего-то, наоборот, было слишком много, а что-то третье было, но не той версии.
Примерно раз в месяц я их открывал, вдумчиво глядел в код и безуспешно пытался запустить.

Так вот, оно временами висело. Висело намертво. Висел супер-навороченный программно-аппаратный комплекс (кластер серверов, Oracle Enterprise и все такое) кадрового учета для отдела из восьми человек, и вернуть его к жизни в течение суток не было никакой возможности.

Дальше все происходило по стандартному сценарию.
После неравной битвы у тамошнего админа в Москве опускались руки. Он звонил нам в Питер, и руки опускались уже у нашего админа. Оба с опущенными руками, они сваливали проблему на меня, так как "не видят здесь аппаратной составляющей", я выписывал командировку и ехал на объект.
По приезду выяснялось, что "а сегодня вдруг все заработало":
- Представляете, вчера вообще никак, а тут сама починилась.
Сообщений об ошибках не было.
В логах пусто.
Видно, что процессор и память были загружены под 100%, но чем - непонятно.
Приходилось ехать обратно, на ходу обзирая попавшиеся под руку достопримечательности Москвы.

В прошлый раз оно так зависло в аккурат под Новый год. А сейчас конец марта.
По телевизору министр обороны рассказывал про новое здание управления:
- ... все компьютеры, сети, программное обеспечение - полностью отечественного производства...
- Вот оно как, - подумал я, - только что ведь от них вернулись, Oracle ставили на Intel-овские blade сервера. Кстати, а в какие дни оно раньше зависало?
Смотрю свои отчеты: 31 октября, 31 июля... та-ак, интересно...
Открываю код и начинаю внимательно читать.

Как говорится, дело было не в бобине - раздолбай сидел в кабине.
Программа время от времени формировала какой-то отчет за месяц и записывала его в базу, а начальную дату этого отчета программист вычислял просто: брал текущую дату, а месяц уменьшал на единицу - дешево и сердито.
И она, в общем, работала.
Кроме некоторых критических дней.
Вот сейчас программа пытается записать отчет за 31 февраля и выдает ошибку.
Ошибка перехватывается обработчиком.
Пишется в лог.
Лог хранится в базе в специальной таблице.
Туда заносится текущая дата и дата отчета.
То есть, 31 февраля.
Круг замыкается, у несчастной программы от этого тихо сносит крышу.
А пока я к ним еду, наступает первое число и все опять приходит в норму.

Вот интересно, как же они весь январь-то работали? Ведь должен получаться нулевой месяц.
Да просто в коде было прописано: если месяц меньше второго, отчет не строился.
Оно и к лучшему - январь месяц сложный, не до отчетов...
Previous post Next post
Up