Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Истории эпичных факапов

У каждого программиста найдется история как он дропнул базу, завалил продакшен, не выключил видеосвязь и сказал что-то чего не следовало при заказчиках, etc, etc...

Расскажите такие истории, это ведь интересно!

Ах да! Здесь сидят только профессионалы, которые никогда ничего не роняли, поэтому историю можно начинать со слов «Однажды друг подруги моей мамы....»

Одна из моих историй для затравки: однажды друг подруги моей мамы отошел попить чай на 15 минут а в это время заказчики писали что продакшен лежит. После этого пью чай только с телефоном в руках.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn

Найкращі коментарі пропустити

Это было в 2001 или 2002.

Верховная Рада решила, что билеты УкрЗализныци должны печататься на украинском языке, а не на русском. Проблема только была в том, что софт для билетов 1) разрабатывался где-то в конце 80х для мейнфреймов 2) в Москве 3) доступа к исходному коду или продакшн УЗ не имел, только платили миллионы Москве за поддержку/обслуживание. Короче менять ПО не было вариантов.

Я тогда работал в конторе, которая разрабатывала софт для УЗ. В частности у нас была своя железяка с порезанным Линуксом на борту (as/mx router), которая стояла в сети между терминалами для продажи билетов (кассы) и мейнфреймом, где крутился собственно софт.

Custom дистрибутив Линукса и low-level код для обмена в сети писал наш Майк (Mike Gorchak), моя же задача была написать простенький сервер, который будет «читать» проходящий билетный трафик и на ходу переводить его с русского на украинский. Никакого ML и big data, тупо перевод по словарю. Писать переводчик без документации было интересно весело, потому что время от времени попадались «нестандартные» слова, которые переводчик не знал как переводить и складывал в отдельный лог, чтобы потом добавить в словарь.

Короче, про факап.

Меня отправили на Львовскую ж/д, где должна была стартовать опытная эксплуатация. Я сидел в ВЦ, проводил какие-то тесты/настройки железяки, по ssh. Обеденный перерыв, я решил пойти чего-то съесть и перед выходом сделал `shutdown -p` на тестовой железяке. Думаю вы догадываетесь, что было потом.

Когда я вернулся через 40 минут в комнатушке было человек 15, включая начальника ВЦ. Все билетные кассы на ж/д вокзале не работали и никто не мог понять почему. Сеть вроде есть, никаких ошибок нигде, а связи нет. Я начинаю что-то подозревать. Сажусь за комп. У меня было несколько ssh-сессий открыто и я понимаю, что вместо shutdown тестовой железяки, я выключил сервер который был в продакшн. Ой. Через пару минут кассы заработали и у меня была беседа с железнодорожниками. Надо сказать, львовяне очень интеллигентные и вежливые ребята.

Писали ми якось років з 10 назад софт для одного українського телеканалу (з трійки перших). Телебачення було бідне і дозволити собі професійний західний софт не могло. Значна частина того, що йшло в ефір (в тому числі прямий), робилось місцевими силами. Сиджу я якось вдома, година восьма вечора, вечеряю з родиною. Тут дзвінок на робочий:
-Доброго вечора. Ми з телеканалу Х, у нас тут новини, зараз буде телеміст з прем’єр-міністром, а у нас все зламалось і ми не знаємо як полагодити. Поки що пішли на рекламу, у нас є 45 секунд, щоб полагодити.
-Так покличте там вашого інженера Василя, я йому все пояснював...
-Він звільнився, тепер я на його місці, систему бачу сьогодні вперше. В нас 35 секунд залишилось...

Нічого, полагодили :)

Далекий 1993 год, ФТЛ — физико-технический лицей, юг Украины, друг соседа прохожего сидит после занятий и ковыряет резидентов, на этот раз учителем для исследовательской работы был выбран Int 17h — BIOS print services, нужно было перехватывать весь поток печати на принтер и перед определёнными словами вставлять последовательность супер-скрипта или саб-скрипта используя EPSON ESC/P 2 команды принтера. Ну чтобы вместо a^2 печаталось a2 и двоечка была маленькая, как настоящая степень. Приближалось время серьёзной контрольной с наличием какой-то высокой комиссии и хотели, чтобы текст выглядел прилично. Редакторы тогда только зарождались, поэтому писали всё в текстовых файлах, машины были 8086 с EGA и 8088 с CGA адаптерами, сильно не разгонишься, а графическая печать одного листа могла на матричном принтере занимать около 5-10 минут — не вариант однозначно, проще застрелиться, когда надо напечатать 200 экземпляров контрольной по 4 страницы в каждом.

Друг соседа прохожего с задачей справился и отрапортовал лаборанту, что можно печатать, вот только он забыл что ещё на ранней стадии чтобы проверить, что досовский резидент работает, он сделал замену буквы «р» на букву «г», а потом уже пилил основной функционал на асме. Но увлечённый этим процессом, он совершенно забыл об этой интересной автозамене.

Пока лаборант печатает с пяти компов одновременно, чтобы ускорить тормознутый процесс, друг соседа прохожего режется в Dangerous Dave 2 ( www.youtube.com/watch?v=tu4h6iwmg9Q ). И в конце уровня к нему возвращается память и осторожно спрашивает так лаборанта — а с текстом всё нормально, но так как текст контрольной показывать нельзя (это уже делал следующий резидент, который сохранял текст печати в буфер, а затем в файл), ему его не дают проверить, а лаборант не вчитывается особо и кивает головой. Друг соседа прохожего уже торбит лаборанта серьёзнее и лаборант начинает зачитывать в слух:

Сумма стогон гавнобедгенного тгеугольника гавна ...

Друг соседа прохожего сползает под стол и пытается там забарикадироваться. Крик БЛЯ был слышен даже у сторожа, напечатано было уже 500 листов %) Срочно был правлен код и после подробной вычитки напечатанного первого экземпляра, друга соседа прохожего подсрачником выставляют за дверь и пишут докладную директору за расход 500 листов. Награда нивелировала наказание, но вход в компьютерный класс был забанен на 2 недели, приходилось сидеть на Atari 65/XE вместо PC :)

В 2007 году работал я на фабрике, которая производила очки по заказу магазинов оптики.

Эти магазины посылали заказы в виде файлов специального формата. Программа, написанная на C#, обрабатывала эти файлы и помещала заказы в главную систему управления производственным процессом. Эта система была написана много лет назад на языке COBOL и работала очень надежно.

Правда, один раз она сбойнула. Дело было в том, что рассчитана она была на прием максимум 5000 заказов в течение дня. Когда-то давно это действительно было очень много. Но в один прекрасный день одна крупная сеть магазинов оптики показала вечером по телевизору рекламу под девизом «Закажите две пары очков по цене одной». На следующий день пришло сразу более 10000 заказов и система захлебнулась. Программисты ее потом неделю чинили.

Но это было задолго до моего прихода. В остальном система всегда работала без проблем. Но однажды произошел внезапный сбой. В полном соответствии с законом Мерфи он случился в 6 часов вечера, сразу после того, как все программисты ушли домой.

Произошло нечто очень странное. Система была забита множеством заказов, причем одни и те же заказы были добавлены десятки раз. Систему пришлось отключить. В результате ночная смена осталась без работы и производственная линия остановилась.

На следующий день я занялся расследованием причин этого сбоя. В логах программы обработки файлов заказов была информация о нескольких исключениях, которые произошли незадолго до остановки работы системы. Я подумал, что это является причиной сбоя, и начал анализировать исходные тексты программы.

За день я просмотрел весь код, но ничего не обнаружил. Все исключения были вызваны незначительными ошибками, которые никак не влияли на работу программы.

Процесс обработки файлов заказов был очень простым. Файлы поступали снаружи и записывались в рабочую директорию. Каждые 5 минут вызывалась программа для обработки фалов. После обработки файлы перемещались в backup-директорию. Все это работало в Windows.

Наконец я решить проверить bat-файл, который запускал на выполнение программу для обработки файлов с заказами. Этот скрипт автоматически запускался на выполнение каждые пять минут.

В нем было буквально три строчки кода. Первая команда запускала цикл по именам всех файлов в рабочей директории. В цикле было две команды. Одна запускала программу для обработки файла. Следующая команда перемещала обработанный файл из рабочей директории в backup-директорию. Это было сделано при помощи команды move. Все было ясно и понятно и выглядело совершенно логичным.

И вдруг мне пришла в голову мысль проверить, как работает команда move. И тут меня ждал сюрприз. Оказалось, что команда move не перемещает файл, если в целевой директории уже есть файл с таким же именем. В этом случае файл оставался в рабочей директории.

