Cloudflare шесть недель искала баг в hyper: ответы возвращали 200 OK, но приходили не полностью

Wait 5 sec.

Cloudflare рассказала, как шесть недель искала почти невидимый баг в hyper — популярной HTTP-библиотеке для Rust. Ошибка проявлялась неприятно: сервис возвращал 200 OK, в логах не было явных сбоев, но клиент получал не весь ответ. Например, вместо нескольких мегабайт данных доходили только первые сотни килобайт.В итоге причина оказалась не в бизнес-логике, не в обработке изображений и не в клиентском коде. Данные терялись на уровне соединения: hyper мог закрыть сокет до того, как полностью вытолкнул тело ответа из внутреннего буфера. Читать далее