Как Cloudflare исправила ошибку кэша MySQL в Hyperdrive

Cloudflare описала исправление ошибки в Hyperdrive, из‑за которой при тестировании поддержки MySQL иногда возникали пустые ответы и зависания. Проблема проявлялась при включённом кэшировании, когда узлы Client и Endpoint использовали общий кэш в одном дата‑центре.

Почему совпадений запроса было мало

Узлы по‑разному обрабатывали согласованные возможности протокола MySQL. Endpoint сохранял представление Hyperdrive, а Client преобразовывал ответ под драйвер пользовательского Worker. В результате в кэш могли записываться байты в преобразованном формате, тогда как принимающий узел ожидал другой формат, что приводило к некорректным пустым ответам.

Единое представление

Решение состояло в том, чтобы сохранять в кэше канонический формат результата независимо от того, какой узел выполнял запись. Преобразование под нужный формат выполняется уже при получении из кэша, не меняя общей записи. После внесённых изменений в наблюдениях Cloudflare случаи пустых результатов перестали фиксироваться.

Это отчёт разработчика о конкретном сбое Hyperdrive; он не претендует на доказательство отсутствия других возможных ошибок в работе MySQL или гарантию бесперебойной работы всех приложений.