Не знаю, почему так происходило. Я всегда считал, что команда move всегда затирает второй файл безо всяких сообщений об ошибках (и это так и работает, по крайней мере в Windows 7 и Windows 10). Но в используемой версии Windows почему-то было по-другому.

Теперь стало совершенно ясно, что произошло. Какой-то клиент по ошибке прислал два раза файл с тем же самым именем. Первый раз файл обработался нормально и был перемещен в backup-директорию. Через несколько минут этот же файл пришел снова. Они тоже был обработан, но не перемещен. Таким образом файл остался навсегда в рабочей директории и был обработан десятки раз.

Просто никто никогда не протестировал, что будет, если дважды послать один и тот же файл. И такая ситуация никогда не случалась.

После этого случая я стал еще более параноидальным и стал еще тщательнее проверять свой код. Это помогает мне писать надежные программы (хотя и приводит иногда к конфликтам с менеджерами, которые считают, что я работаю слишком медленно).

Сделали кофейный автомат так, что иногда в нем случался конфликт между приложениями за доступ к базе данных и он не мог налить кофе. Технически ничего особенного, но главное, как это выглядело.

Человек подходил, выбирал на экране вид кофе, потом параметры сахар/молоко/крепкость, потом нажимал кнопку «Ок». На экране стартовала красивая анимация, выпадал стаканчик, потом с таким солидным жужжанием выдвигалась хрень, из которой наливается кофе. Тут автомат понимал, что он нифига не знает, как что готовить и процесс прекращался. На экране появлялась красивая надпись «Спасибо, заходите еще», хрень с жужжанием задвигалась обратно. В стаканчик падала ровно одна капля (остаток от предидущего заказа).

Баг в общем редко воспроизводился. Наверное, где-то один из 100 клиентов получал каплю в стаканчике вместо кофе.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

лет 10 тому назад работал в конторе, где команда писала софт для тюрем.
на кухне слышал разговоры про фикс багов типа:
«на пересылке исчезают заключённые».
Оказалось, переменная хранилась в памяти и в базе,
ну что-то там накосячили, как это бывает, типа dirty reading.

с такой компьютеризацией айтишники станут уважаемыми в криминальном мире после очередной пачки багов, повлекшей внезапную амнистию заключенных :)

писали это дело сишники, и мы периодически общались на кухне.
Подходит знакомый сишник, на лице написано: имеет что сказать.
Боковым зрением проконтролировав свой плов, вращающийся в микроволновке,
я показываю, что весь — внимание.

Пафосно отхлебнув чаю, сишник мне говорит:
— я вас ненавижу.
Я в этот момент думал о том, сразу ли заварить кофе или потом,
поэтому не среагировал.
Выдержав паузу, сишник поясняет: видел, как вы дебажите Джава-код в Идее..
И стал рассказывать о той боли, с которой они живут в своей среде разработки.

Просто раньше он думал, что это у всех так-же, как у них, но тут осознал,
что есть червячки, которые живут в яблоках.

«на пересылке исчезают заключённые».

youtu.be/lwwDEMBTpTw

Товарищ в 2012 году, отдавая мне в работу сайтец местного новостного ресурса, забыл снять галочку «удалить на сервере» в eclipse. Занимательный опыт восстановления файлов в ext4, реанимации новостей за несколько суток по гугл-кешу, и множество прочих занимательных конкурсов от тамады по имени Валера :)

Не технический фейл, но все же что-то за что стыдно... Надо было мне что-то сделать «на вчера», код писать было лень и я в глубоких недрах интеренета нашел бесплатную библиотечку, что делает почти то, что мне надо. Скачать ее только было очень нелегко — предлагали заполнить огромную форму, мыло только корпоративное и так далее. Большинство полей были заполнены стандартным «dsfddff», а вот в последее меня черт дернул написать что-то вроде «fuck off»:) Типа все равно это никто не читает. Но я жестоко ошибался, так как у либы было всего несколько сот скачиваний в год и разраб все читал, как оказалось. На следующий день меня ждало стремное письмо от HR, со скришотами письма это разраба, где он frustrated, сочувствует компании, где такие как я работают и вообще желает моей крови. Вони было много и удалось замять письмом от компании с сожалениями. Так же немного потаскали к руководителям не очень выского полета, в беседах с которыми выяснилось, что они сами в эти формы часто вбивают fuck:)
Мне этому разрабу, кстати, удалось мелко отомстить — он спустя некоторое время спрашивал,используем ли либу, мол, он хочет нас на сайт свой добавить, как клиентов. Но,естественно, либу эту я уже принципиально не использовал.

Не вижу тут ни одного долбодятла. Просто не сошлись характерами :)

Ссылка автоматом генерировалась по заполнению всех полей в форме. Просто кем надо быть, чтобы это читать и потом еще жаловаться? Я, конечно, был немного не прав, но и сейчас оскорбления от вас выслушивать не желаю. Ну и скажите еще, что у вас никогда не бомбило от многостраничных форм.

Ну так случайные буковки вбивать — это тоже не очень уважительно. Ведь как вы сами говорите: "

А тут автору нравилось читать кто и откуда скачать его поделие хочет

". Тем более, что я как бы не ставил цель никого оскорбить или унизить. Не занимайтесь чрезмерным морализаторством.

Епта, неужели ты думаешь, что-то кто-то сидит и выдает ссылки вручную? Это была обычная электронная форма регистрации на скачивание (пусть и неоправданно большая). Или ты думаешь, что там надо было сочинение написать на тему использования этой либы?
Вообще надо быть полным кретином, чтобы на такие вещи оскорблятся. Мне вот иногда саппорт пересылает письма с отзывами от кастомеров, так там моя шалость и рядом не валялась.

Почему и нет. Если скачек только 1-2 в год.

Нет, потому что нет. Ссылка появилась через секунду после нажатия на кнопку Submit. Ну и вообще такие вещи автоматизированы.

Никогда с такими не сталкивался. Все придерживались деловой этики в деловой переписке.

Ну запилите более-менее популярное мобильное приложение или сайт с посещаемость больше двух человек в день и узнаете о себе много нового.

Я сейчас в энергокомпании работаю, так что юзер=кастомер.

Нет, просто скорее всего вещами, которые вы делаете, не пользовались миллионы людей.

Но да с массмаркетом напрямую дела не имел никогда.

Ну а те, кто имеют, уже третий слой кожи отрастили. Заодно ругательный английский хорошо прокачивается. Я вот недавно узнал, что я half-baked moron оказывается:D

Шесть или семь лет назад было. Понятное дело, что сейчас так делать не стал бы (но все равно забил бы все sdfdsdsd).

Что-то вроде недоделаного мудака.

Кастомеров не выбирают:) Кстати, матерщинники скорее веселят, а вот бесят те, кто начинают фразой: «Я сам программист...»

Вас там вроде не было.

Сказал бы, что собрался проверить автозамену матюков в тексте и экранирование пробелов — и всего-то.

забил когда-то давно тестовые посты с тайтлами «one some» «two some» «three some». и тут кастомер решил зайти на стейдж и показать кому-то демо...

меня всегда удивляли люди, которым не лень осмысленные названия вводить в приложения для тестирования

Соромно вам було, судячи з допису, не через те, що написали фактично *** на чужому заборі, а виключно ж бо вас на цьому попалили, як останнього л***ру.

Не звільнили вас тоді справді даремно. Бо правильних висновків з історії ви не зробили й, певно, не могли зробити, ще й «принципиально не использовал» бібліотеку через власноруч ініційований конфлікт із автором. Це взагалі якась бляха: «мелко отомстить» людині, яка розробляє безкоштовну бібліотеку — ну, дно.

Соромно вам було, судячи з допису, не через те, що написали фактично *** на чужому заборі, а виключно ж бо вас на цьому попалили, як останнього л***ру.

Диагнозы по фото не ставите случайно?

Не звільнили вас тоді справді даремно.

И правда, до сих пор жалею — шесть месячных зарплат в качестве компенсации мне не помешали бы, может быть на год раньше дом купил бы. Ну и кроме того, в цивилизованных странах обычно понимают, что люди совершают ошибки и увольнение — это крайняя мера и лучше от нее никому не станет. Кроме того, уволить одного специалиста и нанять другого — это долго и дорого.

Бо правильних висновків з історії ви не зробили й, певно, не могли зробити,

Мамкин психоаналитик.

ще й «принципиально не использовал» бібліотеку через власноруч ініційований конфлікт із автором

Я с ним и не думал инициировать конфликт и уж тем более не было желания кого-то специально оскорбить.

Це взагалі якась бляха: «мелко отомстить» людині, яка розробляє безкоштовну бібліотеку — ну, дно.

Дно у вас почему-то подгорело. Да, я считаю, что у меня были основания не использовать эту либу,в том числе и не из соображений «мелко отомстить».

