но т.к. не могу понять природу проблемы, попытаю удачу здесь. Есть крайне неприятная штука и буду крайне благодарен, если хотя бы подскажете, куда копать.
Дано:
- Nestjs 7 и 8 версии (баг возникал на обеих версиях)
- mysql 5.7 версии
- 3 пода в кубере, на которых крутится апи неста.
Проблема заключается в том, что при одинаковых запросах возвращаются разные результаты из базы данных. Если одна сущность была создана недавно, то при попытке запросить её в бд она может отсутствовать, а через секунду снова присутствовать. Если её обновить, то может возвращаться старый результат, новый результат, а может снова отсутствовать вовсе.
На сам nest я не грешу, т.к. при подключении локального инстанса приложения к бд, где это происходит, то всё отрабатывает хорошо. Эта проблема возникает только тогда, когда аппликуха крутится в кубере (считай препрод).
Также эта трабла может возникнуть в ходе выполнения одного метода, где 1 раз запрашивается сущность и правильно возвращается, а потом для сохранения запрашивается она же методом .save у typeorm, но уже возвращается пустое значение. Результатом этого typeorm пытается сделать insert и натыкается на ограничение primary key бд.
Если верить девопсам, бд крутится в сингл инстансе - без кластеризации или мастер-слейва. К сожалению, логи бд пока что просмотреть нет возможности, но мне кажется, что вряд ли это поможет.
Кэш тайпорм на уровне приложения отключён.
Перед апихой стоит kong - он для меня, к сожалению, как чёрный ящик.
Может быть кто-нибудь сталкивался хотя бы с чем-то похожим или есть мысль, куда копнуть хотя бы?
Буду безмерно благодарен. Если нужна будет какая-нибудь доп инфа для выявления диагноза, постараюсь всё предоставить
mysql ведь соответствует consistence и availability, в одно и то же время данные будут одинаковы и на мастере, и на репликах
По умолчанию из коробки - да
Обсуждают сегодня