Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Serhii Chernenko
Added 14 Jul 2024

Serhii Chernenko

@serhii_chernenko
Number of subscribers: 267
Photos: 380
Videos: 29
Links: 208
Description:
Тут будуть поширені навчальні матеріали, новини та обговорення важливих тем, повʼязаних з Front-End розробкою Обговорення: https://t.me/serhii_chernenko_chat Ютуб канал: https://youtube.com/@serhii.chernenko Пошта: [email protected]
Source

Serhii Chernenko | Тільки помітили, що періодично в аналітиці маркетинг сервісу фейляться...

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