Сделали кофейный автомат так, что иногда в нем случался конфликт между приложениями за доступ к базе данных и он не мог налить кофе. Технически ничего особенного, но главное, как это выглядело.

Человек подходил, выбирал на экране вид кофе, потом параметры сахар/молоко/крепкость, потом нажимал кнопку «Ок». На экране стартовала красивая анимация, выпадал стаканчик, потом с таким солидным жужжанием выдвигалась хрень, из которой наливается кофе. Тут автомат понимал, что он нифига не знает, как что готовить и процесс прекращался. На экране появлялась красивая надпись «Спасибо, заходите еще», хрень с жужжанием задвигалась обратно. В стаканчик падала ровно одна капля (остаток от предидущего заказа).

Баг в общем редко воспроизводился. Наверное, где-то один из 100 клиентов получал каплю в стаканчике вместо кофе.

это пожалуй лучшее поставил себя на место клиента плакалЪ ))

Представил чёта как бы эту историю рассказали разработчики софта для банкоматов... :)

В 2007 году работал я на фабрике, которая производила очки по заказу магазинов оптики.

Эти магазины посылали заказы в виде файлов специального формата. Программа, написанная на C#, обрабатывала эти файлы и помещала заказы в главную систему управления производственным процессом. Эта система была написана много лет назад на языке COBOL и работала очень надежно.

Правда, один раз она сбойнула. Дело было в том, что рассчитана она была на прием максимум 5000 заказов в течение дня. Когда-то давно это действительно было очень много. Но в один прекрасный день одна крупная сеть магазинов оптики показала вечером по телевизору рекламу под девизом «Закажите две пары очков по цене одной». На следующий день пришло сразу более 10000 заказов и система захлебнулась. Программисты ее потом неделю чинили.

Но это было задолго до моего прихода. В остальном система всегда работала без проблем. Но однажды произошел внезапный сбой. В полном соответствии с законом Мерфи он случился в 6 часов вечера, сразу после того, как все программисты ушли домой.

Произошло нечто очень странное. Система была забита множеством заказов, причем одни и те же заказы были добавлены десятки раз. Систему пришлось отключить. В результате ночная смена осталась без работы и производственная линия остановилась.

На следующий день я занялся расследованием причин этого сбоя. В логах программы обработки файлов заказов была информация о нескольких исключениях, которые произошли незадолго до остановки работы системы. Я подумал, что это является причиной сбоя, и начал анализировать исходные тексты программы.

За день я просмотрел весь код, но ничего не обнаружил. Все исключения были вызваны незначительными ошибками, которые никак не влияли на работу программы.

Процесс обработки файлов заказов был очень простым. Файлы поступали снаружи и записывались в рабочую директорию. Каждые 5 минут вызывалась программа для обработки фалов. После обработки файлы перемещались в backup-директорию. Все это работало в Windows.

Наконец я решить проверить bat-файл, который запускал на выполнение программу для обработки файлов с заказами. Этот скрипт автоматически запускался на выполнение каждые пять минут.

В нем было буквально три строчки кода. Первая команда запускала цикл по именам всех файлов в рабочей директории. В цикле было две команды. Одна запускала программу для обработки файла. Следующая команда перемещала обработанный файл из рабочей директории в backup-директорию. Это было сделано при помощи команды move. Все было ясно и понятно и выглядело совершенно логичным.

И вдруг мне пришла в голову мысль проверить, как работает команда move. И тут меня ждал сюрприз. Оказалось, что команда move не перемещает файл, если в целевой директории уже есть файл с таким же именем. В этом случае файл оставался в рабочей директории.

Не знаю, почему так происходило. Я всегда считал, что команда move всегда затирает второй файл безо всяких сообщений об ошибках (и это так и работает, по крайней мере в Windows 7 и Windows 10). Но в используемой версии Windows почему-то было по-другому.

Теперь стало совершенно ясно, что произошло. Какой-то клиент по ошибке прислал два раза файл с тем же самым именем. Первый раз файл обработался нормально и был перемещен в backup-директорию. Через несколько минут этот же файл пришел снова. Они тоже был обработан, но не перемещен. Таким образом файл остался навсегда в рабочей директории и был обработан десятки раз.

Просто никто никогда не протестировал, что будет, если дважды послать один и тот же файл. И такая ситуация никогда не случалась.

После этого случая я стал еще более параноидальным и стал еще тщательнее проверять свой код. Это помогает мне писать надежные программы (хотя и приводит иногда к конфликтам с менеджерами, которые считают, что я работаю слишком медленно).

В 1996 году работал зять друга моего соседа в одном украинском банке, и разрабатывали они банковскую систему. Руководил всем один крутой программист, он же по совместительству и начальник IT-отдела. Долго систему делали, и вот пришло время ее внедрять.

Но сначала надо было ее в Нацбанке сертифицировать. Решил начальник сервер вместе с системой в Нацбанк отвезти, для чего банк выделил машину с водителем. Решили вечером выехать, чтобы к утру в Киеве быть. Вот уже вечер настал, и шофер с машиной прибыл, но вдруг в программе баг обнаружился. Сел начальник за компьютер, чтобы быстренько его исправить, и просидел так всю ночь. Но утром все-таки собрались и уехали.

В Нацбанк приехали, а система опять не запускается. Два дня там сидели, пытались исправить, но так и не получилось. Уехали обратно. Но потом через несколько недель все-таки сертифицировали.

Сначала планировалось, что новая система будет работать некоторое время параллельно со старой, чтобы в случае возникновения проблем на старую откатиться. Но разработка заняла времени больше, чем ожидалось, начальство банковское торопит, и принял начальник смелое решение: старую систему остановить, а новую запустить. Все равно ведь все программисты крутые, проблем не должно было быть. И вот собрались новую систему запускать в определенный день, в понедельник.

А надо сказать, что у начальника с этого понедельника давно уже был запланирован отпуск и перенести он его никак не мог. И вот в пятницу собрался он уже уходить с работы, но пришла ему в голову гениальная идея, он ее быстренько в коде реализовал, написал об этом записку и оставил ее на столе. И уехал в отпуск.

Приходят программисты в понедельник с утра на работу, пытаются новую систему запустить, а она не запускается. А старая уже не работает. Час проходит, а вся работа в банке стоит. Начальство банковское уже нервничать начинает. Наконец нашли записку на столе. Разобрались, что к чему и таки запустили.

Тут полезли ошибки изо всех щелей. Обнаружилось еще к тому же, что два отчета забыли заимплементировать, которые в Нацбанк каждый день посылать надо. В общем, скучать не пришлось. Но программисты ударно поработали, две недели до поздней ночи каждый день и еще в выходные, и скоро все уже более-менее работало.

А дальше уже все нормально работало. Только однажды перепутали тестовое окружение с рабочим, и насоздавали проводок на несколько сот миллионов гривен. Но быстро исправили.

Подборка Димы Малеева про программирование или дизайн, которые привели к смерти людей:
twitter.com/...​tatus/1065664470616174592

Послать нах по net msg но не конкретного адресата а всех кто в сети считается? 🙄

1. Заменяли в одном провайдере Интернет биллинговую систему. Тогда еще в моде была оплата по трафику, их старая система трафик пережевывала медленнее, чем он поступал. Поэтому от стандартной практики, когда некоторое время системы работают параллельно, заказчик отказался и просил внедрить «вчера» вместо двух-месячного процесса. Мы его предупредили о рисках и подготовили переключение. Собственно факап — мы переключаем, видим запросы и ответы на наш радиус; абоненты массово говорят что они не могут подключиться, обваливают звонками АТС суппорт-центра провайдера (и заодно и внутреннюю АТС) и вся компания (800 человек) останавливается. Мы пытаемся отлаживаться «по живому» но что-то непонятно — к нам пакеты приходят и команды уходят. Так проходит пару дней. Проблема была в сетевой карте одного из серверов, которая работала нормально при небольшой нагрузке но временами «застывала» при большом трафике....
// С ними же еще общались сравнительно недавно по поводу формы времени — по стандарту система поддерживалась 13 лет, соответственно и даты в форме ввода мы сделали выбор года (x: x+13). Через 13 лет пришлось им перекомпилировать исходники с (y; y+*).

Парочка более масштабных факапов (не мое, но лично знаком с некоторыми виновниками торжества)

1. I accidentally my EBS. The whole thing.

