← Все новости
[Перевод] Баг в 0,001% запросов: как Cloudflare ловил пустые ответы MySQL из-за общего кэша

[Перевод] Баг в 0,001% запросов: как Cloudflare ловил пустые ответы MySQL из-за общего кэша

Инженеры Cloudflare рассказывают, как искали баг в Hyperdrive, пулере соединений для MySQL: примерно один запрос из 100 000 возвращал пустой ответ там, где данные точно были. Трассы не ловились, сеть была ни при чём. Причиной оказалась ошибка в самом Hyperdrive: он кэшировал байты в формате Worker, а соседний узел с общим кэшем ждал формат Hyperdrive. Расхождение вскрылось из-за различий в возможностях протокола MySQL (драйвер mysql2 не поддерживает CLIENT_DEPRECATE_EOF). Заодно две истории про кодировки: согласование устаревшего utf8 вместо utf8mb4 и сброс соединения, возвращающий кодировку сервера по умолчанию. Читать далее