[Перевод] Баг в 0,001% запросов: как Cloudflare ловил пустые ответы MySQL из-за общего кэша
Habr ·
![[Перевод] Баг в 0,001% запросов: как Cloudflare ловил пустые ответы MySQL из-за общего кэша](https://habrastorage.org/extt/f3/e0/90/f3e090ef00d3f950fe61f23b8370f3fb.jpg)
Инженеры Cloudflare рассказывают, как искали баг в Hyperdrive, пулере соединений для MySQL: примерно один запрос из 100 000 возвращал пустой ответ там, где данные точно были. Трассы не ловились, сеть была ни при чём. Причиной оказалась ошибка в самом Hyperdrive: он кэшировал байты в формате Worker, а соседний узел с общим кэшем ждал формат Hyperdrive. Расхождение вскрылось из-за различий в возможностях протокола MySQL (драйвер mysql2 не поддерживает CLIENT_DEPRECATE_EOF). Заодно две истории про кодировки: согласование устаревшего utf8 вместо utf8mb4 и сброс соединения, возвращающий кодировку сервера по умолчанию. Читать далее
Инженеры Cloudflare рассказывают, как искали баг в Hyperdrive, пулере соединений для MySQL: примерно один запрос из 100 000 возвращал пустой ответ там, где данные точно были. Трассы не ловились, сеть была ни при чём. Причиной оказалась ошибка в самом Hyperdrive: он кэшировал байты в формате Worker, а соседний узел с общим кэшем ждал формат Hyperdrive. Расхождение вскрылось из-за различий в возможностях протокола MySQL (драйвер mysql2 не поддерживает CLIENT_DEPRECATE_EOF). Заодно две истории про кодировки: согласование устаревшего utf8 вместо utf8mb4 и сброс соединения, возвращающий кодировку сервера по умолчанию. Читать далее