At 12:47 AM PDT on April 21st, a network change was performed as part of our normal AWS scaling activities in a single Availability Zone in the US East Region. The configuration change was to upgrade the capacity of the primary network. During the change, one of the standard steps is to shift traffic off of one of the redundant routers in the primary EBS network to allow the upgrade to happen. The traffic shift was executed incorrectly and rather than routing the traffic to the other router on the primary network, the traffic was routed onto the lower capacity redundant EBS network. For a portion of the EBS cluster in the affected Availability Zone, this meant that they did not have a functioning primary or secondary network because traffic was purposely shifted away from the primary network and the secondary network couldn’t handle the traffic level it was receiving. As a result, many EBS nodes in the affected Availability Zone were completely isolated from other EBS nodes in its cluster. Unlike a normal network interruption, this change disconnected both the primary and secondary network simultaneously, leaving the affected nodes completely isolated from one another.

2. I accidentally my ELB. The whole thing.

The service disruption began at 12:24 PM PST on December 24th when a portion of the ELB state data was logically deleted. This data is used and maintained by the ELB control plane to manage the configuration of the ELB load balancers in the region (for example tracking all the backend hosts to which traffic should be routed by each load balancer). The data was deleted by a maintenance process that was inadvertently run against the production ELB state data. This process was run by one of a very small number of developers who have access to this production environment. Unfortunately, the developer did not realize the mistake at the time. After this data was deleted, the ELB control plane began experiencing high latency and error rates for API calls to manage ELB load balancers. In this initial part of the service disruption, there was no impact to the request handling functionality of running ELB load balancers because the missing ELB state data was not integral to the basic operation of running load balancers.

3. И, конечно, I accidentally my S3. The whole thing

The Amazon Simple Storage Service (S3) team was debugging an issue causing the S3 billing system to progress more slowly than expected. At 9:37AM PST, an authorized S3 team member using an established playbook executed a command which was intended to remove a small number of servers for one of the S3 subsystems that is used by the S3 billing process. Unfortunately, one of the inputs to the command was entered incorrectly and a larger set of servers was removed than intended. The servers that were inadvertently removed supported two other S3 subsystems. One of these subsystems, the index subsystem, manages the metadata and location information of all S3 objects in the region. This subsystem is necessary to serve all GET, LIST, PUT, and DELETE requests. The second subsystem, the placement subsystem, manages allocation of new storage and requires the index subsystem to be functioning properly to correctly operate.

Пилил SSO инеграцию с UserVoice, а там каждый юзер уровня админ стоил денег. Финальный тест был посоздавать юзеров на клиентском аккаунте. Естественно создалось несколько админских юзеров и мне приходит сообщение от шефа, что мы должны клиенту пару тыщ долларов. Но вроде разрулили как-то с техподдержкой и не пришлось платить кровные.

Подкину аналогичных админских историй из своей коллекции.

Несколько самых ярких:

-----------------------------------------------------------------
Одно из самых ярких впечатлений от почты — ещё «детского» периода, когда я был дежурным инженером — как два сервера пытались друг на друга отправить накопившиеся запасы почты. Расчётка разослала абонентам сообщения — по uucp, для удобства — те влились и пошли раздаваться. А у абонентов половина контактов была неверная. Соответственно отлупы собрались и были готовы отдаться обратно. А тем временем новая порция подвалила. Итак: стоит sivka — uucp сервер — что-то вроде P/150, LA ~10 созданный несколькими стволами разгребальщиков почты, SMTP закрылся по RefuseLA. Напротив через один свитч стоит unicorn — типа relay2 — что-то вроде P/200, LA ~10 созданный несколькими стволами разгребальщиков почты, SMTP закрылся по RefuseLA. Sivka активно ждёт возможности отправить ~1500 писем на unicorn, unicorn — на sivka. М-да, они так ещё долго могли стоять...

А некто К., попав в стажёры и получив логины на всех трёх тогдашних ключевых серверах — первым делом расставил себе форварды: на sivka — форварды на burka и merin, на burka — на sivka и merin, на merin — на sivka и burka. С первым письмом включавшим его в получатели — узел упал. HopCount=25, сработал бы на 33 миллионах писем, но что-то мне смутно помнится, что отлупы он бы тоже получил...

----------------------------------------------------------------
27 августа 2000 года. 4 часа дня. Вбегает девочка из бухгалтерии: «Вы знаете? Останкинская башня горит!»

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

Ближе к 5 вечера. Звонок человека из M.C.I.: «Вы знаете, минут через 15 огонь доберётся до наших аппаратных, так что мы выключаем аппаратуру.» Через пару минут пропадает канал до M9. NOC срочно оптимизирует раутинг. Сидим, чувствуем себя причастными к великим событиям.

Звонок юзера. Все дежурные заняты, забираю на себя.
Юзер: — У вас пропал канал на Москву.
Я (грустно): — Да, пропал.
Юзер: — Причина та о которой я думаю?
Смотрю на экран где netscape рисует горящую башню. О чём он может думать? Наверно, о том же.
Я: — Да, причина та о которой Вы думаете.
Юзер: — Спасибо. (Кладёт трубку)
--------------------------------------------------------------------
Жил-был на edge раутере (с BGP fullview) redistribute map BGP->OSPF, прикрытый redistribute list’ом с deny any. В один сильно не прекрасный момент один из нокеров решил устранить лишнюю сущность в виде list’а.:) Тот из закрытого превратился в пустой и потому открытый.

Дежурный удивлённо наблюдал как NAS’ы (которые были от 2511 до 5300) по очереди пропадали из видимости.:) Половина кошек просто перезагрузилась. Другая половина осталась в ROMMON’е, и канальщикам до конца дня была работа ездить по площадкам дёргать anykey.
----------------------------------------------------------------------
Звонит юзер.
— Здравствуйте, у нас выделенный канал...
Телефонистка молча форвардит на канальный отдел.
— Здравствуйте, у нас выделенный канал...
Канальщик:
— Да-да
— У нас не работает ваш POP3 ящик
Канальщик молча форвардит на техподдержку диалапа.
— Здравствуйте, у нас выделенный канал...
Инженер техподдержки диалапа молча форвардит на канальный отдел.
— Здравствуйте, у нас выделенный канал...
Канальщик:
— Да-да
— У нас не работает ваш POP3 ящик
Канальщик молча форвардит на техподдержку диалапа.
— Здравствуйте, у нас выделенный канал...
Инженер техподдержки диалапа молча форвардит на канальный отдел.
— Да вы за$%^ли форвардить! У меня POP3 ящик!
Канальщик, услышав магическое слово непригодного для печати характера, молча форвардит на юриста. Ибо инструктировали — при наездах клиентов переключать на юриста.

... Клиент дошёл до генерального директора.
После этого всех проинструктировали 1) предупреждать, что переключает, и куда переключает, 2) объяснять transfer target’у (как это по-русски?) суть проблемы, 3) и просто попытаться вначале разобраться.

Почитал ЖЖ — отдельная эпичная история с STP — было нечто похожее в конце 90-х , когда мы делили здание с укрсоцем и сделали общую сеть , причем я не имел доступа к их оборудованию. Ядро нашей сети было на НР AdvancedStack Switch 2000 к которому были подключены 4 100VG AnyLAN хаба . Так вот, в один из моментов вся четверка дружно вывесилась, маркеры занятости были схвачены мощно аплинками на свитч, который стал похож на новогоднюю елочку. Сеть сдохла.
Отодрали линк на соседей со свитча — все заработало.
Пришли через полчаса с извинениями. Техник отключил компьютер в одном из кабинетов, унес его, оставив патч висящим из розетки на коробе. Тетя, работавшая в кабинете, решила, что непорядок — и впихнула второй конец патча в соседнее гнездо, которое было скоммутировано и ушла пить чай к подругам,закрыв кабинет.

Пам’ятаю, в нас у локалці на трішки більше ніж 100 свічів (гуртожиток і мікрорайон поруч) регулярно влаштовували кільця. В принципі, працювати можна було: кільце — генератор трафіка із певною періодичністю перемикалося на різні сегменти й інші в цей момент працювали.

это не факап, это не относится к Айти. Жаль человека

Та блин,это просто ужас..не факап. Там всех жаль

https://******.it/2018/11/15/agile-sucks/
дивитися відео

1) Один кот знакомого сис. админа решил обновить пхп на боевом американском сервере с 100 сайтов под центосью... а потом решил откатиться назад и не читая что там оно удалит в зависимостях нажал Yes и сломал всё к херам. К 2-м часам ночи каждый пакетик из длинной цепочки зависимостей был установлен вручную и сервер заработал.
2) Тот же кот знакомого сис. админа в пятницу вечером уходя домой случайно по ssh потушил корневой сервак отвечавший за интернет в одной из локальных сетей на Павловом Поле. Думаю у абонентов были хорошие выходные на свежем воздухе т.к. саппорт по выходным тогда ещё не работал.
3) На этот раз уже проделка не кота, а менеджера — будучи подключённым к нескольким сервакам по rdp лёгким движением руки менеджер грохнул 40-гиговую базу прода...А потом спросил — «А у нас же бэкапы есть?» Бэкапы были. Благо был вечер и на стройках которыми управляла та система никого уже не было.

