Fuente
Serhii Chernenko | Тільки помітили, що періодично в аналітиці маркетинг сервісу фейляться...
317 Vistas/Alcance
2025-01-24 17:49
Mensaje №509
Тільки помітили, що періодично в аналітиці маркетинг сервісу фейляться певні івенти. Івенти під апішку, яка повністю змінилася в сервісі і я мігрував (переписував все) влітку. За пів року помітили тільки зараз.Коли переписував, бачив шматок коду ще з 21 року, написаний кимось. Він не стосувався самої апішки, тільки локальної логіки. В ній не дуже розібрався, але якщо два роки працювало без мене, то працює — не чіпай, як то кажуть.Сьогодні приходить імейл від сервісу, що у вас більше 30% фейл реквестів. Зробіть шось. Ну ок, дебажу. Цілий день дебагу. Дивина в тому, що від одного й того ж юзера всі реквести норм, а потім починається якась дікуха і тупо насипає від 5 до 15 фейл реквестів за секунду.Перше, що спало на думку — ну десь нескінчений цикл походу, а далі відвалюється можливо код. Передивився весь код, повторив юзер степи приблизні — нічого, все ок працює.Почались танці з бубном. Почистив куки, сесію, локал сторедж, інкогніто, інший браузер. Підписався на форму розсилки знову. Також повторив юзер степи. І тут фігак, бачу в логах фейли. Як, чому?Знову пробую, відтворити, знову все ок. Факін меджік. Знову луплюся вже в код, ну має ж бути щось, що відрізняється.Крч, результат інвестігейту:Той шматок коду, який я проігнорив був створений для того, щоб записувати в локал сторедж поведінку кастомера в разі, якщо ми не маємо його даних. А в нас на проєкті авторизація відсутня зовсім. Ми трекаємо юзера тільки через форму підписки. Не дуже вдале рішення, але не я його придумав, а переробляти ніхто вже не буде. І виходить, що ці дані збираються до того моменту, поки ми не дізнаємося хоч щось про юзера. А єдиний спосіб, в який ми це можемо дізнатися — він підпишеться на розсилку. І ось в момент, коли кастомер підписується, всі івенти (типу подивився продукт, додав в кошик, видалив), які замість того, щоб летіти на апішку, записувались в сторедж поступово, одномоментно відправляються в апішку, бо тепер ми дізналися, хто це був.Тому це виглядало, як нескінчений цикл, але по факту, це очікуваний результат і код працював правильно.А реквест фейлився з дуже тупої причини, коли апішка змінилася, грубо кажучи, вона в пейлоаді очікувала не дата, а data.properties. Я усюди пропатчив, а в тому шматку кода ні, бо не знав, що він робить та проігнорував.Така ось історія. Не ігноруйте старий код, а розберіться, нашо він потрібен. Та краще тестуйте міграцію апішек. А на цьому — гарних вихідних)