Skip to content

Conversation

@mcxiv
Copy link

@mcxiv mcxiv commented Jun 3, 2025

Hi,

In my work, I occasionally need to upload and download large files (several GBs), such as video recordings. While using mender-cli for this purpose, I encountered OOM issues during uploads, and realized the same risk could occur when dumping large HTTP responses during downloads.

This PR includes the following fixes:

  • Refactors the Upload function to stream file content using io.Pipe, avoiding loading the entire file into memory.

  • Adds log.IsVerbose() to expose the verbose mode flag.

  • Updates the Download function to conditionally dump HTTP responses only when verbose mode is enabled, to avoid loading it in memory when there is no need.

These changes aim to improve memory efficiency during large file transfers, reducing the risk of OOM errors.

This is my first PR to this project, so please be indulgent if I missed anything — happy to make adjustments! 🙌

Quentin

@mcxiv mcxiv force-pushed the fix/oom-large-file-upload-download branch from 8e1472a to 0a25a56 Compare June 3, 2025 14:44
- Refactored Upload function to stream file content instead of loading it
all into memory (fixes OOM issue for large files)
- Added log.IsVerbose() to expose verbose state from log package
- Updated Download function to dump HTTP response only when verbose mode
is enabled, to avoid potential OOM on large responses

Changelog: None
Ticket: None
Signed-off-by: Quentin Dufournet <[email protected]>
@mcxiv mcxiv force-pushed the fix/oom-large-file-upload-download branch from 0a25a56 to 10ddf50 Compare June 3, 2025 14:47
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