Писал уже — отмечал 40-летие после работы, вылетела сетевуха на одном из критичных серверов под Novell Netware 6.5. В состоянии хорошего обутылоченья менял карту и поднимал сервер.
2. опустил не тот контроллер на SAN — у кластера вмваре разьехался мозг, куча виртуалок гонимые НА удрали на хайпервайзор, где был накручен по дурному ресурс пул. Слава Богу все вовремя увидел и поднял, но телефон покраснеть успел-таки.

Однаджи друг сусіда одного знакомого програмізда задрімав на мітингу, але не хропів.
... попросили на мітингах бути активнішим.

десь я цю байку чув, тільки не про ВА, а про одмніна, той закривався і хропів в серверній так, що посуда на кухні дрижала. От так його і вичислили.

Однажды друг подруги моей подруги ушол програмизды.... до сих пор не вернулсо.

звідти ще ніхто не повертався

так статті про вийтішніков — фейк?

1) Приложуха для школьников канады должна была отправлять нотификашки если на улице пурга и в школу идти не надо. Пляски с ключами вылились в баг и весь класс не получил нотификашки. на ~20 людей ненавидящих хохлов в мире стало больше))

2) Во время записи QA работы приложухи на девайсе на камеру с другого девайса в комнату ворвался ничего не подозревающий лысый бекендщик зигуя(просто прикола ради). Заказчики были из Израиля и видос надо было переделывать

3) После крупного апдейта когда надо было вручную обновить сервак т.к. менялась локальная конфигурация и я написал git pull не под тем юзером. Права слетели и на многие запросы посыпались 500. Мощная система логирования ошибок с записями куда только можно(и в логи и в бд и на мыло) через минуту добила сервак окончательно до 502. Это был мой первый день на проекте)))

4) Надо было добавить иконку в приложуху. Пока дизайн был в процессе кто-то добавил маленькие сиськи вместо иконки(сиськи как раз норм, просто иконка маленькая). Никто не заметил как это ушло на прод))

мой первый день на проекте
надо было вручную обновить сервак

П — процессы

Далекий 1993 год, ФТЛ — физико-технический лицей, юг Украины, друг соседа прохожего сидит после занятий и ковыряет резидентов, на этот раз учителем для исследовательской работы был выбран Int 17h — BIOS print services, нужно было перехватывать весь поток печати на принтер и перед определёнными словами вставлять последовательность супер-скрипта или саб-скрипта используя EPSON ESC/P 2 команды принтера. Ну чтобы вместо a^2 печаталось a2 и двоечка была маленькая, как настоящая степень. Приближалось время серьёзной контрольной с наличием какой-то высокой комиссии и хотели, чтобы текст выглядел прилично. Редакторы тогда только зарождались, поэтому писали всё в текстовых файлах, машины были 8086 с EGA и 8088 с CGA адаптерами, сильно не разгонишься, а графическая печать одного листа могла на матричном принтере занимать около 5-10 минут — не вариант однозначно, проще застрелиться, когда надо напечатать 200 экземпляров контрольной по 4 страницы в каждом.

Друг соседа прохожего с задачей справился и отрапортовал лаборанту, что можно печатать, вот только он забыл что ещё на ранней стадии чтобы проверить, что досовский резидент работает, он сделал замену буквы «р» на букву «г», а потом уже пилил основной функционал на асме. Но увлечённый этим процессом, он совершенно забыл об этой интересной автозамене.

Пока лаборант печатает с пяти компов одновременно, чтобы ускорить тормознутый процесс, друг соседа прохожего режется в Dangerous Dave 2 ( www.youtube.com/watch?v=tu4h6iwmg9Q ). И в конце уровня к нему возвращается память и осторожно спрашивает так лаборанта — а с текстом всё нормально, но так как текст контрольной показывать нельзя (это уже делал следующий резидент, который сохранял текст печати в буфер, а затем в файл), ему его не дают проверить, а лаборант не вчитывается особо и кивает головой. Друг соседа прохожего уже торбит лаборанта серьёзнее и лаборант начинает зачитывать в слух:

Сумма стогон гавнобедгенного тгеугольника гавна ...

Друг соседа прохожего сползает под стол и пытается там забарикадироваться. Крик БЛЯ был слышен даже у сторожа, напечатано было уже 500 листов %) Срочно был правлен код и после подробной вычитки напечатанного первого экземпляра, друга соседа прохожего подсрачником выставляют за дверь и пишут докладную директору за расход 500 листов. Награда нивелировала наказание, но вход в компьютерный класс был забанен на 2 недели, приходилось сидеть на Atari 65/XE вместо PC :)

оно все в графике печатало

Да запросто принтеры (-ра?) уже понимали неский свой графический входящий формат и умели так делать.

ЗЫ: походу в 93-м уже даже MS Word был кажется. Т.е. тот который уже на «настоящем» MS Windows 3.1x

MS Windows 3.1x

Оно не работало на 8086 и требовало двойку минимум.

На двойках тоже едва тянуло, у нас он более-менее ехал на 386.

таки да и кажется что-то побольше гигамегабайтов памяти.

С чирайтером я познакомился уже на первом курсе универа и он работал в графике под досом и печатал в основном в графике. Адище ещё то, особенно с клавиатурным вводом. Лексикон — помню, что был срашно уродливый, как и чирайтер. Было ещё «слово и дело», отличный редактор, но на тех компах после нажатия на каждую букву можно было идти пить чай, тормозило так, что невозможно было работать.

Лексикон запускался.
ЕС 1841(8088 + ЦЖА).

Потрібно було протестувати веб фаервол, нагенерити 500 гб репортінг даних.
Скачали з нету файл з топ 100 млн веб сайтів і з допомогою простого скріпта з 5 серверів які фейкали різні ір кинули спам на фаєрвол, на всі вихідні, який повинен був слати ці всі реквести в /dev/null , а він натомість виходив в інтернет. Заддосили купу сайтів, получили купу офіційних комплейнів від урядових організацій, ISP, InfoSec-и пи*ди дали, бо те що там прону було 50% це такоє, так там ще й чп, айсіс, алькаїда і купа іншого гівна була XD
це все йшло з потужної лаби одного «лідера ринку» на каліфорнійщині

Как-то, когда деревья еще были большими, друг соседа моего двоюродного брата работал старшим помощником младшего админа в одном большом системном интеграторе. Надо сказать, что работа вайтишника была по тем временам в разы интересней и ответственней, чем сейчас, ведь приходилось заниматься фуллстэком, начиная от прокладки сетей по офису, переустановки Windows 95 на лэптопе генерального и заканчивая ремонтом электрочайников и эпиляторов секретарш любовниц того же генерального.

Как-то под Новый Год, когда у конторы традиционно шли большие продажи, предновогодняя суета и такое все, нашему хорошему знакомому дали один простенький таск — спаять шнурок для мини-атс и подключиться для сбора статистики или перепрошивки, чего-то такого в общем, о чем история уже умалчивает. Шнурок в итоге спаяли коллеги из сервисного центра по первой найденной схеме, ну а брату жены жены выпала честь подключиться и затестить релиз.

И вот 30 декабря, праздничное настроение у всех, телефоны в офисе не смолкают, движ- суета и в 4 часа вечера шнурок вставляется в порт мини-атс. БУУУМ! Весь офис погружается в темноту, телефоны резко смолкают, а по корридору стелется до боли знакомый запах чего-то горелого и очевидно очень, очень дорогого.

Самый цимес, что друг племянника бывшей подруги на тот момент уже уволился и это был его последний день отработки на той конторе. Ушел эффектно, короче.

Эх, всегда когда ставили АТСы требовали заземление нормальное, и комп с той же землей. Брат друга двоюродной сестры в такой ситуации лишался новогодних праздников, например.

Где-то так и было, герой той истории думал что как минимум лишат крайней зарплаты за спонтанное фаер-шоу, но к счастью в тот раз пронесло

Писал код обновлялки для устройства под Windows Embedded на C#. На определённом этапе flow-а обновление должно отформатировать раздел диска и накатить на него новый образ с осью и бинарниками (с помощью тупо вызова внешней команды «format c: блабла»). Конечно же, для безопасности строчку с вызовом команды я коментил в коде (ничего умнее не придумал, да), чтоб во время дебага моя же программа не отформатировала диск на компе с сорсами. Дальше вы уже поняли — однажды забыл закоментить, раздел с сорсами был отформатирован. Надо ещё добавить, что я перед этим где-то неделю не комитился. Какой же я был тупой мудак...

Потом эти люди управляют биоректорами...

