Skip to content

uploads: использовать streaming upload для reader с известным размером#133

Open
ppmaskaluk wants to merge 1 commit intomax-messenger:mainfrom
ppmaskaluk:fix-streaming-reader-uploads
Open

uploads: использовать streaming upload для reader с известным размером#133
ppmaskaluk wants to merge 1 commit intomax-messenger:mainfrom
ppmaskaluk:fix-streaming-reader-uploads

Conversation

@ppmaskaluk
Copy link
Copy Markdown

Summary

  • переводит UploadMediaFromReader* и UploadPhotoFromReader* на уже существующий streaming path, если размер входного reader известен
  • использует Content-Length в UploadMediaFromUrl и UploadPhotoFromUrl, чтобы не собирать multipart body целиком в памяти без необходимости
  • оставляет текущий buffered fallback для reader без известного размера и добавляет тесты на определение размера потока

Что исправляет

Сейчас reader-based upload всегда собирает multipart body целиком в bytes.Buffer, даже если входной поток уже имеет известный размер. Это приводит к лишней буферизации в памяти при загрузке больших файлов.

После этого изменения библиотека переиспользует уже существующий uploadMediaFromReaderWithSize для *os.File, strings.Reader, bytes.Reader, bytes.Buffer и других reader, у которых можно определить размер через Len() или io.Seeker.

Это снижает пиковое потребление памяти и уменьшает риск OOM/долгих GC-пауз, не меняя публичный API.

Проверка

  • go test ./...

@ppmaskaluk ppmaskaluk requested a review from a team as a code owner April 28, 2026 12:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant