Как не надо делать и при чем тут Siemens
Всем привет! Дело было совсем недавно. Сижу себе работаю, никого не трогаю, примус починяю, как вдруг пишет мне руководитель проектов с просьбой примерно следующего характера: "ты ведь участвовал в разработке продукта?" (для наглядности назовём продукт "хлебопечка" а контору "Общество анонимных пекарей")
- Да, было дело в том году.
- Осталось что-то?
- Да, по большому счету всё есть, можно поднять всю инфу. а что случилось? Снова берем их?
надо заметить, заказчик выдался очень тяжёлый, хоть и денег там крутилось очень не мало! Но работать с обществом анонимных пекарей мне жуть как не хотелось!
- Нет, - говорит РП. - у них проблема с техподдержкой и они не могут отловить баг. Попросили нас поглядеть. Я тебе пришлю скрины и описание, а ты выдели пожалуйста час и потом созвонись с ними. Ок?
- Ок.
Казалось бы, задача тривиальнее некуда. Прилетает скриншот, а на нем ошибка типа "ошибка взаимной блокировки, попробуйте позже" и описание - "хлебопечка" периодически не отправляет булки. Очередь отправки застопорится, но после повторной попытки - всё продолжается нормально.
Ну, думаю, приплыли. Какие-то взаимные блокировки, ох как я не люблю это!
Звонить работникам из техподдержки не стал, так как они не смогли решить эту проблему и моё присутствие на проекте объясняется тем, что они что-то не учли... Вообщем, заварил Дошик, полез разбираться. И представляете, каково было моё удивление, когда я через некоторое время обнаружил в коде такое:
Поморгав немного, наклонив голову на один бок, на другой, я убедился, что это точно то, что мне кажется, начал прикидывать: "А что же мне с этим делать теперь?"
Короче, передал я эту инфу наверх, а уж что там дальше случилось - совсем уже другая история!
Ну и если кто не понял... если ID объекта кратен случайному числу от 23 до 31 то выдается ошибка о взаимной блокировке, которая зашифрована в base64 чтоб не найти было по тексту ошибки.
Естественно, обычный перезапуск коллектора с большой долей вероятности не вернет эту ошибку и ещё долгое время проработает без ошибки.
Причем тут Сименс? При том что программисту, который работал там по договору аутсорсинга, грозит 10 лет тюрьмы и 81000$ за то что он добавил в код логическую бомбу, потом регулярно приходил и исправлял то что сломалось.
Мораль: так делать плохо. Не делайте так. А если делайте, то делайте хорошо, а не вот так вот.
Спасибо что дочитали, всем добра!