Это была история из моих молодых и зелёных лет. Биореактор мне был доверен, когда я уже возмужал и интеллектуально окреп.

Наибольший фекап был запуск системы обзвона через реальный транк в США во время нагрузочного теста. 50млн обзвонов, пока заметили ;) Файлом стояла какаято русская детская песенка.
Еще как-то у одного из крупных провайдеров каждый десятый звонок был бесплатно для абонентов, дней 10, из-за бага в системе биллинга. Не пересчитывали, кстати.

У меня из области эмбеддед,
Последние дни когда представитель нашей техподдержки находится на объекте, я решил внести правки в код датчиков положения, все опробовал на стенде, погонял пару дней, проапдейтили на объекте.
На следующий день наш человек сидит в самолёте, от месных приходит письмо, что при любых положениях датчиков приходят нули в систему. Я понимаю, что каким-то образом обнулились коэфициенты из формулы расчета положения. А местный персонал уровня «включить/выключить».
В итоге помог коллега который быстро составил инсталлер, написал приблуду для перекалибровки без участия персонала и знал скрытые возможности служебной программы для обновления прошивок. Для веса вкинули в инсталлер образ прошивки спутникового рессивера и отправили, через полчаса пришел ответ, что все работает как нужно.
Я так и не понял почему коэфициенты сбросились и больше такого не никогда происходило.

Писали ми якось років з 10 назад софт для одного українського телеканалу (з трійки перших). Телебачення було бідне і дозволити собі професійний західний софт не могло. Значна частина того, що йшло в ефір (в тому числі прямий), робилось місцевими силами. Сиджу я якось вдома, година восьма вечора, вечеряю з родиною. Тут дзвінок на робочий:
-Доброго вечора. Ми з телеканалу Х, у нас тут новини, зараз буде телеміст з прем’єр-міністром, а у нас все зламалось і ми не знаємо як полагодити. Поки що пішли на рекламу, у нас є 45 секунд, щоб полагодити.
-Так покличте там вашого інженера Василя, я йому все пояснював...
-Він звільнився, тепер я на його місці, систему бачу сьогодні вперше. В нас 35 секунд залишилось...

Нічого, полагодили :)

(з трійки перших). Телебачення було бідне

Перший Нацiональний?
остальные каналы 100% олигархические и вряд ли страдают от дефицита бюджета

Страждають. Олігархічні чи ні, а безрозмірних бюджетів нема ні в кого.

и вряд ли страдают от дефицита [технического] бюджета

youtu.be/uJGKeZYOcT8

Так покличте там вашого інженера Василя, я йому все пояснював...
-Він звільнився, тепер я на його місці, систему бачу сьогодні вперше. В нас 35 секунд залишилось...

TOP TEN ANIME BETRAYALS

Нічого, полагодили :)

нє ну раз ти пишеш тут і сьогодні то звісно же ж полагодили )) [шютка]

друг подруги моей мамы отошел попить чай на 15 минут

А вот был бы это сын подруги твоей мамы — за время его чаепития проект бы зарелизили.

По сабжу — ничего такого не припомню, но однажды коллега случайно грохнул у себя 500-гиговую папку с контентом в SVN и пол-дня ничего не делал, пока оно чекаутилось обратно, а я просил его сделать всему офису выходной, нажав SVN Commit)

у себя 500-гиговую папку с контентом

Это что за контент такой? Курсач, домашня работа...?

Не вдаваясь в подробности — там очень много хайполи 3д-моделей, анимаций и 4к-текстур.

порно в свн держали походу

Если бы, если бы...)

Однажды подключал бразильскую платежную систему. Мало того, что вся документация на бразильском португальском, так и еще никакой возможности дебага/трейса платежей нет. А кроме типичных платежей со статусами типа CHARGE/CANCEL/REFUND у бразильцев есть такой специфичный финансовый инструмент, который называется cobrança, представляющая собой что-то среднее между почтовой маркой, скретч-картой для пополнения мобильного и сертификатом на 500 грн из «Сельпо»: камарад бразилец в каком-то своем Сан-Кукуево-ду-Мухосранск заходит в почтовое отделение, покупает эту кобранцу (или кобранчу, хз), получает код, который потом вбивает в форму на сайте ну и крэкс-пэкс-фэкс пошла транзакция. Только прикол в том, что банки эти кобранковые транзакции не обрабатывают по одной, а формируют пул за 5 рабочих дней. И ты, соответственно, тоже должен у себя в где-то делать сервис, который будет формировать пул и ждать статуса платежа — прошел, не прошел, жди гудка.

Так вот, дебаг же. На своей стороне конечно, можно настроить, но что там в платежке происходит, может, каких-то бразильских параметров не хватает — как узнать? Потыкал с гуглпереводчиком в интерфейс и нашел возможность отправлять системой письма при бразильских трансмутациях данных клиента — вот он заполнил форму (без персональных данных, конечно), вот выдало идентификатор, вот поставило в пул и такое прочее. На платеж 3-8 писем, в общем. Вздохнул с облегчением, настроил почтовые фильтры своего рабочего ящика и пошел домой, завтра, думаю, поразвлекаюсь.

Прихожу на следующий день — а на меня народ смотрит так, будто у меня рюкзак из человечьей кожи волосами наружу скроен. «Что случилось?» — взволновано спрашиваю я. Лег почтовый сервер. Оказалось, что этой ночью (ну, то для нас ночь, для другого офиса день был) звезды идиотии сошлись в парад планет: один менеджер решил, что платежка подключена, другой менеджер не спросясь взял настройки тестового аккаунта и подключил к баннерам, третий запустил баннеры и ключевые слова, а четвертый протупил в бразильском и... в общем, наш продукт (что-то типа облачного хранения, когда облачное хранение еще только пешком под стол ходило) продвигался с ключевыми словами типа «горячие сосиски ск0чать недорого». Я не знаю, все ли население Бразилии изумилось такому финту ушами и пришло к нам или только половина, но сервер на, кажется, восьмом миллионе писем крякнул и прилег на бочок. А там же не только мой аккаунт, там корпоративная почта — договоры, платежки, эт цетера..

Не расстреляли меня и менеджеров только потому, что, как ни странно, примерно треть из этих загадочных парней, пришедших на лендинг за сосисками, взяла и скачала наш продукт со стартовым пакетом. Как? Зачем? Не знаю. Но всегда думаю о бразильцах каждый раз, как вижу лавку с иконами в метро, это для них, наверное — ну, натурально, едешь на работу, вспомнил по дороге, что лик Св. Буженины, покровительницы ищущих холодильник в ночи, прикупить забыл, а тут как раз скидон, дайте две!

Я понимаю менеджеров, но тебя то за что?

Уверен, у израильтян тоже есть анекдот про «хто всравсь? невiстка!»

Хи :). Сервис Деск Mission Critical СааС сервиса — отвечают за прием звонков, мониторинг и быстрое восстановление прода если шо не дай Бог. 24×7 в полный рост.
31-е декабря. 22:00. СД бдит и будет бдеть в новогоднюю ночь пусть и в кол-ве одного человека.+ охранник. Тоже бдящий но уже вход-выход офиса. Директор офиса выдает СД инженеру бутылку вина и разрешает ее употребить — праздник все таки.
Ну пацаны решили эту бутылку открыть вот прям сейчас. Но! Штопор! Не взяли штопор! И инженер СД — охранник же бдит вход — уходит в офис в поисках штопора. В этот самый момент, когда СД ищет штопор в отдаленном углу офиса CTO, VP, co-founder и вообще второй после Бога человек в фирме в своем далеком американском городе решает что самое время позвонить на СД и поздравить с Новым Годом, поблагодарить за самоотверженный труд, промотивировать так сказать человека на первой линии обороны (с этим все было серьезно и очень правильно). Вооот... Но вот мотивируемый кадр не слышит звонка так как ищет штопор. Долго ищет. Очень долго. СТО успевает несколько раз позвонить безответно...
В итоге: пробку из бутылки выковыривали ответкой, вместо мотивации СД инженера и службы в целом всем ответственным прилетел фитиль, мягкий мягкий правда но прилетел.
2-го января в комнату СД зашел упомянутый директор офиса и положил им в ящик стола штопор...

