TGViewer
KazDevOps KazDevOps @devopskaz · 6.87K subscribers
Post #2079 1.28K
🔥 Расследование «невидимого» бага от Cloudflare

После того как Cloudflare изменила внутреннюю архитектуру сервиса Cloudflare Images (переведя его с сетевых сокетов на локальные Unix-сокеты для ускорения работы), клиенты начали жаловаться, получая битые или недозагруженные картинки.


Обычные инструменты логирования на уровне приложения ничего не показывали — для них все выглядело идеально. Попытки воспроизвести баг локально через curl тоже провалились. Команда инженеров искала баг 6 недель, а исправила всего четырьмя строчками кода.

Прорыв случился, когда инженеры подключили низкоуровневую утилиту ядра strace, чтобы отследить системные вызовы к сокетам. Оказалось, что при отправке больших файлов процесс делал один системный вызов записи в буфер сокета (sendto), а следующим шагом сразу же закрывал соединение на запись (shutdown), хотя большая часть данных еще оставалась во внутреннем буфере библиотеки.

Виновником оказалась hyper — популярная open-source библиотека на Rust для работы с HTTP. Баг сидел в ней годами во множестве версий.

В цикле обработки соединений (dispatch.rs) библиотека вызывала функцию сброса данных из буфера в сокет (poll_flush). Однако результат этого вызова просто игнорировался с помощью конструкции let _ = self.poll_flush(cx)?;. Если сокет на стороне получателя на пару миллисекунд заполнялся, функция возвращала статус «ожидания» (Poll::Pending), сообщая, что данные еще не ушли. Но из-за let _ библиотека игнорировала это, считала, что всё успешно отправлено, и преждевременно вызывала закрытие сокета, обрубая хвост файла.

👈 Узнать детали в источнике

Когда вы проектируете межсервисное взаимодействие на сверхвысоких скоростях (особенно в K8s через sidecar-контейнеры, mesh-сети или локальные сокеты), всегда закладывайте тесты на переполнение буферов и симулируйте медленных клиентов.


@DevOpsKaz 😛
More from @devopskaz
  1. Sep 21, 2026👋🏻 Всем привет! Если вам интересны мобильная разработка, архитектура приложений, AI и ин…
  2. Sep 21, 2026🔥 Образовательный дайджест сентября ⚪️ Администрирование ОС Linux Kernel panic: что делат…
  3. Sep 18, 2026🔥 Спикер №8 DevOpsDays Almaty'26 — Байгашев Мирас, DevOps Team Lead, Core 24/7 Мирас упра…
  4. Sep 18, 2026⚡️ Героизм в SRE: как выявить системную проблему и перестать на неё закрывать глаза Google…
  5. Sep 17, 2026🔥 PostTechHackathon — 25-27 сентября Участникам предстоит решить два реальных технологиче…
  6. Sep 17, 2026🔥 Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на ин…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →