Предвестник новой Эпохи

Обсуждаем разработку программного обеспечения

Сообщение vva » 14 июн 2007, 08:09

http://ru.worsethanfailure.com/Articles ... Epoxi.aspx

Предвестник новой Эпохи
13 июня 2007 г.
Автор Алекс Пападимулис

19 января 2038 года станет датой, которая навеки отразится в наших сердцах глубокими рубцами. Именно в этот день 32-битные целые, в которых хранится количество секунд с начала Эпохи, переполнятся и вызовут смерть и разрушения невиданные со времен ошибки 2000 года. Так же как и в 2000-м программы феерически грохнутся, железо взорвется, приборы сойдут с ума и начнут нападать на своих хозяев, а ядерные ракеты повсеместно вырвутся в безумном порыве из своих тесных шахт и похоронят мир под слоем радиоактивного пепла. Каспер Кван получил напоминание о надвигающейся погибели, когда одна из его систем внезапно упала.

Рухнувшая система была сторонним приложением и сделала она это из-за того, что отключилась база данных. Это было легко исправить, Каспер перезапустил базу данных. Он поднялась, а потом снова упала. Он перезапустил, она поднялась, потом упала. Вверх, вниз, вверх, вниз. Файлы журналов пролили свет на причины проблемы, источником оказался стартовый скрипт от поставщика приложения, который выглядел примерно так:

start oracle
sleep 1000000000
stop oracle

Стало ясно, почему скрипт вылетал. В эти выходные время пересекло отметку в 2^31-10^9 секунд, поэтому команда sleep вызывала переполнение и завершала работу, в результате база данных отключалась. Никто, включая поставщика, не мог объяснить, почему их стартовый скрипт давал команду на 30 с лишним летнее ожидание, а потом на выключение, но зато решение оказалось очень простым: поставщик сбрил под ноль все, что следовало после команды ожидания включительно.
Аватар пользователя
vva
Администратор
 
Сообщений: 2914
Зарегистрирован: 06 фев 2007, 13:33

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1