В 2005 году создавал фотобанк для журнала и сайта автомобильных объяслений АвтоМагазин. Ну и для теста — позаливал туда различных картинок (в основном чернобелой эротики). Картинки обрабатывались imagemagic специально для верстки в определённый формат (с поддержкой старого буквенного формата id и согласованием его с новыми id). В это согласование id закрался баг, который всплыл при верстке. Верстка происходила следующим образом — скрипт подготавливал данные для InDesign, а далее дизайнер проверял все и подправлял детали. Рядом с дизайнером, всегда присутствовала девочка, которая проверяла что вся платная реклама и объявления попадают в номер. И вот она показывает ему на одно объявление где фотка неправильная (голая баба в раскоряку). А он говорит да-да, вижу dpi неверный и размер (на содержимое фото он не обратил внимание). В печать это не попало. Но на сайте бывали различные ляпы. Вызывает меня как-то директор открывает наш сайт и спрашивает: «Саша, а что это такое?» а там на главной вместо авто было вот это фото: cs4.pikabu.ru/...​/1395050062_509995943.jpg
Ещё бывало, один сотрудник выполнил sudo rm -f в каталоге где была продакшин база на 100ГБ (бекап которой, как оказалось, ни разу не поднимался и не мог быть поднят) — но так как саму СУБД не перегружали — то обнаружили указатель в памяти на этот файл — скопировали в буфер и восстановили. Ну и ещё бывает всякое в системах автопарков с иммобилайзерами. Скажем из-за бага — где-то в Северной Америке весь автопарк небольшой компании не может завести двигатель ни единого транспортного средства (но это конкретно не мой был — деталей не знаю).

@Eldar Kostin это факап доу)

почему в этом топике никто не лайкает комментарии?

Напомнил, как к знакомому преподу философии и религиеведения как-то решили зайти свидетели Иеговы... и разговор они начали с фразы: «Есть такая книга — Библия»!
Препод в ответ, с радостной ухмылкой: «Знаю! Заходите, пообщаемся!». Чуваки вышли через 20 минут с бледными лицами и больше никогда не возвращались

На телефоне (андроид) стояло приложение которое якобы помогает бросить курить (считает сколько дней не курил, сколько денег не потратил и т.д.), и в один день с него начали приходить тестовые сообщения :) Видимо разработчик только к вечеру понял что он свои «qwerty/q1q1q1q1/testtesttest» шлёт на рабочую приложуху :)

Прямо сейчас факап — отправил 2 одинаковых сообщения в комментарии доу, хотя вроде как не ИЕ использую

Сусід розповідав — вирішили зробити тест сервісів під великою нагрузкою, емітували роботу сотен тисяч юзерів, декілька днів, підбірали різні варіанти конфігів, все стало гаразд. Тількі в кінці тижня рахунок від сервісу аналітіки в 10к баксів дещо збентежив всіх

на кнопке отправки формы поставил для теста alert("fuck")
и так оно ушло американскому заказчику)

Эх! Эти времена дебага UI alert-ом, и чего я там только не читал :-)))

Не то чтобы эпично, скорее про человеческую глупость. Был случай, когда какие-то левые чуваки написали три строчки кода в системе аналитики, которую они типа саппортили. Т.е. этот кусочек кода подгружался вместе с их основным скриптом, который грузили уже мы у себя. В этом коде они пытались достать вложенную пропертю, лежащую в глобальном объекте с данными аналитики. Типа obj.obj.requiredObj. Товарищи консультанты заботливо проверили в ифчике наличие obj, obj.obj и obj.obj.requiredObj, вот только почему-то сравнивали всё с undefined. А оно (о злая ирония джаваскрипта!), в большом проценте случаев null :) соответственно, оно упарывалось.
И все бы ничего, но почему-то этот кусочек кода по какой-то идиотской логике того скрипта выполнялся в случае ошибки снова и снова с таймаутом 200мс. А все ошибки в джаваскрипте отлавливались логгером и отправлялись на сервер. В результате мы, по сути, задудосили сами себя и прод нормально так прилег отдохнуть. Не позволяйте всяким «консультантам» безконтрольно говнокодить, в общем :)

Это было в 2001 или 2002.

Верховная Рада решила, что билеты УкрЗализныци должны печататься на украинском языке, а не на русском. Проблема только была в том, что софт для билетов 1) разрабатывался где-то в конце 80х для мейнфреймов 2) в Москве 3) доступа к исходному коду или продакшн УЗ не имел, только платили миллионы Москве за поддержку/обслуживание. Короче менять ПО не было вариантов.

Я тогда работал в конторе, которая разрабатывала софт для УЗ. В частности у нас была своя железяка с порезанным Линуксом на борту (as/mx router), которая стояла в сети между терминалами для продажи билетов (кассы) и мейнфреймом, где крутился собственно софт.

Custom дистрибутив Линукса и low-level код для обмена в сети писал наш Майк (Mike Gorchak), моя же задача была написать простенький сервер, который будет «читать» проходящий билетный трафик и на ходу переводить его с русского на украинский. Никакого ML и big data, тупо перевод по словарю. Писать переводчик без документации было интересно весело, потому что время от времени попадались «нестандартные» слова, которые переводчик не знал как переводить и складывал в отдельный лог, чтобы потом добавить в словарь.

Короче, про факап.

Меня отправили на Львовскую ж/д, где должна была стартовать опытная эксплуатация. Я сидел в ВЦ, проводил какие-то тесты/настройки железяки, по ssh. Обеденный перерыв, я решил пойти чего-то съесть и перед выходом сделал `shutdown -p` на тестовой железяке. Думаю вы догадываетесь, что было потом.

Когда я вернулся через 40 минут в комнатушке было человек 15, включая начальника ВЦ. Все билетные кассы на ж/д вокзале не работали и никто не мог понять почему. Сеть вроде есть, никаких ошибок нигде, а связи нет. Я начинаю что-то подозревать. Сажусь за комп. У меня было несколько ssh-сессий открыто и я понимаю, что вместо shutdown тестовой железяки, я выключил сервер который был в продакшн. Ой. Через пару минут кассы заработали и у меня была беседа с железнодорожниками. Надо сказать, львовяне очень интеллигентные и вежливые ребята.

Вот поэтому прод и тесты надо изолировать на сетевом уровне и прогеров на прод не пускать :).

разрабатывался где-то в конце 80х для мейнфреймов

небось на MUMPS написана система была?

Не знаю, мне только из третьих рук рассказывали.

«Стрела» ж вроде самобытная под OS/360 и потомки, поверх родного осёвого ISAM. Более-менее своё там только средства межмашинного взаимодействия.

Одна соседняя команда откровенно достала тем, что не могла запилить нереально важную фичу втечение целого года. В определенный момент работа департамента остановилась из-за отсутствия этой фичи. Команда так же морозилась и ничего не делала.

Я и еще один камрад плюнули на это дело, сели вечером и решили запилить сами. Я пилил фронтенд, он пилил бекенд. Чтоб обмениваться кодом, сделал отдельный гит бранч и скидывал туда изменения и шарил их с моим коллегой. Часам к 3 ночи все было готово и работало. Я предлагаю — давай зафигачим code review что утром посмотрели и можно было смерджить. Он удивленно отвечает — зачем, ты ж все уже закомитил в master.

Я немного о***ваю, ибо знаю, что у этих чуваков настроен continious integration. Смотрю их деплойменты — таки да, ночью несколько деплойментов в продакшн. Смотрю гит — на сервере все мое лежит в мастере. Смотрю локально — у меня все лежит в моем кастомном бранче. Каким-то образом я умудрился накосячить и связать свой локальный бранч с origin/master и всю ночь пушил в master.

Утром вместо благодарности за запиленую фичу был разнос за комит кода без code reviewи несанкционированные деплойменты.

Самый сок произошел через полтора года, когда я уже перешел в другую организацию. Меня ночью вызвали через пейджер потому что фича, которую мы запилили полтора года назад, сломалась. Типа, потому что я добавил фичу без code review, я дожлен ее фиксить. Вот тогда уже была моя очередь устроить разнос.

Самый сок произошел через полтора года, когда я уже перешел в другую организацию. Меня ночью вызвали через пейджер потому что фича, которую мы запилили полтора года назад, сломалась. Типа, потому что я добавил фичу без code review, я дожлен ее фиксить. Вот тогда уже была моя очередь устроить разнос.

Перешел в другую фирму, или другую часть фирмы?

И что ты им сказал? 6-)

Перешел в другую фирму, или другую часть фирмы?

Перешел в рамках того же legal entity, но достаточно далеко, чтоб можно было без рисков для себя сказать все что я думаю по этому поводу.

И что ты им сказал? 6-)

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

А про роллбэк там таки не знают? Плюс доплату не дали за использование твоего кода? Тадааам

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

