Посмертное Исследование: Следите За Промежуточным По Или Как Мы Сломали Комментарии

Привет! У нас не очень хорошие новости: мы допустили ошибку в мобильной версии, которая может беспокоить вас все праздники.



Посмертное исследование: следите за промежуточным ПО или как мы сломали комментарии

Суть проблемы: человек оставляет комментарий к посту, видит его под своим логином и уходит со страницы, но если вы обновите страницу, этот комментарий окажется под другим логином.

Это работало только в том случае, если пользователи одновременно находились на одной и той же странице публикации.

По нашим данным, за выходные с мобильной версии было отправлено 774 комментария.

Любой из них мог пострадать.

Некоторые технические подробности Мы используем комбинацию VueJS + NodeJS (Express, SSR).

NodeJS одновременно обслуживает несколько соединений асинхронно в одном потоке, то есть использует один экземпляр для всех клиентов.

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

Поэтому необходимо крайне внимательно относиться к порядку выполнения мидлваров, а также к определению и переопределению значений переменных (особенно если они глобальные).

И вот что у нас произошло (это пример кода):

   

global.foo = 'bar'; app.get('/main', (req, res, next) => { res.send(global.foo); }); app.get('/change', (req, res, next) => { global.foo = global.foo === 'bar' ? 'barbar': 'bar'; res.send(global.foo); });



Что вернет сервер?

  • Клиент 1 включен

    /main

    >>> ‘bar’
  • Клиент 2 включен

    /change

    >>> ‘barbar’
  • Клиент 1 снова включен

    /main

    >>> ‘barbar’
Пример, конечно, сильно упрощен, но принцип тот же.

Теперь все работает как надо.

Пожалуйста, простите за неудобства.

Если вас затронула эта проблема, свяжитесь с нами по форма для обратной связи .

Ищем возможность вернуть комментарии их законным владельцам, что из этого получилось, расскажем позже.

Теги: #баги #habr #разработка сайтов #vue.js #node.js #мобильная версия #post mortem

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.