Size: a a a

2020 October 28

IL

Ilya L in pro.cxx.holywars
уже пахнет жареным
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
решаешь на всякий случай проверить, что MS возвращает на запрос контента для этого юзера. Там 998 сущностей в ответе. Прогоняешь на поиск дубликатов по id - хуяк, 7 пар одинаковых
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
ага, попались пидорасы
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
ищешь в интернете хоть какую-то инфу, когда такое может быть. находишь ссылки только на доку от МС, где они говорят, что такого не может быть
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
и на ответы МС со словами "не, ошибка на вашей стороне"
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
Понял-принял - пошёл я нахер, надо самому понимать, в чём проблема
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
вычленяешь дубликаты, смотришь на них. в респонсе есть 7 пар, у тебя на проде крешится постоянно только одна из них
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
при этом в продовых логах есть варны на 6 других, которые не крашаться, а вот на эту самую седьмую, которая крешит вставку в базу, варна нет (а варн по коду стоит точно ДО вставки)
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
какого хуя
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
смотришь на эти 7 пар и сравниваешь - чем эта одна ебучая пара отличается от других.

Смотришь-проверяешь - да сука ничем, они идентичные по своей структуре
источник

IL

Ilya L in pro.cxx.holywars
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
идешь проверять, как работает механизм этих варнов
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
что механизм делает. Мы когда-то подготовились к тому, что MS - пидорасы, и вьебали фильтр на дублирующиеся сущности.
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
Как фильтр работает: чекает одна за другой сущности. Если встретил ранее новую для него сущность - кладёт в кеш и идёт дальше. Если сущность уже есть в кеше - тут интереснее
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
Он берёт сущность из кеша и новую, сравнивает у них LastModifiedDateTime. И если у новой сущности он БОЛЬШЕ, то выдаёт варн. А если нет - ничего не делает :)))))
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
то есть фильтр просто запоминает первую пришедшую к нему ноду, а дальше отсеивает остальные, несмотря на их время изменения. но варнит только если порядок правильный
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
смотришь на порядок в респонсе от MS - бинго! для 6 пар они идут в одном порядке, а для седьмой пары, проблемной, в другом
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
дальше надо понять, почему собственно происходит бэкап одной сущности 2 раза за одну сессию
источник

TS

Timur Safin in pro.cxx.holywars
"Сударь, дак у вас интерфейс не идемпотентный!"
источник

AZ

Alexander Zaitsev in pro.cxx.holywars
ну тут просто - мы во время распараллеливания нашего бэкапа решили сделать его малой кровью и кое-что делали ручками без нашего механизма
источник