Backfill прошел без проблем, но во время этого на одной из баз данных сильно повысился CPU utilization. Это не проблема само по себе, но из-за этого другой сервис, который брал сообщения из SQS и писал в ту же базу, не мог успешно обработать сообщения — не хватало времени чтоб завершить SQL запрос и сообщение падало обратно в очередь. Само по себе это не проблема, сервис делает retry и все проходит успешно. Проблема в том, что из-за этого порядок сообщений нарушается, а между некоторыми сообщениями есть зависимость «предыдущий-следующий» и они должны быть обработаны в корректном порякде. Опять же, само по себе это не проблема, ибо если они падают обратно в очередь и повторно исполняются, в конечном счете после нескольких попыток все будет обработано в нужном порядке. Но из-за того, что сервис не обработал ни одного сообщения втечение 6 часов, в очереди скопилось несколько миллионов сообщений, и из-за retry storm ни о каком порядке речь ни шла — содержимое SQS выглядело так будто его пропустили через блендер. Опять же, само по себе это не проблема, но обработка сообщения, которое идет «вне очереди» требует больше SQL запросов. Из-за того, что практически все сообщения шли out of order, сервис сам поднял CPU utilization на базе данных до уровня когда он не может обработать ни одного сообщения успешно. Это состояние из которого он сам не восстановится.

Само по себе это не проблема, ибо мы активные пользователи SQS и реляционных баз, сталкивались с подобным не раз и знаем что делать. Простой выход из ситуации — отключить Retry на SQS, это дропнет все сообщения в Dead Letter Queue. Это убирает беклог и снимает нагрузку с базы, тарфик очереди будет норамльно обрабатываться. В бекграунде мы подкидываем в очередь старые сообщения из DLQ (следим чтоб CPU не превысил критическйи уровень) — и часов за 10 весь беклог будет обработан, после чего очередь обратно герметизируется.

Именно это я и сделал, наблюдаю как миллионы сообщений падают из SQS в SQS DLQ. А минуту спустя наблюдаю, как счетчик сообщений в DLQ уменьшается и падает до нуля.

Вот это реальная проблема. Как выяснилось после нескольчих часов расследования, какой-то интерн в какой-то команде несколько месяцев назад запилил индексирование для сообщений из всех DLQ, которые у нас были — читает сообщения, собирает метаданные и сохраняет их в лог, сами сообщения удаляет.

Следующие несколько недель были потрачены на то, чтоб восстановить потерянные сообщения, собирая по крупицам данные из upstream сервисов (в т.ч. из текстовых логов).

То чувство, когда поставил 6 бэкапов и все провалились одновременно, потому что не судьба

Если не работает в бете — заработает в продакшене.

Нужно было задеплоить изменение один древний сервис (никто толком не помнил как он работает). Сделал деплоймент в бету — бета перестала работать. Беглый анализ проблемы показал, что проблема не в моем изменении, а инфраструктурная. Из-за этого решил, что
бета поломана от старости и деплоить в продакшн будет безопасно. Задеплоил — там упало той же ошибкой. Roll-back использует тот же процес, что и Roll-forward, поэтому после ролбека система была в том же сломаном состоянии.

Это заблокировало процес публикации нового контента на одном из крупнейших сайтов США.

В это время почти весь орг в полном составе в это же время отмечал запуск предыдущего проекта где-то в баре, поэтому в офисе почти никого не было, кто бы мог объяснить как эта хрень рабоатет и почему она перестала деплоиться.

Проблема была решена фактически пере-сборкой всей инфраструктуры сервиса с нуля, что заняло около 10 часов (это были пре-облачные времена, получить 20 новых серверов одним кликом мышки не было возможности).

Однажды друг подруги моей мамы....

сын маминой подруги

Правильно «у моїй подруги з її парнем».

не, посоны, айти факапы, типа заваливания прода, то фигня. Вот помню как-то сын маминой подруги решил купить акции MU....

Однажды друг подруги моей мамы пошёл к монахам широкими шагами

из-за асапов и пинков со стороны ПМа сосед моего соседа совершил ошибку при обновлении конфигов CDN — часть сайта, отвечавшего за IP телефонию (лигин, менеджмент итд) одного из крупнейших операторов стационарной связи в сша лежала два часа в минтайм.

понимаешь там у соседа моего соседа был ветвящийся пестец — потому что обновление кеша нельзя откатить/остановить .
Они процессятся пол часа -час . Потом надо запушить норм изменения которые чинят . Оттуда и два часа .
Когда начали звонить/писать было уже ясно что это на часы .

был у меня один факап, по сути не мой но в моем исполнении:
работал в стартапе где пилили платформу для сбора, анализа и генерации всякий алертов пользователям платформ типа AWS, Salesforce и прочих)
после очередного эпичного ночного апдейта в прод, проверил как прошли все тесты и по старой доброй традиции зашел и руками в своем тестовом аккаунте зарегил свой же для тестов AWS аккаунт.
Утром прийдя на работу наблюдал феерию танца в исполнении нашего архитекта(представитель многомиллиардной нации), который бегал по офису и искал виноватых кто завалил прод)
Оказалось я по ошибке, зарегил один из наших рабочих AWS где логов было очень много и наш продукт толи в процессе поедания их, толи уже в процессе переваривания , благополучно помер!
И именно в тот момент я понял на сколько наш архитект был мудак, так как вместо того чтобы сесть и разбираться почему в реально боевых условиях наш движок не справился с задачей, он следующие пол дня бегал и пытался узнать у меня зачем же я так сделал и параллельно пытался мне доказать, что я поступил очень не правильно и прод упал по моей вине

1) Смачно зевал вслух на конф колле с международной командой и заказчиками думая что я on mute
2) Долго отлаживали модуль формирования автоматических заказов, когда все вылизали до блеска запутили на продакшене, забыв корректно проинициализоровать новые поля в базе. В итоге вендору ушел давно выполненный заказ на около 10куе

Есть такая хрень как salesforce, разработчикам которой в аду уже прогулы ставят. Там можно оставлять как приватные, так и публичные комментарии. Так вот один раз друг соседа прохожего не сдержался и написал приватный коммент с тем, что он думает и о своих ПМ и о чужих со стороны заказчика, а коммент из-за баги так и остался приватным, но был прекрасно виден всем сторонам.

Был у друга соседа прохожего и обратный случай со скайп-бизнес, но у заказчика, когда один представитель многомиллиардной нации принёс в конференц-рум ноут и подконнектился к конференции, как и оборудование для конференц-связи. Заказчик для локального обсуждения постоянно нажимал кнопочку mute, но микрофон на ноуте прекрасно передавал беседу стороне друга соседа прохожего %)

но микрофон на ноуте прекрасно передавал беседу стороне друга соседа прохожего %)

ну?! так а самое инетересное где? :-)

Всё что случилось в Вегасе, должно оставаться в Вегасе %)

1. Отправил тестовое пуш-уведомление на живом окружении. Около 20000 доставок на телефоны.
Момент прозрения наступил, когда чирикнул телефон, на котором то приложение из AppStore установлено.
Хорошо, что хоть текст был нейтральный.

2. Созвон с заказчиком, в офисе почти пусто. У меня стационарный компьютер с камерой, за моей спиной — прозрачные стены «аквариума-полуопенспейса». За прозрачной стеной какие-то коллеги беседуют, я не придал этому значения, там постоянно кто-то останавливался по пути на кухню.
И тут он сокращает дистанцию с сотрудницей и прижимает её к стене.
Сначала я это заметил на своем фоне, а потом и команда заказчика заметила этих голубков, которые, судя по всему, только начали.

3. Бесчисленные ошибки поганого автоисправления текста. Хорошо, что хоть каждая Юля всегда была Юлей.

4. Содержимое буфера обмена не туда. И туда, но не то содержимое.

2) ..... а потім прийшла кібер-поліція та влаштувала маскі-шоу за трансляцію порнографічних матеріалів? Чи там далі зажимань не дійшло? )

Дошло, но я уже этого не видел. Сейчас уже года три как релоцировались отсюда в Европу

3. Бесчисленные ошибки поганого автоисправления текста. Хорошо, что хоть каждая Юля всегда была Юлей.

Хуже, когда каждая бля становилась Юлей %) Что вызывало гораздо большее количество непоняток %)

не кажда блджад може стать Юлей

Зависит от желания и финансовых возможностей загадить информационное пространство рекламой.

4 пункт. Уже сколько раз я отправлял пароли не туда...

Джва раза запускал перфораманс тесты на проде, кстати ложался не ток веб апп но и база данных :-)

Снес базу данных на стейдже с айтемами которые долго наяривал через веб форму кастомер, бэкапа не было, перенабирали заново как кастомер, хорошо хоть файлы с сорцами были.

Но это по молодости, первые разы самые яркие и запоминающиеся, потом уже просто обыденность :-).

И собственно все, не было больше факапов в моей жизни

Признайся что технику тебе больше не доверяли и ты стал бизнесс аналитиком, «от прода подальше» ;-)

А я наоборот в сторону инжинера двигался, всякая торговля, работа с клиентами и вообще с людьми меня не прельщала, с компами проще работать.

Ну, этого вполне достаточно кмк. ))))

Підписатись на коментарі