информация со ссылкой на Вас о том, что (ctpeko3a) wrote,
информация со ссылкой на Вас о том, что
ctpeko3a

О работе

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


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

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

Тестеры сели тестировать опять и опять натолкнулись на ту-же самую ошибку. Пришлось второму программисту сесть и ловить её. Ну а тестерами быть мне и ещё парочке людей. Выработали тест скрипт и давай синхронно ходить по сайту. Да, ошибка присутствует. Теряем сессию. Включили стандартную в .Net поддержку tracing, стали смотреть за sessionId. Неа, сессия не теряется, а ошибка продолжает место быть. Вставили в нужные страницы дополнительную тестовую информацию - не понятно что происходит.

Тут я решил посмотреть на код, который отвечает за совершение транзакции. Код как код, всё вроде бы нормально. Задумался... Странно... Такая белиберда может происходить только если несколько нитей лезут в несинхронизи... Погоди! Какие такие нити в .Net веб приложении?! А если не нити, то такое может быть если некоторые классы объявлены как статические. Ну-ка, ну-ка, посмотрим на объявления...

Ужас! Бррр! Классы Order, ShoppingCart объявлены как статические! И потом запихнуты в сессию!

Как оно вообще работало - мне непонятно. Вернее понятно, но всё-же непонятно! То есть я теряюсь в догадках.

Вы можете себе представить реакцию всех тех, кто сидел рядом и понимал, чем static классы отличаются от обычных. Это было что-то подобное сцене из Ревизора. Немая, короче, сцена.

У Джона, судя по всему, скоро будет много выходных... А мы уже две недели как ищем senior developer с .Net и J2EE. Если кто ищет работу в центре Лондона, то пишите комментарии.
Subscribe

  • 4k monitor, hdmi 2.0

    Захотел себе купить себе ещё один 24” монитор, такой-же что уже у меня есть. Никто не продаёт… Пока искал выяснил неприятную подробность: может…

  • Koh Samui beaches

    Сделал несколько панорам на острове Самуи. Восток острова, где никто не купается. Далеко идти до моря… Тут чуть левее, за скалой, самый…

  • Viruses

    Словил нечто, открывающее рекламу при нажатии на линк в любом бровсере. Антивирусы этого не видели, но Windows Restore на позавчерашний restore…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments